配件入库超多少天(可以自己设置)没用的话需要做一个临期提醒

This commit is contained in:
xiaofajia 2024-11-30 15:39:00 +08:00
parent 39ba91f3ba
commit 84e57f0337
9 changed files with 229 additions and 0 deletions

View File

@ -16,4 +16,7 @@ public interface RepairDictConstants {
/** 配件属性 */ /** 配件属性 */
String WARES_ATTRIBUTE = "repair_attribute"; String WARES_ATTRIBUTE = "repair_attribute";
/** 配件相关提醒配置 */
String REPAIR_WARES_NOTICE = "repair_wares_notice";
} }

View File

@ -0,0 +1,32 @@
package cn.iocoder.yudao.job;
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
import cn.iocoder.yudao.module.project.service.RepairWaresService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 配件入库超多少天可以自己设置没用的话需要做一个临期提醒
*
* @author 小李
* @date 14:40 2024/11/30
**/
@Component
@TenantJob
@Slf4j
public class WaresTimeOverJob implements JobHandler {
@Resource
@Lazy
private RepairWaresService waresService;
@Override
public String execute(String param) throws Exception {
waresService.timeOver();
return null;
}
}

View File

@ -86,4 +86,12 @@ public interface RepairWaresService extends IService<RepairWares> {
* @date 16:20 2024/11/29 * @date 16:20 2024/11/29
**/ **/
ImportExcelRespVO importData(List<RepairWaresExcelVO> list, Boolean updateSupport); ImportExcelRespVO importData(List<RepairWaresExcelVO> list, Boolean updateSupport);
/**
* 配件入库超多少天可以自己设置没用的话需要做一个临期提醒
*
* @author 小李
* @date 14:42 2024/11/30
**/
void timeOver();
} }

View File

@ -2,7 +2,11 @@ package cn.iocoder.yudao.module.project.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.RepairDictConstants;
import cn.iocoder.yudao.common.RepairRoleEnum;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
import cn.iocoder.yudao.module.base.service.RepairWorkerService;
import cn.iocoder.yudao.module.conf.entity.BaseType; import cn.iocoder.yudao.module.conf.entity.BaseType;
import cn.iocoder.yudao.module.conf.entity.BaseWarehouse; import cn.iocoder.yudao.module.conf.entity.BaseWarehouse;
import cn.iocoder.yudao.module.conf.service.BaseTypeService; import cn.iocoder.yudao.module.conf.service.BaseTypeService;
@ -11,6 +15,12 @@ import cn.iocoder.yudao.module.project.entity.RepairWares;
import cn.iocoder.yudao.module.project.mapper.RepairWaresMapper; import cn.iocoder.yudao.module.project.mapper.RepairWaresMapper;
import cn.iocoder.yudao.module.project.service.RepairWaresService; import cn.iocoder.yudao.module.project.service.RepairWaresService;
import cn.iocoder.yudao.module.project.vo.*; import cn.iocoder.yudao.module.project.vo.*;
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.permission.RoleApi;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
import cn.iocoder.yudao.module.warnMessage.entity.WarnMessageByRepair;
import cn.iocoder.yudao.module.warnMessage.service.WarnMessageByRepairService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -22,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -47,6 +58,22 @@ public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, Repai
@Lazy @Lazy
private BaseTypeService typeService; private BaseTypeService typeService;
@Resource
@Lazy
private DictDataApi dictDataApi;
@Resource
@Lazy
private RoleApi roleApi;
@Resource
@Lazy
private RepairWorkerService workerService;
@Resource
@Lazy
private WarnMessageByRepairService warnMessageByRepairService;
/** /**
* 保存配件库 * 保存配件库
@ -211,4 +238,49 @@ public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, Repai
return result; return result;
} }
/**
* 配件入库超多少天可以自己设置没用的话需要做一个临期提醒
*
* @author 小李
* @date 14:42 2024/11/30
**/
@Override
public void timeOver() {
// 取配置
List<DictDataRespDTO> dataList = dictDataApi.getDictDataList(RepairDictConstants.REPAIR_WARES_NOTICE);
// 取仓管维修管理员
List<UserDTO> warehouse = roleApi.selectUserListByRoleCode(TenantContextHolder.getRequiredTenantId(), RepairRoleEnum.WAREHOUSE.getCode());
List<UserDTO> admin = roleApi.selectUserListByRoleCode(TenantContextHolder.getRequiredTenantId(), RepairRoleEnum.ADMIN.getCode());
// 取出第一个
if (CollUtil.isEmpty(dataList)) {
// 如果为空就通知相关人员出现了问题
if (CollUtil.isNotEmpty(warehouse)) {
warehouse.forEach(item -> workerService.sentMessage(item.getId(), "检查配件入库是否超时出现故障,请联系开发人员解决"));
}
if (CollUtil.isNotEmpty(admin)) {
admin.forEach(item -> workerService.sentMessage(item.getId(), "检查配件入库是否超时出现故障,请联系开发人员解决"));
}
}
DictDataRespDTO dictDataRespDTO = dataList.get(0);
String day = dictDataRespDTO.getValue();
// 转时间如果updateTime小于这个时间那就是需要提醒的
LocalDateTime dateAgo = LocalDateTime.now().minusDays(Integer.parseInt(day));
List<RepairWares> repairWares = baseMapper.selectList(new LambdaQueryWrapper<RepairWares>().le(RepairWares::getUpdateTime, dateAgo));
if (CollUtil.isNotEmpty(repairWares)) {
// 构建对象
List<WarnMessageByRepair> warnMessages = repairWares.stream().map(item ->
WarnMessageByRepair
.builder()
.title("配件超时未使用")
.content("名为:" + item.getName() + "的配件超过设定的未使用天数提醒,请及时处理相关事项!")
.warnTime(new Date())
.isRead("0")
.build()
).collect(Collectors.toList());
warnMessageByRepairService.saveBatch(warnMessages);
}
}
} }

View File

@ -0,0 +1,62 @@
package cn.iocoder.yudao.module.warnMessage.entity;
import cn.iocoder.yudao.annotation.Excel;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
/**
* warnMsg对象 warn_message
*
* @author 小李
* @date 15:11 2024/11/30
**/
@Data
@Builder
public class WarnMessageByRepair extends TenantBaseDO {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
private Long id;
//equ设备提醒file文件提醒
private String type;
//对应的数据主键
private Long objectId;
/**
* 标题
*/
@Excel(name = "标题")
private String title;
/**
* 内容
*/
@Excel(name = "内容")
private String content;
/**
* 提醒时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "提醒时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date warnTime;
/**
* 店铺主键
*/
@Excel(name = "店铺主键")
private Long partnerId;
/**
* 是否已读
*/
@Excel(name = "是否已读")
private String isRead;
}

View File

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.warnMessage.mapper;
import cn.iocoder.yudao.module.warnMessage.entity.WarnMessageByRepair;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* warnMsgMapper接口
*
* @author 小李
* @date 15:14 2024/11/30
**/
@Mapper
public interface WarnMessageByRepairMapper extends BaseMapper<WarnMessageByRepair> {
}

View File

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.warnMessage.service;
import cn.iocoder.yudao.module.warnMessage.entity.WarnMessageByRepair;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* warnMsgService接口
*
* @author 小李
* @date 15:12 2024/11/30
**/
public interface WarnMessageByRepairService extends IService<WarnMessageByRepair> {
}

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.warnMessage.service.impl;
import cn.iocoder.yudao.module.warnMessage.entity.WarnMessageByRepair;
import cn.iocoder.yudao.module.warnMessage.mapper.WarnMessageByRepairMapper;
import cn.iocoder.yudao.module.warnMessage.service.WarnMessageByRepairService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* warnMsgService业务层处理
*
* @author 小李
* @date 15:15 2024/11/30
**/
@Service
public class WarnMessageByRepairServiceImpl extends ServiceImpl<WarnMessageByRepairMapper, WarnMessageByRepair> implements WarnMessageByRepairService {
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.warnMessage.mapper.WarnMessageByRepairMapper">
</mapper>