Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
T
tianjin-cement
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
竹天卫
tianjin-cement
Commits
c9bbce78
Commit
c9bbce78
authored
Oct 15, 2020
by
竹天卫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口优化 websocket消息推送功能
parent
681a2cdd
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
758 additions
and
18 deletions
+758
-18
pom.xml
cement-business/pom.xml
+4
-0
WebSocketConfig.java
...va/cn/wise/sc/cement/business/config/WebSocketConfig.java
+52
-0
EntrustController.java
...wise/sc/cement/business/controller/EntrustController.java
+0
-1
EquipmentController.java
...se/sc/cement/business/controller/EquipmentController.java
+14
-13
SysUserMessageController.java
.../cement/business/controller/SysUserMessageController.java
+21
-0
SysUserMessage.java
...ava/cn/wise/sc/cement/business/entity/SysUserMessage.java
+80
-0
SysUserMessageMapper.java
.../wise/sc/cement/business/mapper/SysUserMessageMapper.java
+28
-0
SysUserMessageMapper.xml
...se/sc/cement/business/mapper/xml/SysUserMessageMapper.xml
+38
-0
Message.java
...c/main/java/cn/wise/sc/cement/business/model/Message.java
+34
-0
ISysUserMessageService.java
...se/sc/cement/business/service/ISysUserMessageService.java
+31
-0
EntrustServiceImpl.java
...e/sc/cement/business/service/impl/EntrustServiceImpl.java
+41
-3
EquipmentServiceImpl.java
...sc/cement/business/service/impl/EquipmentServiceImpl.java
+3
-0
SysUserMessageServiceImpl.java
...ment/business/service/impl/SysUserMessageServiceImpl.java
+132
-0
TeamServiceImpl.java
...wise/sc/cement/business/service/impl/TeamServiceImpl.java
+2
-1
SerializeUtil.java
...n/java/cn/wise/sc/cement/business/util/SerializeUtil.java
+155
-0
WebSocketServer.java
...java/cn/wise/sc/cement/business/util/WebSocketServer.java
+123
-0
No files found.
cement-business/pom.xml
View file @
c9bbce78
...
@@ -23,6 +23,10 @@
...
@@ -23,6 +23,10 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/config/WebSocketConfig.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
config
;
import
org.apache.catalina.session.StandardSessionFacade
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
import
javax.servlet.http.HttpSession
;
import
javax.websocket.HandshakeResponse
;
import
javax.websocket.server.HandshakeRequest
;
import
javax.websocket.server.ServerEndpointConfig
;
@Configuration
public
class
WebSocketConfig
extends
ServerEndpointConfig
.
Configurator
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
WebSocketConfig
.
class
);
/**
* 修改握手信息
*/
@Override
public
void
modifyHandshake
(
ServerEndpointConfig
sec
,
HandshakeRequest
request
,
HandshakeResponse
response
)
{
StandardSessionFacade
ssf
=
(
StandardSessionFacade
)
request
.
getHttpSession
();
if
(
ssf
!=
null
)
{
HttpSession
httpSession
=
(
HttpSession
)
request
.
getHttpSession
();
//关键操作
sec
.
getUserProperties
().
put
(
"sessionId"
,
httpSession
.
getId
());
log
.
info
(
"获取到的SessionID:"
+
httpSession
.
getId
());
}
super
.
modifyHandshake
(
sec
,
request
,
response
);
}
/**
* WebSocket的支持
* @return
*/
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
//这个对象说一下,貌似只有服务器是tomcat的时候才需要配置,具体我没有研究
return
new
ServerEndpointExporter
();
}
}
cement-business/src/main/java/cn/wise/sc/cement/business/controller/EntrustController.java
View file @
c9bbce78
...
@@ -31,7 +31,6 @@ import java.util.Map;
...
@@ -31,7 +31,6 @@ import java.util.Map;
* @since 2020-08-24
* @since 2020-08-24
*/
*/
@Api
(
tags
=
"委托管理"
)
@Api
(
tags
=
"委托管理"
)
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/business/entrust"
)
@RequestMapping
(
"/business/entrust"
)
public
class
EntrustController
{
public
class
EntrustController
{
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/controller/EquipmentController.java
View file @
c9bbce78
...
@@ -59,6 +59,20 @@ public class EquipmentController {
...
@@ -59,6 +59,20 @@ public class EquipmentController {
return
BaseResponse
.
errorMsg
(
"失败!"
);
return
BaseResponse
.
errorMsg
(
"失败!"
);
}
}
@ApiOperation
(
value
=
"设备检定附件分页列表"
)
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"equipmentId"
,
value
=
"设备表id"
,
paramType
=
"query"
,
dataType
=
"Integer"
)
})
@GetMapping
(
"/getTestPage"
)
public
BaseResponse
getTestPage
(
PageQuery
pageQuery
,
Integer
equipmentId
)
{
try
{
return
equipmentService
.
getTestPage
(
pageQuery
,
equipmentId
);
}
catch
(
Exception
e
)
{
log
.
debug
(
"设备检定分页列表{}"
,
e
);
}
return
BaseResponse
.
errorMsg
(
"失败!"
);
}
@ApiOperation
(
"设备列表导出"
)
@ApiOperation
(
"设备列表导出"
)
@PostMapping
(
"/export"
)
@PostMapping
(
"/export"
)
public
void
export
(
String
brand
,
Integer
supplierId
,
String
name
,
String
fileName
,
HttpServletResponse
response
)
{
public
void
export
(
String
brand
,
Integer
supplierId
,
String
name
,
String
fileName
,
HttpServletResponse
response
)
{
...
@@ -149,19 +163,6 @@ public class EquipmentController {
...
@@ -149,19 +163,6 @@ public class EquipmentController {
return
BaseResponse
.
errorMsg
(
"失败!"
);
return
BaseResponse
.
errorMsg
(
"失败!"
);
}
}
/* @ApiOperation(value = "设备检定分页列表")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "equipmentId", value = "设备表id", paramType = "query", dataType = "Integer")
})
@GetMapping("/getTestPage")
public BaseResponse getTestPage(PageQuery pageQuery, Integer equipmentId) {
try {
return equipmentService.getTestPage(pageQuery, equipmentId);
} catch (Exception e) {
log.debug("设备检定分页列表{}", e);
}
return BaseResponse.errorMsg("失败!");
}*/
/*
/*
@ApiOperation(value = "设备检定详情")
@ApiOperation(value = "设备检定详情")
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/controller/SysUserMessageController.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* <p>
* 前端控制器
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@RestController
@RequestMapping
(
"/business/sys-user-message"
)
public
class
SysUserMessageController
{
}
cement-business/src/main/java/cn/wise/sc/cement/business/entity/SysUserMessage.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.time.LocalDateTime
;
import
java.io.Serializable
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <p>
*
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
public
class
SysUserMessage
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* 接收人id
*/
private
Integer
userId
;
/**
* 接收信息
*/
private
String
message
;
/**
* 相关内容(委托表id)
*/
private
Integer
appId
;
/**
* 是否查看(0:否,1:是)
*/
private
Integer
isCheck
;
/**
* 消息类型(1委托管理)
*/
private
Integer
messageType
;
/**
* 创建时间
*/
private
LocalDateTime
createTime
;
/**
* 更新时间
*/
private
LocalDateTime
updateTime
;
/**
* 是否处理(0:未处理,1:已处理)
*/
private
Integer
isDeal
;
public
interface
MessageType
{
int
ENTRUST
=
1
;
}
}
cement-business/src/main/java/cn/wise/sc/cement/business/mapper/SysUserMessageMapper.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
mapper
;
import
cn.wise.sc.cement.business.entity.SysUserMessage
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author ztw
* @since 2020-10-13
*/
public
interface
SysUserMessageMapper
extends
BaseMapper
<
SysUserMessage
>
{
List
<
SysUserMessage
>
getNoCheck
(
@Param
(
value
=
"userId"
)
Integer
userId
,
@Param
(
value
=
"appId"
)
Integer
appId
,
@Param
(
value
=
"messageType"
)
Integer
messageType
);
List
<
SysUserMessage
>
getNoDeal
(
@Param
(
value
=
"userId"
)
Integer
userId
,
@Param
(
value
=
"appId"
)
Integer
appId
,
@Param
(
value
=
"messageType"
)
Integer
messageType
);
}
cement-business/src/main/java/cn/wise/sc/cement/business/mapper/xml/SysUserMessageMapper.xml
0 → 100644
View file @
c9bbce78
<?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.wise.sc.cement.business.mapper.SysUserMessageMapper"
>
<!-- 未查看消息 -->
<select
id=
"getNoCheck"
resultType=
"cn.wise.sc.cement.business.entity.SysUserMessage"
>
select *
FROM sys_user_message rum
where rum.is_check=0
<if
test=
"userId != null and userId !=''"
>
and rum.user_id = #{userId}
</if>
<if
test=
"appId != null and appId !=''"
>
and rum.app_id = #{appId}
</if>
<if
test=
"messageType != null and messageType !=''"
>
and rum.message_type = #{messageType}
</if>
</select>
<!-- 未处理消息记录 -->
<select
id=
"getNoDeal"
resultType=
"cn.wise.sc.cement.business.entity.SysUserMessage"
>
select *
FROM sys_user_message rum
where rum.is_deal=0
<if
test=
"userId != null and userId !=''"
>
and rum.user_id = #{userId}
</if>
<if
test=
"appId != null and appId !=''"
>
and rum.app_id = #{appId}
</if>
<if
test=
"messageType != null and messageType !=''"
>
and rum.message_type = #{messageType}
</if>
</select>
</mapper>
cement-business/src/main/java/cn/wise/sc/cement/business/model/Message.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
model
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
Message
implements
Serializable
{
private
static
final
long
serialVersionUID
=
8508882582940066562L
;
@ApiModelProperty
(
"接收人id"
)
private
String
userId
;
@ApiModelProperty
(
"接收信息"
)
private
String
message
;
@ApiModelProperty
(
"消息类型: 1个人报销,2对公收付款"
)
private
Integer
messageType
;
@ApiModelProperty
(
"相关对象表id(个人报销表或对公收付款表)"
)
private
Integer
appId
;
@ApiModelProperty
(
"发送时间"
)
private
LocalDateTime
createTime
;
}
cement-business/src/main/java/cn/wise/sc/cement/business/service/ISysUserMessageService.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
service
;
import
cn.wise.sc.cement.business.entity.SysUserMessage
;
import
cn.wise.sc.cement.business.model.BaseResponse
;
import
cn.wise.sc.cement.business.util.WebSocketServer
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* <p>
* 服务类
* </p>
*
* @author ztw
* @since 2020-10-13
*/
public
interface
ISysUserMessageService
extends
IService
<
SysUserMessage
>
{
BaseResponse
<
String
>
sendMessage
(
Integer
userId
,
String
message
,
Integer
appId
,
Integer
messageType
);
BaseResponse
<
String
>
checkMessage
(
Integer
userId
,
Integer
appId
,
Integer
messageType
);
BaseResponse
<
String
>
dealMessage
(
Integer
userId
,
Integer
appId
,
Integer
messageType
);
}
cement-business/src/main/java/cn/wise/sc/cement/business/service/impl/EntrustServiceImpl.java
View file @
c9bbce78
...
@@ -105,6 +105,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -105,6 +105,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
private
EquipmentUseMapper
equipmentUseMapper
;
private
EquipmentUseMapper
equipmentUseMapper
;
@Resource
@Resource
private
ClientMapper
clientMapper
;
private
ClientMapper
clientMapper
;
@Autowired
private
ISysUserMessageService
userMessageService
;
/**
/**
* 委托分页
* 委托分页
...
@@ -230,8 +232,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -230,8 +232,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
Entrust
entrust
=
new
Entrust
();
Entrust
entrust
=
new
Entrust
();
BeanUtils
.
copyProperties
(
query
,
entrust
);
BeanUtils
.
copyProperties
(
query
,
entrust
);
//生成委托编号
//生成委托编号
String
entrustCode
=
commonService
.
createNo
(
"WT"
,
entrustMapper
.
counts
());
//
String entrustCode = commonService.createNo("WT", entrustMapper.counts());
entrust
.
setEntrustCode
(
entrustCode
)
entrust
.
setEntrustCode
(
null
)
.
setUserId
(
loginUser
.
getId
())
.
setUserId
(
loginUser
.
getId
())
.
setStatus
(
0
)
.
setStatus
(
0
)
.
setIsDelete
(
1
)
.
setIsDelete
(
1
)
...
@@ -265,6 +267,15 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -265,6 +267,15 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
sampleTmpService
.
saveBatch
(
sampleTmpList
);
sampleTmpService
.
saveBatch
(
sampleTmpList
);
}
}
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"提交了委托单"
,
null
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"提交了委托单"
,
null
);
//消息推送
Integer
approvalId
=
sysApprovalMapper
.
getApprovalId
(
"委托评审"
);
if
(
approvalId
==
null
)
{
return
BaseResponse
.
errorMsg
(
"委托评审信息错误"
);
}
BaseResponse
wrapper
=
userMessageService
.
sendMessage
(
approvalId
,
"您有一条新的委托单申请等待评审"
,
entrust
.
getId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
if
(
wrapper
.
getCode
()
!=
200
){
return
wrapper
;
}
return
BaseResponse
.
okData
(
entrust
);
return
BaseResponse
.
okData
(
entrust
);
}
}
...
@@ -358,6 +369,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -358,6 +369,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
}
entrustVo
.
setSampleTmpList
(
sampleTmpVoList
);
entrustVo
.
setSampleTmpList
(
sampleTmpVoList
);
}
}
LoginUser
loginUser
=
userService
.
getLoginUser
();
if
(
loginUser
==
null
)
{
return
BaseResponse
.
errorMsg
(
"请登录账号"
);
}
userMessageService
.
checkMessage
(
loginUser
.
getId
(),
id
,
SysUserMessage
.
MessageType
.
ENTRUST
);
return
BaseResponse
.
okData
(
entrustVo
);
return
BaseResponse
.
okData
(
entrustVo
);
}
}
...
@@ -684,6 +700,9 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -684,6 +700,9 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
redisUtil
.
setString
(
"maxCementCode"
,
maxCementCode
);
redisUtil
.
setString
(
"maxCementCode"
,
maxCementCode
);
}
}
entrust
.
setStatus
(
1
).
setProjectType
(
query
.
getProjectType
());
entrust
.
setStatus
(
1
).
setProjectType
(
query
.
getProjectType
());
//审批后生成委托编号
String
entrustCode
=
entrust
.
getProjectCode
()+
"_"
+
query
.
getSampleList
().
get
(
0
).
getCementCode
();
entrust
.
setEntrustCode
(
entrustCode
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"修改评审状态为“通过”"
,
null
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"修改评审状态为“通过”"
,
null
);
}
else
if
(
query
.
getIsAgree
()
==
2
)
{
//驳回
}
else
if
(
query
.
getIsAgree
()
==
2
)
{
//驳回
entrust
.
setStatus
(
2
);
entrust
.
setStatus
(
2
);
...
@@ -701,7 +720,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -701,7 +720,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.
setRemark
(
null
);
.
setRemark
(
null
);
approvalMapper
.
insert
(
entrustApproval
);
approvalMapper
.
insert
(
entrustApproval
);
entrustMapper
.
updateById
(
entrust
);
entrustMapper
.
updateById
(
entrust
);
//处理消息
userMessageService
.
dealMessage
(
loginUser
.
getId
(),
entrust
.
getId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
return
BaseResponse
.
okMsg
(
"审批完成"
);
return
BaseResponse
.
okMsg
(
"审批完成"
);
}
}
...
@@ -764,6 +784,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -764,6 +784,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
}
}
sampleHandleEnclosureService
.
saveBatch
(
sampleHandleEnclosureList
);
sampleHandleEnclosureService
.
saveBatch
(
sampleHandleEnclosureList
);
}
}
//消息推送
BaseResponse
wrapper
=
userMessageService
.
sendMessage
(
sampleHandle
.
getUserId
(),
"您有一条样品处理信息等待处理"
,
entrust
.
getId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
if
(
wrapper
.
getCode
()
!=
200
){
return
wrapper
;
}
}
}
}
}
//该委托单下的样品改为已领用状态
//该委托单下的样品改为已领用状态
...
@@ -781,6 +806,10 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -781,6 +806,10 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.
setStatus
(
3
);
.
setStatus
(
3
);
entrustMapper
.
updateById
(
entrust
);
entrustMapper
.
updateById
(
entrust
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"发送样品处理任务"
,
null
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
entrust
.
getId
(),
"发送样品处理任务"
,
null
);
return
BaseResponse
.
okMsg
(
"已发送样品处理任务"
);
return
BaseResponse
.
okMsg
(
"已发送样品处理任务"
);
}
}
...
@@ -930,6 +959,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -930,6 +959,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return
BaseResponse
.
errorMsg
(
"样品信息错误"
);
return
BaseResponse
.
errorMsg
(
"样品信息错误"
);
}
}
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
sample
.
getEntrustId
(),
"接受样品处理任务"
,
null
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
sample
.
getEntrustId
(),
"接受样品处理任务"
,
null
);
//处理消息
userMessageService
.
dealMessage
(
loginUser
.
getId
(),
sample
.
getEntrustId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
return
BaseResponse
.
okMsg
(
"已接受样品处理任务"
);
return
BaseResponse
.
okMsg
(
"已接受样品处理任务"
);
}
}
...
@@ -1124,6 +1155,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -1124,6 +1155,11 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
.
setStatus
(
0
)
.
setStatus
(
0
)
.
setCreateTime
(
LocalDateTime
.
now
());
.
setCreateTime
(
LocalDateTime
.
now
());
sampleDistributionList
.
add
(
sampleDistribution
);
sampleDistributionList
.
add
(
sampleDistribution
);
//消息推送
BaseResponse
wrapper
=
userMessageService
.
sendMessage
(
distributionTeamQuery
.
getUserId
(),
"您有一条样品检测信息等待接受"
,
entrust
.
getId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
if
(
wrapper
.
getCode
()
!=
200
){
return
wrapper
;
}
}
}
}
}
Sample
sample
=
sampleService
.
getById
(
distributionQuery
.
getSampleId
());
Sample
sample
=
sampleService
.
getById
(
distributionQuery
.
getSampleId
());
...
@@ -1297,6 +1333,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
...
@@ -1297,6 +1333,8 @@ public class EntrustServiceImpl extends ServiceImpl<EntrustMapper, Entrust> impl
return
BaseResponse
.
errorMsg
(
"样品信息错误"
);
return
BaseResponse
.
errorMsg
(
"样品信息错误"
);
}
}
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
sample
.
getEntrustId
(),
"接受检测项目任务"
,
null
);
logsService
.
saveLog
(
SysLogs
.
ObjType
.
ENTRUST_LOG
,
sample
.
getEntrustId
(),
"接受检测项目任务"
,
null
);
//处理消息
userMessageService
.
dealMessage
(
loginUser
.
getId
(),
sample
.
getEntrustId
(),
SysUserMessage
.
MessageType
.
ENTRUST
);
return
BaseResponse
.
okMsg
(
"已接受检测项目任务"
);
return
BaseResponse
.
okMsg
(
"已接受检测项目任务"
);
}
}
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/service/impl/EquipmentServiceImpl.java
View file @
c9bbce78
...
@@ -278,6 +278,9 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
...
@@ -278,6 +278,9 @@ public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment
params
.
put
(
"equipmentId"
,
equipmentId
);
params
.
put
(
"equipmentId"
,
equipmentId
);
Page
<
EquipmentTestVo
>
page
=
new
Page
<>(
pageQuery
.
getPageNo
(),
pageQuery
.
getPageSize
());
Page
<
EquipmentTestVo
>
page
=
new
Page
<>(
pageQuery
.
getPageNo
(),
pageQuery
.
getPageSize
());
IPage
<
EquipmentTestVo
>
pages
=
testMapper
.
getPage
(
page
,
params
);
IPage
<
EquipmentTestVo
>
pages
=
testMapper
.
getPage
(
page
,
params
);
List
<
EquipmentTestVo
>
list
=
page
.
getRecords
();
List
<
EquipmentTestVo
>
list
=
page
.
getRecords
();
if
(
list
!=
null
&&
list
.
size
()>
0
){
if
(
list
!=
null
&&
list
.
size
()>
0
){
for
(
EquipmentTestVo
equipmentTestVo
:
list
){
for
(
EquipmentTestVo
equipmentTestVo
:
list
){
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/service/impl/SysUserMessageServiceImpl.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
service
.
impl
;
import
cn.wise.sc.cement.business.entity.SysUser
;
import
cn.wise.sc.cement.business.entity.SysUserMessage
;
import
cn.wise.sc.cement.business.mapper.SysUserMessageMapper
;
import
cn.wise.sc.cement.business.model.BaseResponse
;
import
cn.wise.sc.cement.business.model.Message
;
import
cn.wise.sc.cement.business.service.ISysUserMessageService
;
import
cn.wise.sc.cement.business.service.ISysUserService
;
import
cn.wise.sc.cement.business.util.WebSocketServer
;
import
cn.wise.sc.cement.business.wrapper.WrapMapper
;
import
cn.wise.sc.cement.business.wrapper.Wrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.List
;
/**
* <p>
* 服务实现类
* </p>
*
* @author ztw
* @since 2020-10-13
*/
@Service
public
class
SysUserMessageServiceImpl
extends
ServiceImpl
<
SysUserMessageMapper
,
SysUserMessage
>
implements
ISysUserMessageService
{
@Resource
private
SysUserMessageMapper
userMessageMapper
;
@Resource
protected
HttpServletResponse
response
;
@Autowired
protected
HttpServletRequest
request
;
@Autowired
WebSocketServer
webSocketServer
;
/**
* 发送消息
* @param userId
* @param message
* @param appId
* @param messageType
* @return
*/
@Override
public
BaseResponse
<
String
>
sendMessage
(
Integer
userId
,
String
message
,
Integer
appId
,
Integer
messageType
)
{
int
ret
=
0
;
SysUserMessage
userMessage
=
new
SysUserMessage
();
userMessage
.
setUserId
(
userId
);
userMessage
.
setMessage
(
message
);
userMessage
.
setAppId
(
appId
);
userMessage
.
setIsCheck
(
0
);
userMessage
.
setMessageType
(
messageType
);
userMessage
.
setCreateTime
(
LocalDateTime
.
now
());
userMessage
.
setUpdateTime
(
userMessage
.
getCreateTime
());
userMessage
.
setIsDeal
(
0
);
ret
=
this
.
userMessageMapper
.
insert
(
userMessage
);
if
(
ret
==
0
){
return
BaseResponse
.
errorMsg
(
"消息推送失败"
);
}
String
dealer
=
String
.
valueOf
(
userId
);
Message
m
=
Message
.
builder
().
userId
(
dealer
).
message
(
message
).
messageType
(
messageType
).
appId
(
appId
)
.
createTime
(
userMessage
.
getCreateTime
()).
build
();
webSocketServer
.
sendTo
(
m
);
/*SysUser sysUser = userService.getById(userId);
if(sysUser != null && StringUtils.isNotBlank(sysUser.getPhone())){
SMSUtil.sendCode(sysUser.getPhone(), message);
}*/
return
BaseResponse
.
okData
(
"成功"
);
}
/**
* 查看消息
* @param userId
* @param appId
* @param messageType
* @return
*/
@Override
public
BaseResponse
<
String
>
checkMessage
(
Integer
userId
,
Integer
appId
,
Integer
messageType
)
{
int
ret
=
0
;
List
<
SysUserMessage
>
list
=
this
.
userMessageMapper
.
getNoCheck
(
userId
,
appId
,
messageType
);
if
(
list
!=
null
&&
list
.
size
()>
0
){
for
(
SysUserMessage
um
:
list
){
um
.
setIsCheck
(
1
);
ret
=
this
.
userMessageMapper
.
updateById
(
um
);
if
(
ret
==
0
)
{
return
BaseResponse
.
errorMsg
(
"查看消息记录更新失败"
);
}
}
}
return
BaseResponse
.
okData
(
"成功"
);
}
/**
* 处理消息
* @param userId
* @param appId
* @param messageType
* @return
*/
@Override
public
BaseResponse
<
String
>
dealMessage
(
Integer
userId
,
Integer
appId
,
Integer
messageType
)
{
int
ret
=
0
;
List
<
SysUserMessage
>
list
=
this
.
userMessageMapper
.
getNoDeal
(
userId
,
appId
,
messageType
);
if
(
list
!=
null
&&
list
.
size
()>
0
){
for
(
SysUserMessage
um
:
list
){
um
.
setIsCheck
(
1
);
um
.
setIsDeal
(
1
);
ret
=
this
.
userMessageMapper
.
updateById
(
um
);
if
(
ret
==
0
)
{
return
BaseResponse
.
errorMsg
(
"处理消息记录更新失败"
);
}
}
}
return
BaseResponse
.
okData
(
"成功"
);
}
}
cement-business/src/main/java/cn/wise/sc/cement/business/service/impl/TeamServiceImpl.java
View file @
c9bbce78
...
@@ -113,7 +113,8 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
...
@@ -113,7 +113,8 @@ public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements IT
}
}
update
.
setGroupId
(
query
.
getGroupId
())
update
.
setGroupId
(
query
.
getGroupId
())
.
setMethodId
(
query
.
getMethodId
())
.
setMethodId
(
query
.
getMethodId
())
.
setName
(
query
.
getName
());
.
setName
(
query
.
getName
())
.
setIsDisplay
(
query
.
getIsDisplay
());
teamMapper
.
updateById
(
update
);
teamMapper
.
updateById
(
update
);
return
BaseResponse
.
okData
(
update
);
return
BaseResponse
.
okData
(
update
);
}
}
...
...
cement-business/src/main/java/cn/wise/sc/cement/business/util/SerializeUtil.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
util
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 序列化对象工具类,用于保存和读取redis数据使用
* Function:
* Date: 2018年9月12日10:18:56
*/
public
class
SerializeUtil
{
private
static
Logger
log
=
LoggerFactory
.
getLogger
(
SerializeUtil
.
class
);
/**
* 序列化对象
* @param object
* @return
*/
public
static
byte
[]
serialize
(
Object
object
)
{
ObjectOutputStream
oos
=
null
;
ByteArrayOutputStream
baos
=
null
;
byte
[]
bytes
=
null
;
try
{
// 序列化
baos
=
new
ByteArrayOutputStream
();
oos
=
new
ObjectOutputStream
(
baos
);
oos
.
writeObject
(
object
);
bytes
=
baos
.
toByteArray
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
oos
!=
null
)
{
oos
.
close
();
}
if
(
baos
!=
null
)
{
baos
.
close
();
}
}
catch
(
Exception
e2
)
{
e2
.
printStackTrace
();
}
}
return
bytes
;
}
/**
* 反序列化对象
* @param bytes
* @return
*/
public
static
Object
unserialize
(
byte
[]
bytes
)
{
Object
obj
=
null
;
ByteArrayInputStream
bais
=
null
;
try
{
// 反序列化
bais
=
new
ByteArrayInputStream
(
bytes
);
ObjectInputStream
ois
=
new
ObjectInputStream
(
bais
);
obj
=
ois
.
readObject
();
ois
.
close
();
bais
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
obj
;
}
/**
* 关闭的数据源或目标。调用 close()方法可释放对象保存的资源(如打开文件)
* 关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。
* @param closeable
*/
public
static
void
close
(
Closeable
closeable
)
{
if
(
closeable
!=
null
)
{
try
{
closeable
.
close
();
}
catch
(
Exception
e
)
{
log
.
info
(
"Unable to close %s"
,
closeable
,
e
);
}
}
}
/**
* 列表序列化(用于Redis整存整取)
* @param value
* @return
*/
public
static
<
T
>
byte
[]
serialize
(
List
<
T
>
value
)
{
if
(
value
==
null
)
{
throw
new
NullPointerException
(
"Can't serialize null"
);
}
byte
[]
rv
=
null
;
ByteArrayOutputStream
bos
=
null
;
ObjectOutputStream
os
=
null
;
try
{
bos
=
new
ByteArrayOutputStream
();
os
=
new
ObjectOutputStream
(
bos
);
for
(
T
obj
:
value
){
os
.
writeObject
(
obj
);
}
os
.
writeObject
(
null
);
os
.
close
();
bos
.
close
();
rv
=
bos
.
toByteArray
();
}
catch
(
IOException
e
)
{
throw
new
IllegalArgumentException
(
"Non-serializable object"
,
e
);
}
finally
{
close
(
os
);
close
(
bos
);
}
return
rv
;
}
/**
* 反序列化列表(用于Redis整存整取)
* @param in
* @return
*/
public
static
<
T
>
List
<
T
>
unserializeForList
(
byte
[]
in
)
{
List
<
T
>
list
=
new
ArrayList
<
T
>();
ByteArrayInputStream
bis
=
null
;
ObjectInputStream
is
=
null
;
try
{
if
(
in
!=
null
)
{
bis
=
new
ByteArrayInputStream
(
in
);
is
=
new
ObjectInputStream
(
bis
);
while
(
true
)
{
T
obj
=
(
T
)
is
.
readObject
();
if
(
obj
==
null
){
break
;
}
else
{
list
.
add
(
obj
);
}
}
is
.
close
();
bis
.
close
();
}
}
catch
(
IOException
e
)
{
log
.
warn
(
"Caught IOException decoding %d bytes of data"
,
in
==
null
?
0
:
in
.
length
,
e
);
}
catch
(
ClassNotFoundException
e
)
{
log
.
warn
(
"Caught CNFE decoding %d bytes of data"
,
in
==
null
?
0
:
in
.
length
,
e
);
}
finally
{
close
(
is
);
close
(
bis
);
}
return
list
;
}
}
cement-business/src/main/java/cn/wise/sc/cement/business/util/WebSocketServer.java
0 → 100644
View file @
c9bbce78
package
cn
.
wise
.
sc
.
cement
.
business
.
util
;
import
cn.wise.sc.cement.business.model.Message
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
redis.clients.jedis.Jedis
;
import
javax.websocket.*
;
import
javax.websocket.server.PathParam
;
import
javax.websocket.server.ServerEndpoint
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
@ServerEndpoint
(
"/test-websocket/{sid}"
)
@Component
@Slf4j
public
class
WebSocketServer
{
/**
* 用于存放所有在线客户端
*/
private
static
Map
<
String
,
Session
>
clients
=
new
ConcurrentHashMap
<>();
// private static Map<String, List<Message>> messages = new ConcurrentHashMap<>();
/*@Value("${websocket.socketKey}")
private String SOCKET_KEY;
@Value("${websocket.host}")
private String host;
@Value("${websocket.port}")
private int port;
@Value("${websocket.timeout}")
private int timeout;
@Value("${websocket.clientDB}")
private long clientDB;
@Value("${websocket.selectDB}")
private int selectDB;
@Value("${websocket.password}")
private String password;*/
private
static
final
String
SOCKET_KEY
=
"socketkey"
;
private
static
final
String
host
=
"localhost"
;
private
static
final
int
port
=
6379
;
private
static
final
int
timeout
=
100000
;
private
static
final
long
clientDB
=
2
;
private
static
final
int
selectDB
=
2
;
private
static
final
String
password
=
"Wise_@123456"
;
@OnOpen
public
void
onOpen
(
Session
session
,
@PathParam
(
"sid"
)
String
sid
)
{
log
.
info
(
"有新的客户端上线: {}"
,
session
.
getId
());
clients
.
put
(
sid
,
session
);
Jedis
jedis
=
new
Jedis
(
host
,
port
,
timeout
);
// jedis.auth(password);
jedis
.
select
(
selectDB
);
// jedis.getClient().setDb(clientDB);
List
<
Message
>
messageList
=
SerializeUtil
.
unserializeForList
(
jedis
.
get
((
SOCKET_KEY
+
sid
).
getBytes
()));
if
(
session
!=
null
)
{
for
(
int
i
=
0
;
i
<
messageList
.
size
();
i
++){
Message
message
=
messageList
.
get
(
i
);
try
{
JSONObject
json
=
(
JSONObject
)
JSONObject
.
toJSON
(
message
);
String
msg
=
json
.
toJSONString
();
session
.
getBasicRemote
().
sendText
(
msg
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
jedis
.
del
((
SOCKET_KEY
+
sid
).
getBytes
());
}
}
@OnClose
public
void
onClose
(
Session
session
,
@PathParam
(
"sid"
)
String
sid
)
{
String
sessionId
=
session
.
getId
();
log
.
info
(
"有客户端离线: {}"
,
sessionId
);
clients
.
remove
(
sid
);
}
@OnError
public
void
onError
(
Session
session
,
Throwable
throwable
,
@PathParam
(
"sid"
)
String
sid
)
{
throwable
.
printStackTrace
();
if
(
clients
.
get
(
sid
)
!=
null
)
{
clients
.
remove
(
sid
);
}
}
@OnMessage
public
void
onMessage
(
String
message
)
{
log
.
info
(
"收到客户端发来的消息: {}"
,
message
);
this
.
sendTo
(
JSON
.
parseObject
(
message
,
Message
.
class
));
}
/**
* 发送消息
*
* @param message 消息对象
*/
public
void
sendTo
(
Message
message
)
{
if
(
clients
.
get
(
message
.
getUserId
())
==
null
)
{
Jedis
jedis
=
new
Jedis
(
host
,
port
,
timeout
);
// jedis.auth(password);
jedis
.
select
(
selectDB
);
// jedis.getClient().setDb(clientDB);
List
<
Message
>
messageList
=
SerializeUtil
.
unserializeForList
(
jedis
.
get
((
SOCKET_KEY
+
message
.
getUserId
()).
getBytes
()));
messageList
.
add
(
message
);
jedis
.
set
((
SOCKET_KEY
+
message
.
getUserId
()).
getBytes
(),
SerializeUtil
.
serialize
(
messageList
));
}
else
{
Session
s
=
clients
.
get
(
message
.
getUserId
());
if
(
s
!=
null
)
{
try
{
JSONObject
json
=
(
JSONObject
)
JSONObject
.
toJSON
(
message
);
String
msg
=
json
.
toJSONString
();
s
.
getBasicRemote
().
sendText
(
msg
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment