diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java index 97f89400..0a2dace0 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java @@ -39,4 +39,12 @@ public class BaseConstants { public static final String LABEL_TYPE = "default"; /** 唯一推广码生成长度 */ public static final Integer UNIQUE_CODE_LEN = 6; + /**企业功能标识*/ + public static final String FUNC_COMPANY = "company"; + /**批量操作数据量*/ + public static final Integer BATCH_SIZE = 100; + /**资质临期通知模板*/ + public static final String QUALS_INTERIM_PERIOD = "quals_interim_period"; + /**资质过期通知模板*/ + public static final String QUALS_EXPIRED = "quals_expired"; } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java index b02002c7..3be789cf 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java @@ -7,5 +7,6 @@ public interface CommonErrorCodeConstants extends ErrorCodeConstants { /** 企业管理-员工管理 */ ErrorCode UNIQUE_CODE_CREATE_REPEAT = new ErrorCode(2_002_000_000, "唯一推广码生成失败"); - ErrorCode STAFF_CHANGE_CREATE_REPEAT = new ErrorCode(2_002_000_001, "交出或接收员工已有交接记录"); + ErrorCode STAFF_CHANGE_CREATE_REPEAT = new ErrorCode(2_002_000_001, "该员工工作已交接"); + ErrorCode STAFF_NOT_CHANGE = new ErrorCode(2_002_000_003, "该员工还有工作未交接,不可删除"); } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java index 35db1e49..11da91c6 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java @@ -17,5 +17,8 @@ public class DictBaseConstants { public static final String DICT_SIGN_TYPE = "cus_sign_type"; /**性别*/ public static final String DICT_SYS_USER_SEX = "system_user_sex"; - + /**学历*/ + public static final String COMPANY_STAFF_EDU = "company_staff_edu"; + /**企业资质临期判定时间*/ + public static final String COMPANY_QUALS_EXPIRED = "company_quals_expired"; } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/mapper/CompanyMapper.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/mapper/CompanyMapper.java index 069d95f9..b21b0327 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/mapper/CompanyMapper.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/mapper/CompanyMapper.java @@ -2,12 +2,15 @@ package cn.iocoder.yudao.module.company.mapper; import cn.iocoder.yudao.module.company.entity.Company; import cn.iocoder.yudao.module.company.vo.CompanyReqVO; +import cn.iocoder.yudao.module.company.vo.CompanyRespVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 企业信息表(每个租户的下属企业信息);(dl_company)表数据库访问层 * @author : http://www.chiner.pro @@ -16,4 +19,11 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface CompanyMapper extends BaseMapper{ IPage selectListPage(@Param("map") CompanyReqVO companyReqVO, Page page); + + /** + * 获取所有企业及对应的管理信息 + * @author 小李 + * @date 10:15 2024/8/14 + **/ + List getCompanyAndManager(); } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyQualsService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyQualsService.java index 53b4688f..2d369529 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyQualsService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyQualsService.java @@ -2,8 +2,11 @@ package cn.iocoder.yudao.module.company.service; import cn.iocoder.yudao.module.company.entity.CompanyQuals; import cn.iocoder.yudao.module.company.vo.CompanyQualsRespVO; +import cn.iocoder.yudao.module.company.vo.CompanyRespVO; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 企业资质信息表 * @author : http://www.chiner.pro @@ -34,4 +37,11 @@ public interface CompanyQualsService extends IService { * @param id 企业资质id **/ void removeDataObj(String id); + + /** + * 企业资质临期提醒 + * @author 小李 + * @date 8:54 2024/8/14 + **/ + void noticeCompanyQualsExpired(List companyRespVOS); } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyService.java index a8f281e1..1bd6a9b3 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyService.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/CompanyService.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 企业信息表(每个租户的下属企业信息);(dl_company)表服务接口 * @author : http://www.chiner.pro @@ -44,4 +46,11 @@ public interface CompanyService extends IService { * @param id 企业id **/ void removeDataObj(String id); + + /** + * 获取所有企业及对应的管理信息 + * @author 小李 + * @date 10:15 2024/8/14 + **/ + List getCompanyAndManager(); } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyQualsServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyQualsServiceImpl.java index d9cbd915..7b6ac397 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyQualsServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyQualsServiceImpl.java @@ -1,19 +1,43 @@ package cn.iocoder.yudao.module.company.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.common.BaseConstants; +import cn.iocoder.yudao.common.DictBaseConstants; import cn.iocoder.yudao.module.company.entity.CompanyQuals; import cn.iocoder.yudao.module.company.mapper.CompanyQualsMapper; import cn.iocoder.yudao.module.company.service.CompanyQualsService; import cn.iocoder.yudao.module.company.vo.CompanyQualsRespVO; +import cn.iocoder.yudao.module.company.vo.CompanyRespVO; +import cn.iocoder.yudao.module.system.api.dict.DictDataApi; +import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO; +import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi; +import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service public class CompanyQualsServiceImpl extends ServiceImpl implements CompanyQualsService { @Resource private CompanyQualsMapper companyQualsMapper; + @Resource + private DictDataApi dataApi; + + @Resource + private NotifyMessageSendApi sendApi; + /** * 新增企业资质信息 * @@ -49,4 +73,73 @@ public class CompanyQualsServiceImpl extends ServiceImpl companyRespVOS) { + // 构建分页条件 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + Page page = new Page<>(0, BaseConstants.BATCH_SIZE); + // 获取临期判定时间 + List dictDataList = dataApi.getDictDataList(DictBaseConstants.COMPANY_QUALS_EXPIRED); + Long ruleDay = null; + if (ObjectUtil.isNotEmpty(dictDataList)) { + ruleDay = Long.valueOf(dictDataList.get(0).getValue()); + } + while (ObjectUtil.isNotEmpty(ruleDay)) { + // 查询一页数据 + Page qualsPage = baseMapper.selectPage(page, queryWrapper); + // 分类出临期和过期的数据 + // 这里重新赋值是因为不重新赋值用不了,我也不知道为什么,看到这里的人知道的话可以给我讲讲 + Long finalRuleDay = ruleDay; + qualsPage.getRecords().forEach(item -> { + LocalDate currentDate = LocalDate.now(); + LocalDate endDate = item.getEndDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + + // 计算离当前时间还有多少天 + Long day = ChronoUnit.DAYS.between(currentDate, endDate); + // day 小于0是过期了 小于等于finalRuleDay是临期了 其他就正常的 + if (day < 0) { + sendMessage(item, BaseConstants.QUALS_EXPIRED, companyRespVOS, day); + } else if (day <= finalRuleDay) { + sendMessage(item, BaseConstants.QUALS_INTERIM_PERIOD, companyRespVOS, day); + } + }); + } + } + + /** + * 发送站内信 + * + * @param data 要发送的数据 + * @param templateCode 发送用什么模板 + * @param companyRespVOS 企业和其管理员数据集 + * @param day 资质的到期时间到今天还有多少天 + * @author 小李 + * @date 9:58 2024/8/14 + **/ + private void sendMessage(CompanyQuals data, String templateCode, List companyRespVOS, Long day) { + // 获取记录的企业管理员的id + List collect = companyRespVOS.stream().filter(company -> company.getId() == data.getCorpId()).collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(collect)) { + Long userId = collect.get(0).getUserDTO().getId(); + + // 准备发送参数 + Map templateParams = new HashMap<>(); + // 什么资质 + templateParams.put("qualsName", data.getQualsName()); + // 还有多少天过期或已过期多少天,可能是负数,绝对值一下 + templateParams.put("day", Math.abs(day)); + + // 发送 + sendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO() + .setUserId(userId) + .setTemplateCode(templateCode).setTemplateParams(templateParams)); + } + } } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyServiceImpl.java index 3dbb8c57..2b07c5f4 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/service/impl/CompanyServiceImpl.java @@ -31,6 +31,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_STAFF; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; @@ -85,6 +86,8 @@ public class CompanyServiceImpl extends ServiceImpl impl //上级部门为本租户顶级部门 DeptRespDTO parentDept = deptApi.getDeptByParentId(0L); deptRespDTO.setParentId(parentDept.getId()); + //所属企业ID为新增的企业ID + deptRespDTO.setCorpId(companyRespVO.getId()); Long deptId = deptApi.saveDept(deptRespDTO); /*3.新增企业管理员用户信息并配置角色*/ UserDTO userDTO = new UserDTO(); @@ -93,6 +96,7 @@ public class CompanyServiceImpl extends ServiceImpl impl userDTO.setDeptId(deptId); userDTO.setPassword(companyRespVO.getPassword()); userDTO.setMobile(companyRespVO.getMobilePhone()); + userDTO.setUserType(USER_TYPE_STAFF); Long userId = adminUserApi.createUser(userDTO); Set roleCodes = new HashSet<>(Arrays.asList(companyRespVO.getServiceCodes().split(StrUtil.COMMA))); permissionApi.assignUserRole(userId, roleCodes); @@ -157,4 +161,13 @@ public class CompanyServiceImpl extends ServiceImpl impl } } + /** + * 获取所有企业及对应的管理信息 + * @author 小李 + * @date 10:15 2024/8/14 + **/ + @Override + public List getCompanyAndManager(){ + return baseMapper.getCompanyAndManager(); + } } \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/vo/CompanyRespVO.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/vo/CompanyRespVO.java index a61d3fd0..6651a981 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/vo/CompanyRespVO.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/company/vo/CompanyRespVO.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.company.vo; import cn.iocoder.yudao.module.company.entity.Company; +import cn.iocoder.yudao.module.system.api.user.dto.UserDTO; import lombok.Data; import java.util.List; @@ -20,4 +21,9 @@ public class CompanyRespVO extends Company { * 登录账户密码 */ List serviceCodeArray; + + /** + * 企业对应的管理员 + **/ + private UserDTO userDTO; } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/BasePromotionController.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/BasePromotionController.java new file mode 100644 index 00000000..9e8a621e --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/controller/admin/BasePromotionController.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.custom.controller.admin; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.custom.entity.BasePromotion; +import cn.iocoder.yudao.module.custom.service.BasePromotionService; +import cn.iocoder.yudao.module.custom.vo.BasePromotionReqVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +/** + * 推广记录表 控制层 + * + * @author 小李 + * @date 16:42 2024/8/13 + **/ +@Tag(name = "管理后台 - 推广记录") +@Validated +@RestController +@RequestMapping("/base/promotion") +public class BasePromotionController { + + @Resource + private BasePromotionService promotionService; + + /** + * 分页查询推广记录 + * + * @param pageReqVO 查询条件对象 + * @param pageNo 页码 + * @param pageSize 条数 + * @author 小李 + * @date 16:50 2024/8/13 + **/ + @GetMapping("/page") + @Operation(summary = "分页查询推广记录") + @PreAuthorize("@ss.hasPermission('base:promotion:query')") + public CommonResult> getBasePromotionPage(BasePromotionReqVO pageReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(promotionService.queryListPage(pageReqVO, page)); + } +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/entity/BasePromotion.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/entity/BasePromotion.java new file mode 100644 index 00000000..00f5fad4 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/entity/BasePromotion.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.custom.entity; + +import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 推广记录表实体 + * @author 小李 + * @date 16:31 2024/8/13 +**/ +@TableName(value ="base_promotion") +@Data +@EqualsAndHashCode(callSuper = true) +public class BasePromotion extends TenantBaseDO { + /** 主键标识 */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + + /** 推广用户id(system_users表的id) */ + private Long oldUserId; + + /** 推广用户姓名 */ + private String oldUserName; + + /** 推广渠道 */ + private String promotionChannel; + + /** 被推广用户id(system_users表的id) */ + private Long newUserId; + + /** 被推广用户姓名 */ + private String newUserName; + + /** 被推广用户注册时间 */ + @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date registerTime; + + /** 被推广用户注册时填写的推广码 */ + private String uniqueCode; +} \ No newline at end of file diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/mapper/BasePromotionMapper.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/mapper/BasePromotionMapper.java new file mode 100644 index 00000000..10845602 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/mapper/BasePromotionMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.custom.mapper; + +import cn.iocoder.yudao.module.custom.entity.BasePromotion; +import cn.iocoder.yudao.module.custom.vo.BasePromotionReqVO; +import cn.iocoder.yudao.module.custom.vo.BasePromotionRespVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 推广记录表 Mapper + * @author 小李 + * @date 16:38 2024/8/13 +**/ +@Mapper +public interface BasePromotionMapper extends BaseMapper { + + /** + * 分页查询推广记录 + * + * @param pageReqVO 查询条件对象 + * @author 小李 + * @date 16:50 2024/8/13 + **/ + IPage queryListPage(@Param("map") BasePromotionReqVO pageReqVO, Page page); +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/BasePromotionService.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/BasePromotionService.java new file mode 100644 index 00000000..c34384f2 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/BasePromotionService.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.custom.service; + +import cn.iocoder.yudao.module.custom.entity.BasePromotion; +import cn.iocoder.yudao.module.custom.vo.BasePromotionReqVO; +import cn.iocoder.yudao.module.custom.vo.BasePromotionRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 推广记录表 接口服务 + * @author 小李 + * @date 16:40 2024/8/13 +**/ +public interface BasePromotionService extends IService { + + /** + * 推广记录表 分布查询 + * @author 小李 + * @date 12:24 2024/8/14 + * @param pageReqVO 查询对象 + * @param page 分页规则 + **/ + IPage queryListPage(BasePromotionReqVO pageReqVO, Page page); + + /** + * 新增推广记录 + * @author 小李 + * @date 12:26 2024/8/14 + * @param promotionRespVO 新增对象 + **/ + Boolean createPromotion(BasePromotionRespVO promotionRespVO); +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/BasePromotionServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/BasePromotionServiceImpl.java new file mode 100644 index 00000000..21b96343 --- /dev/null +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/BasePromotionServiceImpl.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.custom.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.module.custom.entity.BasePromotion; +import cn.iocoder.yudao.module.custom.mapper.BasePromotionMapper; +import cn.iocoder.yudao.module.custom.service.BasePromotionService; +import cn.iocoder.yudao.module.custom.vo.BasePromotionReqVO; +import cn.iocoder.yudao.module.custom.vo.BasePromotionRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 推广记录表 接口实现类 + * @author 小李 + * @date 16:41 2024/8/13 +**/ +@Service +public class BasePromotionServiceImpl extends ServiceImpl implements BasePromotionService { + + /** + * 分页查询推广记录 + * + * @param pageReqVO 查询条件对象 + * @author 小李 + * @date 16:50 2024/8/13 + **/ + @Override + public IPage queryListPage(BasePromotionReqVO pageReqVO, Page page) { + return baseMapper.queryListPage(pageReqVO, page); + } + + /** + * 新增推广记录 + * @author 小李 + * @date 12:26 2024/8/14 + * @param promotionRespVO 新增对象 + **/ + @Override + public Boolean createPromotion(BasePromotionRespVO promotionRespVO){ + BasePromotion basePromotion = new BasePromotion(); + BeanUtil.copyProperties(promotionRespVO, basePromotion); + return baseMapper.insert(basePromotion) > 0; + } +} diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerMainServiceImpl.java b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerMainServiceImpl.java index b33f479a..87f8579c 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerMainServiceImpl.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/module/custom/service/impl/CustomerMainServiceImpl.java @@ -43,6 +43,7 @@ import java.util.*; import static cn.iocoder.yudao.common.BaseConstants.*; import static cn.iocoder.yudao.common.DictBaseConstants.DICT_CUS_TYPE; +import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_CUS; /** * 客户管理 Service 实现类 @@ -119,6 +120,7 @@ public class CustomerMainServiceImpl extends ServiceImpl companyAndManager = companyService.getCompanyAndManager(); + // 提醒管理员资质过期 + qualsService.noticeCompanyQualsExpired(companyAndManager); + return null; + } +} diff --git a/dl-module-base/src/main/resources/mapper/company/CompanyMapper.xml b/dl-module-base/src/main/resources/mapper/company/CompanyMapper.xml index aad7d417..3f4d2f97 100644 --- a/dl-module-base/src/main/resources/mapper/company/CompanyMapper.xml +++ b/dl-module-base/src/main/resources/mapper/company/CompanyMapper.xml @@ -6,29 +6,42 @@ SELECT bc.* FROM - base_company bc + base_company bc WHERE deleted = '0' AND (bc.regist_date BETWEEN #{map.registDateArray[0]} AND #{map.registDateArray[1]}) - AND (bc.corp_name LIKE CONCAT('%',#{map.corpName},'%')) + AND (bc.corp_name LIKE CONCAT('%',#{map.corpName},'%')) - AND (bc.org_card LIKE CONCAT('%',#{map.orgCard},'%')) + AND (bc.org_card LIKE CONCAT('%',#{map.orgCard},'%')) - AND (bc.legal_name LIKE CONCAT('%',#{map.legalName},'%')) + AND (bc.legal_name LIKE CONCAT('%',#{map.legalName},'%')) - AND (bc.legal_card LIKE CONCAT('%',#{map.legalCard},'%')) + AND (bc.legal_card LIKE CONCAT('%',#{map.legalCard},'%')) - AND (bc.contact_name LIKE CONCAT('%',#{map.contactName},'%')) + AND (bc.contact_name LIKE CONCAT('%',#{map.contactName},'%')) - AND (bc.mobile_phone LIKE CONCAT('%',#{map.mobilePhone},'%')) + AND (bc.mobile_phone LIKE CONCAT('%',#{map.mobilePhone},'%')) ORDER BY bc.create_time DESC + + + + + + + + \ No newline at end of file diff --git a/dl-module-base/src/main/resources/mapper/custom/BasePromotionMapper.xml b/dl-module-base/src/main/resources/mapper/custom/BasePromotionMapper.xml new file mode 100644 index 00000000..9f04f66c --- /dev/null +++ b/dl-module-base/src/main/resources/mapper/custom/BasePromotionMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/common/ErrorCodeConstants.java b/dl-module-company/src/main/java/cn/iocoder/yudao/common/ErrorCodeConstants.java new file mode 100644 index 00000000..5225878b --- /dev/null +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/common/ErrorCodeConstants.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.common; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +/** + * company 错误码枚举类 + * + * company 系统,使用 1-099-000-000 段 + */ +public interface ErrorCodeConstants { + // ========== 员工管理 1-099-000-000 ========== + + // ========== 资产管理模块 1-099-001-000 ========== + ErrorCode PROPERTY_NO_DEPT = new ErrorCode(1_099_001_000, "当前登录用户没有所属部门"); + ErrorCode PROPERTY_NO_CORP = new ErrorCode(1_099_001_000, "请选择企业"); + + + +} diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealController.java index 01cba850..5163e227 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealController.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.property.entity.PropertyDealDO; +import cn.iocoder.yudao.module.property.entity.PropertyDeal; import cn.iocoder.yudao.module.property.service.PropertyDealService; import cn.iocoder.yudao.module.property.vo.PropertyDealReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealRespVO; @@ -63,7 +63,7 @@ public class PropertyDealController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('company:property-deal:query')") public CommonResult getPropertyDeal(@RequestParam("id") String id) { - PropertyDealDO propertyDeal = propertyDealService.getPropertyDeal(id); + PropertyDeal propertyDeal = propertyDealService.getPropertyDeal(id); return success(BeanUtils.toBean(propertyDeal, PropertyDealRespVO.class)); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealItemController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealItemController.java index e55e75b2..3f706330 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealItemController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyDealItemController.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.property.entity.PropertyDealItemDO; +import cn.iocoder.yudao.module.property.entity.PropertyDealItem; import cn.iocoder.yudao.module.property.service.PropertyDealItemService; import cn.iocoder.yudao.module.property.vo.PropertyDealItemReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealItemRespVO; @@ -63,7 +63,7 @@ public class PropertyDealItemController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('company:property-deal-item:query')") public CommonResult getPropertyDealItem(@RequestParam("id") String id) { - PropertyDealItemDO propertyDealItem = propertyDealItemService.getPropertyDealItem(id); + PropertyDealItem propertyDealItem = propertyDealItemService.getPropertyDealItem(id); return success(BeanUtils.toBean(propertyDealItem, PropertyDealItemRespVO.class)); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyPosController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyPosController.java index 42eb15f2..c61a9d15 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyPosController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/controller/admin/PropertyPosController.java @@ -5,11 +5,14 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.property.entity.PropertyPosDO; +import cn.iocoder.yudao.module.property.entity.PropertyPos; import cn.iocoder.yudao.module.property.service.PropertyPosService; import cn.iocoder.yudao.module.property.vo.PropertyPosReqVO; import cn.iocoder.yudao.module.property.vo.PropertyPosRespVO; +import cn.iocoder.yudao.module.staff.entity.CompanyStaff; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -63,28 +66,18 @@ public class PropertyPosController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('company:property-pos:query')") public CommonResult getPropertyPos(@RequestParam("id") String id) { - PropertyPosDO propertyPos = propertyPosService.getPropertyPos(id); + PropertyPos propertyPos = propertyPosService.getPropertyPos(id); return success(BeanUtils.toBean(propertyPos, PropertyPosRespVO.class)); } @GetMapping("/page") @Operation(summary = "获得企业管理-资产存放位置分页") @PreAuthorize("@ss.hasPermission('company:property-pos:query')") - public CommonResult> getPropertyPosPage(PropertyPosReqVO pageReqVO) { - IPage pageResult = propertyPosService.getPropertyPosPage(pageReqVO); - return success(pageResult); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出企业管理-资产存放位置 Excel") - @PreAuthorize("@ss.hasPermission('company:property-pos:export')") - @ApiAccessLog(operateType = EXPORT) - public void exportPropertyPosExcel(PropertyPosReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = propertyPosService.getPropertyPosPage(pageReqVO).getRecords(); - // 导出 Excel - ExcelUtils.write(response, "企业管理-资产存放位置.xls", "数据", PropertyPosRespVO.class,list); + public CommonResult> getPropertyPosPage(PropertyPosReqVO pageReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + Page page = new Page<>(pageNo, pageSize); + return success(propertyPosService.getPropertyPosPage( page,pageReqVO)); } } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealDO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDeal.java similarity index 96% rename from dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealDO.java rename to dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDeal.java index 171e6742..240da783 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealDO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDeal.java @@ -22,7 +22,7 @@ import java.time.LocalDate; @Builder @NoArgsConstructor @AllArgsConstructor -public class PropertyDealDO extends BaseDO { +public class PropertyDeal extends BaseDO { /** * 主键标识 diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItemDO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItem.java similarity index 97% rename from dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItemDO.java rename to dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItem.java index 1d5419da..c70fae85 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItemDO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyDealItem.java @@ -20,7 +20,7 @@ import lombok.*; @Builder @NoArgsConstructor @AllArgsConstructor -public class PropertyDealItemDO extends BaseDO { +public class PropertyDealItem extends BaseDO { /** * 主键标识 diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPosDO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPos.java similarity index 90% rename from dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPosDO.java rename to dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPos.java index f387edd8..026fc0f3 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPosDO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/entity/PropertyPos.java @@ -22,7 +22,7 @@ import java.math.BigDecimal; @Builder @NoArgsConstructor @AllArgsConstructor -public class PropertyPosDO extends TenantBaseDO { +public class PropertyPos extends TenantBaseDO { /** * 主键标识 @@ -50,9 +50,7 @@ public class PropertyPosDO extends TenantBaseDO { */ private BigDecimal area; /** - * 存放类型 - * - * 枚举 {@link TODO company_deposit_type 对应的类} + * 存放类型-数据字典 company_deposit_type */ private String depositType; diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealItemMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealItemMapper.java index 99c42e7e..423bdf78 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealItemMapper.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealItemMapper.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.property.mapper; -import cn.iocoder.yudao.module.property.entity.PropertyDealItemDO; +import cn.iocoder.yudao.module.property.entity.PropertyDealItem; import cn.iocoder.yudao.module.property.vo.PropertyDealItemReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealItemRespVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; * @author 后台管理员 */ @Mapper -public interface PropertyDealItemMapper extends BaseMapper { +public interface PropertyDealItemMapper extends BaseMapper { default IPage selectPage(PropertyDealItemReqVO reqVO) { return null; diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealMapper.java index 47517b03..fff5f4dc 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealMapper.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyDealMapper.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.property.mapper; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.property.entity.PropertyDealDO; +import cn.iocoder.yudao.module.property.entity.PropertyDeal; import cn.iocoder.yudao.module.property.vo.PropertyDealReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealRespVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; * @author 后台管理员 */ @Mapper -public interface PropertyDealMapper extends BaseMapperX { +public interface PropertyDealMapper extends BaseMapperX { default IPage selectPage(PropertyDealReqVO reqVO) { return null; diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyPosMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyPosMapper.java index 827ffddc..c4ae7003 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyPosMapper.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/mapper/PropertyPosMapper.java @@ -1,11 +1,16 @@ package cn.iocoder.yudao.module.property.mapper; -import cn.iocoder.yudao.module.property.entity.PropertyPosDO; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.property.entity.PropertyPos; import cn.iocoder.yudao.module.property.vo.PropertyPosReqVO; import cn.iocoder.yudao.module.property.vo.PropertyPosRespVO; +import cn.iocoder.yudao.module.staff.entity.CompanyStaff; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 企业管理-资产存放位置 Mapper @@ -13,10 +18,16 @@ import org.apache.ibatis.annotations.Mapper; * @author vinjor-m */ @Mapper -public interface PropertyPosMapper extends BaseMapper { +public interface PropertyPosMapper extends BaseMapper { - default IPage selectPage(PropertyPosReqVO reqVO) { - return null; - } + /** + * 分页查询 + * @author vinjor-M + * @date 11:43 2024/8/14 + * @param propertyPosReqVO 查询条件 + * @param page 分页对象 + * @return com.baomidou.mybatisplus.core.metadata.IPage + **/ + IPage selectListPage(Page page,@Param("map") PropertyPosReqVO propertyPosReqVO); } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealItemService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealItemService.java index 1294266d..8f15a977 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealItemService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealItemService.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.property.service; -import cn.iocoder.yudao.module.property.entity.PropertyDealItemDO; +import cn.iocoder.yudao.module.property.entity.PropertyDealItem; import cn.iocoder.yudao.module.property.vo.PropertyDealItemReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealItemRespVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * * @author 后台管理员 */ -public interface PropertyDealItemService extends IService { +public interface PropertyDealItemService extends IService { /** * 创建企业管理-资产处置子 @@ -42,7 +42,7 @@ public interface PropertyDealItemService extends IService { * @param id 编号 * @return 企业管理-资产处置子 */ - PropertyDealItemDO getPropertyDealItem(String id); + PropertyDealItem getPropertyDealItem(String id); /** * 获得企业管理-资产处置子分页 diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealService.java index c6bac6a6..834efe00 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyDealService.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.property.service; -import cn.iocoder.yudao.module.property.entity.PropertyDealDO; +import cn.iocoder.yudao.module.property.entity.PropertyDeal; import cn.iocoder.yudao.module.property.vo.PropertyDealReqVO; import cn.iocoder.yudao.module.property.vo.PropertyDealRespVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * * @author 后台管理员 */ -public interface PropertyDealService extends IService { +public interface PropertyDealService extends IService { /** * 创建企业管理-资产处置单/变动单 @@ -41,7 +41,7 @@ public interface PropertyDealService extends IService { * @param id 编号 * @return 企业管理-资产处置单/变动单 */ - PropertyDealDO getPropertyDeal(String id); + PropertyDeal getPropertyDeal(String id); /** * 获得企业管理-资产处置单/变动单分页 diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyPosService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyPosService.java index 75fffecc..88c617d3 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyPosService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/PropertyPosService.java @@ -1,9 +1,11 @@ package cn.iocoder.yudao.module.property.service; -import cn.iocoder.yudao.module.property.entity.PropertyPosDO; +import cn.iocoder.yudao.module.property.entity.PropertyPos; import cn.iocoder.yudao.module.property.vo.PropertyPosReqVO; import cn.iocoder.yudao.module.property.vo.PropertyPosRespVO; +import cn.iocoder.yudao.module.staff.entity.CompanyStaff; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -11,7 +13,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * * @author vinjor-m */ -public interface PropertyPosService extends IService { +public interface PropertyPosService extends IService { /** * 创建企业管理-资产存放位置 @@ -41,7 +43,7 @@ public interface PropertyPosService extends IService { * @param id 编号 * @return 企业管理-资产存放位置 */ - PropertyPosDO getPropertyPos(String id); + PropertyPos getPropertyPos(String id); /** * 获得企业管理-资产存放位置分页 @@ -49,6 +51,6 @@ public interface PropertyPosService extends IService { * @param pageReqVO 分页查询 * @return 企业管理-资产存放位置分页 */ - IPage getPropertyPosPage(PropertyPosReqVO pageReqVO); + IPage getPropertyPosPage(Page page,PropertyPosReqVO pageReqVO); } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/impl/PropertyDealItemServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/impl/PropertyDealItemServiceImpl.java index 14edc399..7d2216fa 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/impl/PropertyDealItemServiceImpl.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/service/impl/PropertyDealItemServiceImpl.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.property.service.impl; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.property.entity.PropertyDealItemDO; +import cn.iocoder.yudao.module.property.entity.PropertyDealItem; import cn.iocoder.yudao.module.property.mapper.PropertyDealItemMapper; import cn.iocoder.yudao.module.property.service.PropertyDealItemService; import cn.iocoder.yudao.module.property.vo.PropertyDealItemReqVO; @@ -18,12 +18,12 @@ import org.springframework.validation.annotation.Validated; */ @Service @Validated -public class PropertyDealItemServiceImpl extends ServiceImpl implements PropertyDealItemService { +public class PropertyDealItemServiceImpl extends ServiceImpl implements PropertyDealItemService { @Override public String createPropertyDealItem(PropertyDealItemReqVO createReqVO) { // 插入 - PropertyDealItemDO propertyDealItem = BeanUtils.toBean(createReqVO, PropertyDealItemDO.class); + PropertyDealItem propertyDealItem = BeanUtils.toBean(createReqVO, PropertyDealItem.class); baseMapper.insert(propertyDealItem); // 返回 return propertyDealItem.getId(); @@ -32,7 +32,7 @@ public class PropertyDealItemServiceImpl extends ServiceImpl implements PropertyDealService { +public class PropertyDealServiceImpl extends ServiceImpl implements PropertyDealService { @Override public String createPropertyDeal(PropertyDealReqVO createReqVO) { // 插入 - PropertyDealDO propertyDeal = BeanUtils.toBean(createReqVO, PropertyDealDO.class); + PropertyDeal propertyDeal = BeanUtils.toBean(createReqVO, PropertyDeal.class); baseMapper.insert(propertyDeal); // 返回 return propertyDeal.getId(); @@ -33,7 +33,7 @@ public class PropertyDealServiceImpl extends ServiceImpl implements PropertyPosService { +public class PropertyPosServiceImpl extends ServiceImpl implements PropertyPosService { + @Resource + private DeptApi deptApi; + @Resource + private PropertyPosMapper propertyPosMapper; @Override public String createPropertyPos(PropertyPosReqVO createReqVO) { - // 插入 - PropertyPosDO propertyPos = BeanUtils.toBean(createReqVO, PropertyPosDO.class); + /* 1.设置当前登录用户所属部门Id、企业Id */ + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + if(StringUtils.isEmpty(loginUser.getInfo().get("deptId"))){ + //当前登录用户没有部门,不能新增 + throw exception(PROPERTY_NO_DEPT); + } + Long deptId = Long.valueOf(loginUser.getInfo().get("deptId")); + createReqVO.setDeptId(deptId); + DeptRespDTO deptRespDTO = deptApi.getDept(deptId); + if(StringUtils.isEmpty(deptRespDTO.getCorpId()) && StringUtils.isEmpty(createReqVO.getCorpId())){ + //当前登录用户非企业人员,且没有手动选择所属企业的话,不能添加 + throw exception(PROPERTY_NO_CORP); + } + if(StringUtils.isEmpty(createReqVO.getCorpId())){ + createReqVO.setCorpId(deptRespDTO.getCorpId()); + } + /* 2.插入数据并反回Id*/ + PropertyPos propertyPos = BeanUtils.toBean(createReqVO, PropertyPos.class); baseMapper.insert(propertyPos); // 返回 return propertyPos.getId(); @@ -32,7 +64,7 @@ public class PropertyPosServiceImpl extends ServiceImpl getPropertyPosPage(PropertyPosReqVO pageReqVO) { - return baseMapper.selectPage(pageReqVO); + public IPage getPropertyPosPage(Page page, PropertyPosReqVO pageReqVO) { + return propertyPosMapper.selectListPage(page,pageReqVO); } } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealItemRespVO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealItemRespVO.java index 98a003bd..e07d89f7 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealItemRespVO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealItemRespVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.property.vo; -import cn.iocoder.yudao.module.property.entity.PropertyDealItemDO; +import cn.iocoder.yudao.module.property.entity.PropertyDealItem; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -11,7 +11,7 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 企业管理-资产处置子 Response VO") @Data @ExcelIgnoreUnannotated -public class PropertyDealItemRespVO extends PropertyDealItemDO { +public class PropertyDealItemRespVO extends PropertyDealItem { @Schema(description = "创建时间") @ExcelProperty("创建时间") diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealRespVO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealRespVO.java index b2f21783..b0c31349 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealRespVO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyDealRespVO.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.module.property.vo; -import cn.iocoder.yudao.module.property.entity.PropertyDealDO; +import cn.iocoder.yudao.module.property.entity.PropertyDeal; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -11,7 +11,7 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 企业管理-资产处置单/变动单 Response VO") @Data @ExcelIgnoreUnannotated -public class PropertyDealRespVO extends PropertyDealDO { +public class PropertyDealRespVO extends PropertyDeal { @Schema(description = "创建时间") @ExcelProperty("创建时间") diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosReqVO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosReqVO.java index 89c9a724..b4ad3578 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosReqVO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosReqVO.java @@ -1,46 +1,17 @@ package cn.iocoder.yudao.module.property.vo; -import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.property.entity.PropertyPos; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; @Schema(description = "管理后台 - 企业管理-资产存放位置分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public class PropertyPosReqVO extends PageParam { +public class PropertyPosReqVO extends PropertyPos { - @Schema(description = "主键标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "18095") - private String id; - - @Schema(description = "企业id(base_company表中的id)", example = "5018") - private String corpId; - - @Schema(description = "部门id(system_dept表中的id,用来做数据权限控制)", example = "25943") - private Long deptId; - - @Schema(description = "存放地名称", example = "王五") - private String posName; - - @Schema(description = "存放地地址") - private String address; - - @Schema(description = "面积") - private BigDecimal area; - - @Schema(description = "存放类型", example = "2") - private String depositType; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) - private LocalDateTime createTime; } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosRespVO.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosRespVO.java index e85930c9..5dec00a8 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosRespVO.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/property/vo/PropertyPosRespVO.java @@ -1,20 +1,17 @@ package cn.iocoder.yudao.module.property.vo; -import cn.iocoder.yudao.module.property.entity.PropertyPosDO; +import cn.iocoder.yudao.module.property.entity.PropertyPos; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.time.LocalDateTime; - @Schema(description = "管理后台 - 企业管理-资产存放位置 Response VO") @Data @ExcelIgnoreUnannotated -public class PropertyPosRespVO extends PropertyPosDO { - - @Schema(description = "创建时间") - @ExcelProperty("创建时间") - private LocalDateTime createTime; +public class PropertyPosRespVO extends PropertyPos { + /** + * 企业名称 + */ + String corpName; } \ No newline at end of file diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java index 8f427a82..0b032784 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.staff.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.staff.entity.CompanyStaff; +import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; -import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; @@ -12,7 +14,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -30,6 +31,12 @@ public class CompanyStaffChangeController { @Resource private CompanyStaffChangeService staffChangeService; + /** + * 创建交接信息 + * @author 小李 + * @date 14:30 2024/8/12 + * @param staffChangeRespVO 交接双方 + **/ @PostMapping("/create") @Operation(summary = "创建企业管理-员工交接表信息") @PreAuthorize("@ss.hasPermission('company:staff:change')") @@ -39,15 +46,19 @@ public class CompanyStaffChangeController { } /** - * 查询交接双方信息 * @author 小李 - * @date 18:26 2024/8/8 - * @param id 接收方员工ID - **/ - @GetMapping("/changeItem") + * @date 18:56 2024/8/12 + * @param staffChangeReqVO 查询条件对象 + * @param pageNo 页码 + * @param pageSize 条数 + **/ + @GetMapping("/page") @Operation(summary = "查询企业管理-员工交接表信息及交接双方") - @PreAuthorize("@ss.hasPermission('company:staff:query')") - public CommonResult getChangeStaff(@RequestParam("id") String id){ - return success(staffChangeService.getChangeStaff(id)); + @PreAuthorize("@ss.hasPermission('company:staffChange:query')") + public CommonResult> getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(staffChangeService.getStaffChangePage(staffChangeReqVO, page)); } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java index fe3ced6a..3c181ceb 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java @@ -2,14 +2,12 @@ package cn.iocoder.yudao.module.staff.controller.admin; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.label.entity.Label; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; @@ -31,9 +29,10 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * 企业管理-员工信息表 控制层 + * * @author 小李 * @date 17:14 2024/8/6 -**/ + **/ @RestController @RequestMapping("/company/staff") @Tag(name = "管理后台 - 企业管理 - 员工管理") @@ -45,28 +44,30 @@ public class CompanyStaffController { /** * 分页查询 + * + * @param pageReqVO 查询条件对象 + * @param pageNo 页码 + * @param pageSize 条数 * @author 小李 * @date 17:19 2024/8/6 - * @param pageReqVO 查询条件对象 - * @param pageNo 页码 - * @param pageSize 条数 - **/ + **/ @GetMapping("/page") @Operation(summary = "获得企业管理-员工信息表信息分页") @PreAuthorize("@ss.hasPermission('company:staff:query')") public CommonResult> getCompanyStaffPage(CompanyStaffReqVO pageReqVO, - @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNo, pageSize); return success(staffService.queryListPage(pageReqVO, page)); } /** * 新增员工 + * + * @param staffRespVO 员工对象 * @author 小李 * @date 17:20 2024/8/6 - * @param staffRespVO 员工对象 - **/ + **/ @PostMapping("/create") @Operation(summary = "创建企业管理-员工信息表信息") @PreAuthorize("@ss.hasPermission('company:staff:create')") @@ -77,10 +78,11 @@ public class CompanyStaffController { /** * 修改员工 + * + * @param staffRespVO 员工对象 * @author 小李 * @date 17:24 2024/8/6 - * @param staffRespVO 员工对象 - **/ + **/ @PutMapping("/update") @Operation(summary = "更新企业管理-员工信息表信息") @PreAuthorize("@ss.hasPermission('company:staff:update')") @@ -91,10 +93,11 @@ public class CompanyStaffController { /** * 删除员工 + * + * @param id 员工id * @author 小李 * @date 17:28 2024/8/6 - * @param id 员工id - **/ + **/ @DeleteMapping("/delete") @Operation(summary = "删除企业管理-员工信息表信息") @Parameter(name = "id", description = "编号", required = true) @@ -106,10 +109,11 @@ public class CompanyStaffController { /** * 查询员工 + * + * @param id * @author 小李 * @date 17:59 2024/8/6 - * @param id - **/ + **/ @GetMapping("/get") @Operation(summary = "获得企业管理-员工信息表信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -121,44 +125,79 @@ public class CompanyStaffController { /** * 导出员工信息表 + * + * @param pageReqVO 查询条件--暂时导出所有 + * @param response 响应体 * @author 小李 * @date 18:01 2024/8/6 - * @param pageReqVO 查询条件--暂时导出所有 - * @param response 响应体 - **/ + **/ @GetMapping("/export-excel") @Operation(summary = "导出企业管理-员工信息表 Excel") @PreAuthorize("@ss.hasPermission('company:staff:export')") @ApiAccessLog(operateType = EXPORT) public void exportCompanyStaffExcel(CompanyStaffReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { List list = staffService.list(); // 导出 Excel Map columnWidthMap = new HashMap<>(); // 第一列的索引是0,宽度设置为20个字符宽 columnWidthMap.put(9, 20); columnWidthMap.put(10, 20); - ExcelUtils.write(response, "企业信息表.xls", "数据", CompanyStaff.class, list,columnWidthMap); + ExcelUtils.write(response, "企业信息表.xls", "数据", CompanyStaff.class, list, columnWidthMap); } /** * 获取当前功能的标签 + * * @author 小李 * @date 14:59 2024/8/7 - **/ + **/ @GetMapping("/labels") - public CommonResult> getLabels(){ + @Operation(summary = "获取当前功能的标签") + @PreAuthorize("@ss.hasPermission('company:staff:query')") + public CommonResult> getLabels() { return success(staffService.getLabels()); } /** * 获取当前登录用户部门下所有员工信息 + * * @author 小李 * @date 15:54 2024/8/8 - **/ + **/ @GetMapping("/list") - public CommonResult> getStaffList(){ + @Operation(summary = "获取当前登录用户部门下所有员工信息") + @PreAuthorize("@ss.hasPermission('company:staff:query')") + public CommonResult> getStaffList() { return success(staffService.getStaffList()); } + /** + * 验证工号是否重复 + * + * @param workNo 输入的工号 + * @author 小李 + * @date 14:03 2024/8/9 + **/ + @GetMapping("/checkWorkNo") + @Operation(summary = "验证工号是否重复") + @PreAuthorize("@ss.hasPermission('company:staff:query')") + public CommonResult checkWorkNo(@RequestParam("workNo") String workNo) { + return success(staffService.checkWorkNo(workNo)); + } + + /** + * 重置员工登录密码 + * + * @param staffRespVO 员工对象 + * @author 小李 + * @date 16:21 2024/8/9 + **/ + @PostMapping("/resetPassword") + @Operation(summary = "重置员工登录密码") + @PreAuthorize("@ss.hasPermission('company:staff:resetPassword')") + public CommonResult resetPassword(@RequestBody CompanyStaffRespVO staffRespVO) { + staffService.resetPassword(staffRespVO); + return CommonResult.ok(); + } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java index dd33650a..add42b79 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.staff.entity; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -15,6 +17,8 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.util.Date; +import static cn.iocoder.yudao.common.DictBaseConstants.*; + /** * 企业管理-员工信息实体 * @author 小李 @@ -51,7 +55,8 @@ public class CompanyStaff extends TenantBaseDO { private String tel; /** 性别 */ - @ExcelProperty("性别") + @ExcelProperty(value = "性别", converter = DictConvert.class) + @DictFormat(DICT_SYS_USER_SEX) private String sex; /** 家庭住址 */ @@ -65,7 +70,7 @@ public class CompanyStaff extends TenantBaseDO { private Date workDate; /** 工龄 */ - @ExcelProperty("工龄") + @ExcelProperty("工龄(年)") private BigDecimal workYear; /** 入职日期 */ @@ -75,11 +80,12 @@ public class CompanyStaff extends TenantBaseDO { private Date joinedDate; /** 司龄 */ - @ExcelProperty("司龄") + @ExcelProperty("司龄(年)") private BigDecimal joinedYear; /** 学历 */ - @ExcelProperty("学历") + @ExcelProperty(value = "学历", converter = DictConvert.class) + @DictFormat(COMPANY_STAFF_EDU) private String education; /** 个人简介 */ diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java index 3b46ed3a..230dd4ce 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java @@ -32,8 +32,8 @@ public class CompanyStaffChange extends TenantBaseDO { private Long newUserId; /** 交接时间 */ - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") private Date changeTime; /** 附件urls(infra_file表中的url,多个英文逗号拼接) */ diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java index ae617b06..89293260 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java @@ -1,8 +1,13 @@ package cn.iocoder.yudao.module.staff.mapper; import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 企业管理-员工交接记录 @@ -11,4 +16,7 @@ import org.apache.ibatis.annotations.Mapper; **/ @Mapper public interface CompanyStaffChangeMapper extends BaseMapper { + + IPage getStaffChangePage(@Param("map") CompanyStaffChangeReqVO staffChangeReqVO, Page page); + } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java index 1e7cd9e6..2494a352 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.staff.service; import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; - /** * 企业管理-员工交接记录 接口 * @author 小李 @@ -22,10 +23,17 @@ public interface CompanyStaffChangeService extends IService void createChangeStaff(CompanyStaffChangeRespVO staffChangeRespVO); /** - * 查询交接双方信息 * @author 小李 - * @date 18:26 2024/8/8 - * @param id 接收方员工ID + * @date 19:00 2024/8/12 + * @param staffChangeReqVO 分页对象 + **/ + IPage getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, Page page); + + /** + * 判断交出方工作是否已交接 + * @author 小李 + * @date 18:02 2024/8/12 + * @param userId 交出方ID **/ - CompanyStaffChangeRespVO getChangeStaff(String id); + Boolean checkChangeStatus(Long userId); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java index 1af50637..3c188bb6 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java @@ -71,4 +71,27 @@ public interface CompanyStaffService extends IService { * @date 15:54 2024/8/8 **/ List getStaffList(); + + /** + * 重置员工登录密码 + * @author 小李 + * @date 16:21 2024/8/9 + * @param staffRespVO 员工对象 + **/ + void resetPassword(CompanyStaffRespVO staffRespVO); + + /** + * 验证工号是否重复 + * @author 小李 + * @date 14:03 2024/8/9 + * @param workNo 输入的工号 + **/ + Boolean checkWorkNo(String workNo); + + /** + * 更新员工的工龄和司龄 + * @author 小李 + * @date 11:41 2024/8/13 + **/ + void updateStaffWorkAndJoinedYears(); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java index 041a45e5..f488c7c3 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java @@ -11,11 +11,10 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface UniqueCodeService extends IService { /** - * 新增唯一推广码 + * 生成唯一推广码 * @author 小李 * @date 9:59 2024/8/8 - * @param uniqueCode - * - * @return*/ - int insertUniqueCode(String uniqueCode); + * @return 可使用推广码 + **/ + String createUniqueCode(); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java index f9b82bfc..0c59c2df 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.staff.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.common.CommonErrorCodeConstants; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; @@ -8,13 +7,20 @@ import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; import cn.iocoder.yudao.module.staff.mapper.CompanyStaffChangeMapper; import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -36,14 +42,12 @@ public class CompanyStaffChangeServiceImpl extends ServiceImpl().and(itme -> { - itme.eq("old_user_id", staffChangeRespVO.getOldUserId()) - .eq("new_user_id", staffChangeRespVO.getNewUserId()); - }).or().eq("old_user_id", staffChangeRespVO.getOldUserId()) - .or().eq("new_user_id", staffChangeRespVO.getNewUserId())); - if (ObjectUtil.isNotEmpty(staffChange)) { + // 确定交出方目前有没有工作可以交接 + Boolean flag = checkChangeStatus(staffChangeRespVO.getOldUserId()); + if (flag) { throw exception(CommonErrorCodeConstants.STAFF_CHANGE_CREATE_REPEAT); } baseMapper.insert(staffChangeRespVO); @@ -51,33 +55,67 @@ public class CompanyStaffChangeServiceImpl extends ServiceImpl().eq("id", id)); - // 2 根据获取的员工信息中的userId获取交接记录 - CompanyStaffChange staffChange = baseMapper.selectOne(new QueryWrapper() - .eq("new_user_id", staff.getUserId()) - .or() - .eq("old_user_id", staff.getUserId()) - ); - if (ObjectUtil.isNotEmpty(staffChange)) { - result = new CompanyStaffChangeRespVO(); - BeanUtil.copyProperties(staffChange, result); - // 3 根据交接记录中新老员工的userId查新老员工信息 - CompanyStaff oldStaff = staffService.getOne(new QueryWrapper().eq("user_id", staffChange.getOldUserId())); - CompanyStaff newStaff = staffService.getOne(new QueryWrapper().eq("user_id", staffChange.getNewUserId())); - result.setNewStaff(newStaff); - result.setOldStaff(oldStaff); + public IPage getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, Page page) { + // 如果用户选择了按交接类型搜索(交出、接收),那一定要保证员工姓名、工号、电话有一个不为空才行,不然没有参照 + if (ObjectUtil.isNotEmpty(staffChangeReqVO.getChangeType()) && + (ObjectUtil.isNotEmpty(staffChangeReqVO.getName()) || + ObjectUtil.isNotEmpty(staffChangeReqVO.getWorkNo()) || + ObjectUtil.isNotEmpty(staffChangeReqVO.getTel()) + ) + ) { + // 根据不为空的那个条件去查员工的userId + List list = null; + if (ObjectUtil.isNotEmpty(staffChangeReqVO.getName())) { + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getName, staffChangeReqVO.getName()) + ); + } else if (ObjectUtil.isNotEmpty(staffChangeReqVO.getWorkNo())) { + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getWorkNo, staffChangeReqVO.getWorkNo()) + ); + } else if (ObjectUtil.isNotEmpty(staffChangeReqVO.getTel())) { + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getTel, staffChangeReqVO.getTel()) + ); + } + // 如果查到了结果才处理,没查到不管 + if (ObjectUtil.isNotEmpty(list)) { + List userIds = list.stream().map(item -> item.getUserId()).collect(Collectors.toList()); + if (staffChangeReqVO.getChangeType().equals("0")) { + staffChangeReqVO.setOldUserIds(userIds); + } else { + staffChangeReqVO.setNewUserIds(userIds); + } + } } - return result; + return baseMapper.getStaffChangePage(staffChangeReqVO, page); + } + + /** + * 判断交出方工作是否已交接 + * + * @param userId 交出方ID + * @author 小李 + * @date 18:02 2024/8/12 + **/ + @Override + public Boolean checkChangeStatus(Long userId) { + // 获取该员工的最新一条记录 + CompanyStaffChange staffChange = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(CompanyStaffChange::getOldUserId, userId) + .or() + .eq(CompanyStaffChange::getNewUserId, userId) + .orderByDesc(CompanyStaffChange::getCreateTime) + .last("limit 1") + ); + // 如果为空或者最后一次相关记录他是交出方,那就返回true,代表他交接了工作没有工作可以交 + return ObjectUtil.isNotEmpty(staffChange) && staffChange.getOldUserId().equals(userId); } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java index 3770dedd..6eb601cf 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java @@ -2,28 +2,24 @@ package cn.iocoder.yudao.module.staff.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.common.BaseConstants; import cn.iocoder.yudao.common.CommonErrorCodeConstants; -import cn.iocoder.yudao.framework.common.util.io.FileUtils; import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule; -import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRule; -import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; -import cn.iocoder.yudao.module.company.entity.Company; import cn.iocoder.yudao.module.company.service.CompanyService; -import cn.iocoder.yudao.module.infra.api.file.FileApi; -import cn.iocoder.yudao.module.staff.entity.UniqueCode; -import cn.iocoder.yudao.module.staff.service.UniqueCodeService; import cn.iocoder.yudao.module.label.entity.BusiLabel; import cn.iocoder.yudao.module.label.entity.Label; import cn.iocoder.yudao.module.label.service.BusiLabelService; import cn.iocoder.yudao.module.label.service.LabelService; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; import cn.iocoder.yudao.module.staff.mapper.CompanyStaffMapper; +import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; +import cn.iocoder.yudao.module.staff.service.UniqueCodeService; import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.UserDTO; @@ -36,10 +32,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.Period; +import java.time.ZoneId; import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; +import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_STAFF; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -60,16 +60,17 @@ public class CompanyStaffServiceImpl extends ServiceImpl labels = getLabelsByLabelName(staffRespVO.getLabelsArray()); @@ -127,31 +129,20 @@ public class CompanyStaffServiceImpl extends ServiceImpl().eq("mobile_phone", user.getMobile())); - staffRespVO.setCorpId(company.getId()); + DeptRespDTO loginDept = getLoginDept(loginUser.getDeptId()); + staffRespVO.setCorpId(loginDept.getCorpId()); // 2 生成唯一推广码 - int count = 0; - // 3 生成时判断是否重复,重复就重新生成,最多生成6次 - while (true) { - // 重复生成和长度一样的次数还是重复,就抛异常 - if (count == BaseConstants.UNIQUE_CODE_LEN) { - throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT); - } - String code = RandomUtil.randomStringUpper(BaseConstants.UNIQUE_CODE_LEN); - // 直接新增唯一推码 新增成功就是可以用,反之就是重复 - int flag = uniqueCodeService.insertUniqueCode(code); - if (flag != 0) { - staffRespVO.setUniqueCode(code); - break; - } - count++; + String uniqueCode = uniqueCodeService.createUniqueCode(); + if (!ObjectUtil.isNotEmpty(uniqueCode)) { + throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT); } + staffRespVO.setUniqueCode(uniqueCode); // 3 保存员工信息到数据库 this.save(staffRespVO); - /** 插入标签到业务标签表 */ + /* 插入标签到业务标签表 */ if (ObjectUtil.isNotEmpty(staffRespVO.getLabelsArray())) { // 1 获取所有标签信息 List