feat(core):系统更新记录功能

yun-zuoyi
汪云昊 5 years ago
parent b87304c27f
commit 7bb0232bb7

@ -0,0 +1,22 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.platform.bean.SysSoftUpdateRecord;
import cn.estsh.impp.framework.base.service.ICrudService;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-14 13:15
* @Modify:
**/
public interface ISysSoftUpdateRecordService extends ICrudService<SysSoftUpdateRecord> {
/**
*
* @param sysSoftUpdateRecord
* @return
*/
boolean checkSysSoftUpdateRecordOnly(SysSoftUpdateRecord sysSoftUpdateRecord);
}

@ -2,7 +2,6 @@ package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysToolType;
import io.swagger.annotations.ApiOperation;
@ -68,4 +67,11 @@ public interface ISysToolTypeService {
*/
@ApiOperation(value = "删除硬件类型",notes = "根据 ID 批量删除硬件类型信息")
void deleteSysToolTypeByIds(Long[] ids);
/**
*
* @param ids
*/
@ApiOperation(value = "删除硬件类型",notes = "根据 ID 批量删除硬件类型信息")
void execute(Long[] ids) throws Exception;
}

@ -0,0 +1,22 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.platform.bean.SysSoftUpdateRecord;
import cn.estsh.impp.framework.base.controller.CrudBaseController;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-14 13:19
* @Modify:
**/
@RestController
@Api(tags = "软件更新记录")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-soft-update-record")
public class SysSoftUpdateRecordController extends CrudBaseController<SysSoftUpdateRecord> {
}

@ -417,7 +417,7 @@ public class SysUserInfoController extends CoreBaseController{
UserExportModel userExportModel;
List<SysRefUserRole> sysRefUserRoleList;
StringBuffer roleName = new StringBuffer();
StringBuilder roleName = new StringBuilder();
for (SysUserInfo userInfo : list) {
// 关联角色信息
sysRefUserRoleList = sysUserService.findSysRefUserRoleByUserId(userInfo.getUserId());
@ -454,7 +454,7 @@ public class SysUserInfoController extends CoreBaseController{
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("用户日志导出异常", e);
}
} finally {
FileUtils.deleteQuietly(file);

@ -124,10 +124,10 @@ public class ScheduleQueueReceiver {
}
}
}
//信息已处理
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
//信息已处理
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e) {
LOGGER.error("【MQ-IMPP_SCHEDULE_QUEUE】处理出错{}", e.getMessage(), e);
//丢弃这条消息

@ -0,0 +1,88 @@
package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSoftUpdateRecordService;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysSoftUpdateRecord;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.version.ImppSoftVersionService;
import com.rabbitmq.client.Channel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource;
import java.io.IOException;
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.SOFT_VERSION;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-14 14:13
* @Modify:
**/
@ConditionalOnExpression("'${impp.mq.queue.soft-update-record:true}' == 'true'")
@Configuration
public class SoftUpdateRecordQueueReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(SoftUpdateRecordQueueReceiver.class);
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Resource
private ISysSoftUpdateRecordService sysSoftUpdateRecordService;
@Bean
public Queue getQueueImppOrderNoRecord(){
return new Queue(PlatformConstWords.QUEUE_IMPP_SOFT_VERSION);
}
/**
*
*
* @param data
* @param channel
* @param message
*/
@RabbitListener(queues = PlatformConstWords.QUEUE_IMPP_SOFT_VERSION)
public void processUpdateRecord(String data, Channel channel, Message message) {
try {
LOGGER.debug("【MQ-QUEUE_IMPP_SOFT_VERSION】数据接收成功{}", data);
SysSoftUpdateRecord sysSoftUpdateRecord = JsonUtilTool.decode(data, SysSoftUpdateRecord.class);
if(sysSoftUpdateRecordService.checkSysSoftUpdateRecordOnly(sysSoftUpdateRecord)){
sysSoftUpdateRecord.transformUpdateDetail();
sysSoftUpdateRecordService.insert(sysSoftUpdateRecord);
}
String softVersionKey = SOFT_VERSION + ":" + CommonEnumUtil.SOFT_TYPE.valueOfCode(sysSoftUpdateRecord.getSystemSoftType());
String currentVerStr = (String) redisRes.getObject(softVersionKey);
if (ImppSoftVersionService.isUpdateVersion(currentVerStr, sysSoftUpdateRecord.getSystemVersion())) {
redisRes.putObject(softVersionKey, sysSoftUpdateRecord.getSystemVersion(), -1);
}
//信息已处理
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e) {
LOGGER.error("【MQ-QUEUE_IMPP_SOFT_VERSION】处理出错{}", e.getMessage(), e);
//丢弃这条消息
try {
// 未成功处理,重新发送
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}

@ -0,0 +1,35 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysSoftUpdateRecordService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.platform.bean.SysSoftUpdateRecord;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.base.service.CrudService;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2020-09-14 13:18
* @Modify:
**/
@Service
public class SysSoftUpdateRecordService extends CrudService<SysSoftUpdateRecord> implements ISysSoftUpdateRecordService {
@Override
public DdlPackBean getFindPagerPackBean(SysSoftUpdateRecord bean) {
return CoreHqlPack.packHqlQuerySysSoftUpdateRecord(bean);
}
/**
*
*
* @param sysSoftUpdateRecord
* @return
*/
@Override
public boolean checkSysSoftUpdateRecordOnly(SysSoftUpdateRecord sysSoftUpdateRecord) {
return !baseRepository.isExitByHql(CoreHqlPack.packHqlCheckSysSoftUpdateRecordOnly(sysSoftUpdateRecord));
}
}

@ -115,4 +115,14 @@ public class SysToolTypeService implements ISysToolTypeService {
toolTypeRDao.deleteByIds(ids);
}
}
/**
*
*
* @param ids
*/
@Override
public void execute(Long[] ids) throws Exception {
}
}

@ -0,0 +1,9 @@
v-1.0.0
feat
输出日志归档调整为7天一次并进行打包
企业微信适配
字典规则调整允许值为空
操作日志,用户信息导出
系统更新记录
fix
会话已停止时登出导致系统假死
Loading…
Cancel
Save