diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysSoftUpdateRecordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysSoftUpdateRecordService.java new file mode 100644 index 0000000..6f419cf --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysSoftUpdateRecordService.java @@ -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 { + + /** + * 软件更新记录是否唯一 + * @param sysSoftUpdateRecord + * @return + */ + boolean checkSysSoftUpdateRecordOnly(SysSoftUpdateRecord sysSoftUpdateRecord); + +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolTypeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolTypeService.java index a93f074..4c22a3d 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolTypeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolTypeService.java @@ -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; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysSoftUpdateRecordController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysSoftUpdateRecordController.java new file mode 100644 index 0000000..42cb801 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysSoftUpdateRecordController.java @@ -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 { + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java index 885aba2..2387495 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java @@ -417,7 +417,7 @@ public class SysUserInfoController extends CoreBaseController{ UserExportModel userExportModel; List 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); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index 9d79c9d..c4c76cf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -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); //丢弃这条消息 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SoftUpdateRecordQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SoftUpdateRecordQueueReceiver.java new file mode 100644 index 0000000..de4221e --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/SoftUpdateRecordQueueReceiver.java @@ -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(); + } + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysSoftUpdateRecordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysSoftUpdateRecordService.java new file mode 100644 index 0000000..8bc9637 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysSoftUpdateRecordService.java @@ -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 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)); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java index 9ade0fe..a706a72 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java @@ -115,4 +115,14 @@ public class SysToolTypeService implements ISysToolTypeService { toolTypeRDao.deleteByIds(ids); } } + + /** + * 批量删除硬件类型 + * + * @param ids + */ + @Override + public void execute(Long[] ids) throws Exception { + + } } diff --git a/modules/i3plus-core-apiservice/src/main/resources/soft_version.txt b/modules/i3plus-core-apiservice/src/main/resources/soft_version.txt new file mode 100644 index 0000000..cd93f60 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/resources/soft_version.txt @@ -0,0 +1,9 @@ +v-1.0.0 +feat +输出日志归档调整为7天一次,并进行打包 +企业微信适配 +字典规则调整允许值为空 +操作日志,用户信息导出 +系统更新记录 +fix +会话已停止时登出导致系统假死 \ No newline at end of file