Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
P
precision-effect
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
耿迪迪
precision-effect
Commits
0de62006
Commit
0de62006
authored
Jun 16, 2023
by
吴卿华
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
0b5887c3
a3bc6699
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1789 additions
and
89 deletions
+1789
-89
TPurchaseController.java
...ehong/web/controller/transaction/TPurchaseController.java
+103
-0
pom.xml
precision-effect-framework/pom.xml
+5
-0
SecurityConfig.java
...main/java/com/zehong/framework/config/SecurityConfig.java
+1
-1
WebSocketConfig.java
...ain/java/com/zehong/framework/config/WebSocketConfig.java
+18
-0
WebSocketBean.java
...com/zehong/framework/web/domain/server/WebSocketBean.java
+56
-0
WebSocketServer.java
...ava/com/zehong/framework/web/service/WebSocketServer.java
+160
-0
SysNotice.java
...tem/src/main/java/com/zehong/system/domain/SysNotice.java
+33
-21
TPurchase.java
...tem/src/main/java/com/zehong/system/domain/TPurchase.java
+249
-0
TPurchaseMapper.java
...c/main/java/com/zehong/system/mapper/TPurchaseMapper.java
+61
-0
ITPurchaseService.java
...ain/java/com/zehong/system/service/ITPurchaseService.java
+61
-0
TPurchaseServiceImpl.java
.../com/zehong/system/service/impl/TPurchaseServiceImpl.java
+102
-0
TPurchaseMapper.xml
...em/src/main/resources/mapper/business/TPurchaseMapper.xml
+135
-0
SysNoticeMapper.xml
...stem/src/main/resources/mapper/system/SysNoticeMapper.xml
+71
-64
purchase.js
precision-effect-web/src/api/transaction/purchase.js
+53
-0
Message.vue
...sion-effect-web/src/layout/components/Message/Message.vue
+91
-0
Navbar.vue
precision-effect-web/src/layout/components/Navbar.vue
+6
-3
main.js
precision-effect-web/src/main.js
+3
-0
websocket.js
precision-effect-web/src/utils/websocket.js
+83
-0
index.vue
precision-effect-web/src/views/purchase/index.vue
+498
-0
No files found.
precision-effect-admin/src/main/java/com/zehong/web/controller/transaction/TPurchaseController.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
web
.
controller
.
transaction
;
import
java.util.List
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PutMapping
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.zehong.common.annotation.Log
;
import
com.zehong.common.core.controller.BaseController
;
import
com.zehong.common.core.domain.AjaxResult
;
import
com.zehong.common.enums.BusinessType
;
import
com.zehong.system.domain.TPurchase
;
import
com.zehong.system.service.ITPurchaseService
;
import
com.zehong.common.utils.poi.ExcelUtil
;
import
com.zehong.common.core.page.TableDataInfo
;
/**
* 外部采购(报销)申请Controller
*
* @author zehong
* @date 2023-06-16
*/
@RestController
@RequestMapping
(
"/system/purchase"
)
public
class
TPurchaseController
extends
BaseController
{
@Autowired
private
ITPurchaseService
tPurchaseService
;
/**
* 查询外部采购(报销)申请列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
TPurchase
tPurchase
)
{
startPage
();
List
<
TPurchase
>
list
=
tPurchaseService
.
selectTPurchaseList
(
tPurchase
);
return
getDataTable
(
list
);
}
/**
* 导出外部采购(报销)申请列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:export')"
)
@Log
(
title
=
"外部采购(报销)申请"
,
businessType
=
BusinessType
.
EXPORT
)
@GetMapping
(
"/export"
)
public
AjaxResult
export
(
TPurchase
tPurchase
)
{
List
<
TPurchase
>
list
=
tPurchaseService
.
selectTPurchaseList
(
tPurchase
);
ExcelUtil
<
TPurchase
>
util
=
new
ExcelUtil
<
TPurchase
>(
TPurchase
.
class
);
return
util
.
exportExcel
(
list
,
"外部采购(报销)申请数据"
);
}
/**
* 获取外部采购(报销)申请详细信息
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:query')"
)
@GetMapping
(
value
=
"/{purchaseId}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"purchaseId"
)
Long
purchaseId
)
{
return
AjaxResult
.
success
(
tPurchaseService
.
selectTPurchaseById
(
purchaseId
));
}
/**
* 新增外部采购(报销)申请
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:add')"
)
@Log
(
title
=
"外部采购(报销)申请"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
AjaxResult
add
(
@RequestBody
TPurchase
tPurchase
)
{
return
toAjax
(
tPurchaseService
.
insertTPurchase
(
tPurchase
));
}
/**
* 修改外部采购(报销)申请
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:edit')"
)
@Log
(
title
=
"外部采购(报销)申请"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
public
AjaxResult
edit
(
@RequestBody
TPurchase
tPurchase
)
{
return
toAjax
(
tPurchaseService
.
updateTPurchase
(
tPurchase
));
}
/**
* 删除外部采购(报销)申请
*/
@PreAuthorize
(
"@ss.hasPermi('system:purchase:remove')"
)
@Log
(
title
=
"外部采购(报销)申请"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{purchaseIds}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
purchaseIds
)
{
return
toAjax
(
tPurchaseService
.
deleteTPurchaseByIds
(
purchaseIds
));
}
}
precision-effect-framework/pom.xml
View file @
0de62006
...
...
@@ -59,6 +59,11 @@
<artifactId>
precision-effect-system
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
precision-effect-framework/src/main/java/com/zehong/framework/config/SecurityConfig.java
View file @
0de62006
...
...
@@ -97,7 +97,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.
authorizeRequests
()
// 对于登录login 验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/captchaImage"
).
anonymous
()
.
antMatchers
(
"/login"
,
"/captchaImage"
,
"/webSocket/**"
).
anonymous
()
.
antMatchers
(
HttpMethod
.
GET
,
"/*.html"
,
...
...
precision-effect-framework/src/main/java/com/zehong/framework/config/WebSocketConfig.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
framework
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
/**
* @author geng
* webScocket
*/
@Configuration
public
class
WebSocketConfig
{
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
return
new
ServerEndpointExporter
();
}
}
precision-effect-framework/src/main/java/com/zehong/framework/web/domain/server/WebSocketBean.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
framework
.
web
.
domain
.
server
;
import
javax.websocket.Session
;
import
java.util.concurrent.atomic.AtomicInteger
;
/**
* <websocket信息对象>
* <用于存储secket连接信息>
* @author wzh
* @version 2018-07-08 18:49
* @see [相关类/方法] (可选)
**/
public
class
WebSocketBean
{
/**
* 连接session对象
*/
private
Session
session
;
/**
* 用户id
*/
private
Long
userId
;
/**
* 连接错误次数
*/
private
AtomicInteger
erroerLinkCount
=
new
AtomicInteger
(
0
);
public
int
getErroerLinkCount
()
{
// 线程安全,以原子方式将当前值加1,注意:这里返回的是自增前的值
return
erroerLinkCount
.
getAndIncrement
();
}
public
void
cleanErrorNum
()
{
// 清空计数
erroerLinkCount
=
new
AtomicInteger
(
0
);
}
public
Session
getSession
()
{
return
session
;
}
public
void
setSession
(
Session
session
)
{
this
.
session
=
session
;
}
public
Long
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
Long
userId
)
{
this
.
userId
=
userId
;
}
}
\ No newline at end of file
precision-effect-framework/src/main/java/com/zehong/framework/web/service/WebSocketServer.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
framework
.
web
.
service
;
import
com.alibaba.fastjson.JSONArray
;
import
com.zehong.common.utils.spring.SpringUtils
;
import
com.zehong.framework.web.domain.server.WebSocketBean
;
import
com.zehong.system.domain.SysNotice
;
import
com.zehong.system.service.ISysNoticeService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
javax.websocket.*
;
import
javax.websocket.server.PathParam
;
import
javax.websocket.server.ServerEndpoint
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.stream.Collectors
;
/**
* @author geng
* webSocket工具类
*/
@Component
@ServerEndpoint
(
"/webSocket/{roles}/{userId}"
)
public
class
WebSocketServer
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
WebSocketServer
.
class
);
/**
* 错误最大重试次数
*/
private
static
final
int
MAX_ERROR_NUM
=
10
;
/**
* 用来存放每个客户端对应的webSocket对象。
*/
private
static
Map
<
String
,
List
<
WebSocketBean
>>
webSocketInfo
;
static
{
// concurrent包的线程安全map
webSocketInfo
=
new
ConcurrentHashMap
<>();
}
@OnOpen
public
void
onOpen
(
Session
session
,
@PathParam
(
"roles"
)
String
roles
,
@PathParam
(
"userId"
)
String
userId
)
{
for
(
String
role
:
roles
.
split
(
","
)){
WebSocketBean
bean
=
new
WebSocketBean
();
bean
.
setSession
(
session
);
bean
.
setUserId
(
Long
.
valueOf
(
userId
));
if
(
webSocketInfo
.
containsKey
(
role
)){
List
<
WebSocketBean
>
beans
=
webSocketInfo
.
get
(
role
);
// 连接成功当前对象放入webSocket对象集合
beans
.
add
(
bean
);
sendMessage
(
bean
,
initNotice
(
userId
));
return
;
}
List
<
WebSocketBean
>
beans
=
new
ArrayList
<>();
beans
.
add
(
bean
);
webSocketInfo
.
put
(
role
,
beans
);
sendMessage
(
bean
,
initNotice
(
userId
));
}
log
.
info
(
"客户端连接服务器session id :"
+
session
.
getId
()+
",当前连接数:"
+
webSocketInfo
.
size
());
}
private
String
initNotice
(
String
userId
){
SysNotice
notice
=
new
SysNotice
();
notice
.
setUserId
(
Long
.
valueOf
(
userId
));
ISysNoticeService
sysNoticeService
=
SpringUtils
.
getBean
(
ISysNoticeService
.
class
);
List
<
SysNotice
>
notices
=
sysNoticeService
.
selectNoticeList
(
notice
);
if
(
CollectionUtils
.
isEmpty
(
notices
)){
return
""
;
}
return
JSONArray
.
toJSONString
(
notices
);
}
@OnClose
public
void
onClose
(
Session
session
)
{
// 客户端断开连接移除websocket对象
for
(
Map
.
Entry
<
String
,
List
<
WebSocketBean
>>
entry
:
webSocketInfo
.
entrySet
())
{
List
<
WebSocketBean
>
beans
=
entry
.
getValue
().
stream
().
filter
(
item
->
item
.
getSession
().
getId
().
equals
(
session
.
getId
())).
collect
(
Collectors
.
toList
());
entry
.
getValue
().
removeAll
(
beans
);
}
log
.
info
(
"客户端断开连接,当前连接数:"
+
webSocketInfo
.
size
());
}
@OnMessage
public
void
onMessage
(
Session
session
,
String
message
)
{
log
.
info
(
"客户端 session id: "
+
session
.
getId
()+
",消息:"
+
message
);
// 此方法为客户端给服务器发送消息后进行的处理,可以根据业务自己处理,这里返回页面
//sendMessage(session, "服务端返回" + message);
}
@OnError
public
void
onError
(
Session
session
,
Throwable
throwable
)
{
log
.
error
(
"发生错误"
+
throwable
.
getMessage
(),
throwable
);
}
/**
* 查找发送消息用户
* @param role 角色
* @param userId 用户id
* @param message 消息体
*/
public
void
findMessageUser
(
String
role
,
Long
userId
,
String
message
)
{
List
<
WebSocketBean
>
beans
=
webSocketInfo
.
get
(
role
);
if
(!
CollectionUtils
.
isEmpty
(
beans
)){
//发送给指定角色
if
(
null
==
userId
){
beans
.
forEach
(
item
->{
sendMessage
(
item
,
message
);
});
return
;
}
//发送给指定用户
List
<
WebSocketBean
>
userBean
=
beans
.
stream
().
filter
(
item
->
item
.
getUserId
().
equals
(
userId
)).
collect
(
Collectors
.
toList
());
userBean
.
stream
().
forEach
(
item
->
{
sendMessage
(
item
,
message
);
});
}
}
/**
* 发送消息
* @param bean webSocket对象
* @param message 消息体
*/
private
void
sendMessage
(
WebSocketBean
bean
,
String
message
)
{
try
{
// 发送消息
bean
.
getSession
().
getBasicRemote
().
sendText
(
message
);
// 清空错误计数
bean
.
cleanErrorNum
();
}
catch
(
Exception
e
){
log
.
error
(
"发送消息失败"
+
e
.
getMessage
(),
e
);
int
errorNum
=
bean
.
getErroerLinkCount
();
// 小于最大重试次数重发
if
(
errorNum
<=
MAX_ERROR_NUM
){
sendMessage
(
bean
,
message
);
}
else
{
log
.
error
(
"发送消息失败超过最大次数"
);
// 清空错误计数
bean
.
cleanErrorNum
();
}
}
}
}
precision-effect-system/src/main/java/com/zehong/system/domain/SysNotice.java
View file @
0de62006
package
com
.
zehong
.
system
.
domain
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Size
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.zehong.common.annotation.Excel
;
import
com.zehong.common.core.domain.BaseEntity
;
/**
* 通知公告
表
sys_notice
* 通知公告
对象
sys_notice
*
* @author zehong
* @date 2023-06-16
*/
public
class
SysNotice
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 公告ID */
private
Long
noticeId
;
private
Integer
noticeId
;
/** 公告标题 */
@Excel
(
name
=
"公告标题"
)
private
String
noticeTitle
;
/** 公告类型(1通知 2公告) */
@Excel
(
name
=
"公告类型"
,
readConverterExp
=
"1=通知,2=公告"
)
private
String
noticeType
;
/** 公告内容 */
@Excel
(
name
=
"公告内容"
)
private
String
noticeContent
;
/** 用户id */
@Excel
(
name
=
"用户id"
)
private
Long
userId
;
/** 公告状态(0正常 1关闭) */
@Excel
(
name
=
"公告状态"
,
readConverterExp
=
"0=正常,1=关闭"
)
private
String
status
;
public
Long
getNoticeId
()
public
void
setNoticeId
(
Integer
noticeId
)
{
return
noticeId
;
this
.
noticeId
=
noticeId
;
}
public
void
setNoticeId
(
Long
noticeId
)
public
Integer
getNoticeId
()
{
this
.
noticeId
=
noticeId
;
return
noticeId
;
}
public
void
setNoticeTitle
(
String
noticeTitle
)
public
void
setNoticeTitle
(
String
noticeTitle
)
{
this
.
noticeTitle
=
noticeTitle
;
}
@NotBlank
(
message
=
"公告标题不能为空"
)
@Size
(
min
=
0
,
max
=
50
,
message
=
"公告标题不能超过50个字符"
)
public
String
getNoticeTitle
()
public
String
getNoticeTitle
()
{
return
noticeTitle
;
}
public
void
setNoticeType
(
String
noticeType
)
public
void
setNoticeType
(
String
noticeType
)
{
this
.
noticeType
=
noticeType
;
}
public
String
getNoticeType
()
public
String
getNoticeType
()
{
return
noticeType
;
}
public
void
setNoticeContent
(
String
noticeContent
)
public
void
setNoticeContent
(
String
noticeContent
)
{
this
.
noticeContent
=
noticeContent
;
}
public
String
getNoticeContent
()
public
String
getNoticeContent
()
{
return
noticeContent
;
}
public
void
setUserId
(
Long
userId
)
{
this
.
userId
=
userId
;
}
public
void
setStatus
(
String
status
)
public
Long
getUserId
()
{
return
userId
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
public
String
getStatus
()
public
String
getStatus
()
{
return
status
;
}
...
...
@@ -89,6 +100,7 @@ public class SysNotice extends BaseEntity
.
append
(
"noticeTitle"
,
getNoticeTitle
())
.
append
(
"noticeType"
,
getNoticeType
())
.
append
(
"noticeContent"
,
getNoticeContent
())
.
append
(
"userId"
,
getUserId
())
.
append
(
"status"
,
getStatus
())
.
append
(
"createBy"
,
getCreateBy
())
.
append
(
"createTime"
,
getCreateTime
())
...
...
precision-effect-system/src/main/java/com/zehong/system/domain/TPurchase.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
system
.
domain
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
com.zehong.common.annotation.Excel
;
import
com.zehong.common.core.domain.BaseEntity
;
/**
* 外部采购(报销)申请对象 t_purchase
*
* @author zehong
* @date 2023-06-16
*/
public
class
TPurchase
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/** 采购主键 */
private
Long
purchaseId
;
/** 采购申请部门 */
@Excel
(
name
=
"采购申请部门"
)
private
Long
purchaseDeptId
;
public
Long
getHandled_by_user_id
()
{
return
handled_by_user_id
;
}
public
void
setHandled_by_user_id
(
Long
handled_by_user_id
)
{
this
.
handled_by_user_id
=
handled_by_user_id
;
}
private
Long
handled_by_user_id
;
/** 采购名称 */
@Excel
(
name
=
"采购名称"
)
private
String
purchaseName
;
/** 规格 */
@Excel
(
name
=
"规格"
)
private
String
specifications
;
/** 型号 */
@Excel
(
name
=
"型号"
)
private
String
modelType
;
/** 用途说明 */
@Excel
(
name
=
"用途说明"
)
private
String
applicationDescription
;
/** 使用人 */
@Excel
(
name
=
"使用人"
)
private
Long
userId
;
/** 单价 */
@Excel
(
name
=
"单价"
)
private
BigDecimal
price
;
/** 数量 */
@Excel
(
name
=
"数量"
)
private
Long
count
;
/** 总价 */
@Excel
(
name
=
"总价"
)
private
BigDecimal
total
;
/** 采购申请部门长 */
@Excel
(
name
=
"采购申请部门长"
)
private
Long
purchaseDeptManagerId
;
/** 审批人 */
@Excel
(
name
=
"审批人"
)
private
Long
approvedUserId
;
/** 是否删除:0否,1是 */
@Excel
(
name
=
"是否删除:0否,1是"
)
private
String
isDel
;
/** 采购状态:0.待部门长审核 1.核算部审批 2.完成 3.驳回 */
@Excel
(
name
=
"采购状态:0.待部门长审核 1.核算部审批 2.完成 3.驳回"
)
private
String
purchaseStatus
;
/** 审核时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"审核时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
approvedTime
;
public
void
setPurchaseId
(
Long
purchaseId
)
{
this
.
purchaseId
=
purchaseId
;
}
public
Long
getPurchaseId
()
{
return
purchaseId
;
}
public
void
setPurchaseDeptId
(
Long
purchaseDeptId
)
{
this
.
purchaseDeptId
=
purchaseDeptId
;
}
public
Long
getPurchaseDeptId
()
{
return
purchaseDeptId
;
}
public
void
setPurchaseName
(
String
purchaseName
)
{
this
.
purchaseName
=
purchaseName
;
}
public
String
getPurchaseName
()
{
return
purchaseName
;
}
public
void
setSpecifications
(
String
specifications
)
{
this
.
specifications
=
specifications
;
}
public
String
getSpecifications
()
{
return
specifications
;
}
public
void
setModelType
(
String
modelType
)
{
this
.
modelType
=
modelType
;
}
public
String
getModelType
()
{
return
modelType
;
}
public
void
setApplicationDescription
(
String
applicationDescription
)
{
this
.
applicationDescription
=
applicationDescription
;
}
public
String
getApplicationDescription
()
{
return
applicationDescription
;
}
public
void
setUserId
(
Long
userId
)
{
this
.
userId
=
userId
;
}
public
Long
getUserId
()
{
return
userId
;
}
public
void
setPrice
(
BigDecimal
price
)
{
this
.
price
=
price
;
}
public
BigDecimal
getPrice
()
{
return
price
;
}
public
void
setCount
(
Long
count
)
{
this
.
count
=
count
;
}
public
Long
getCount
()
{
return
count
;
}
public
void
setTotal
(
BigDecimal
total
)
{
this
.
total
=
total
;
}
public
BigDecimal
getTotal
()
{
return
total
;
}
public
void
setPurchaseDeptManagerId
(
Long
purchaseDeptManagerId
)
{
this
.
purchaseDeptManagerId
=
purchaseDeptManagerId
;
}
public
Long
getPurchaseDeptManagerId
()
{
return
purchaseDeptManagerId
;
}
public
void
setApprovedUserId
(
Long
approvedUserId
)
{
this
.
approvedUserId
=
approvedUserId
;
}
public
Long
getApprovedUserId
()
{
return
approvedUserId
;
}
public
void
setIsDel
(
String
isDel
)
{
this
.
isDel
=
isDel
;
}
public
String
getIsDel
()
{
return
isDel
;
}
public
void
setPurchaseStatus
(
String
purchaseStatus
)
{
this
.
purchaseStatus
=
purchaseStatus
;
}
public
String
getPurchaseStatus
()
{
return
purchaseStatus
;
}
public
void
setApprovedTime
(
Date
approvedTime
)
{
this
.
approvedTime
=
approvedTime
;
}
public
Date
getApprovedTime
()
{
return
approvedTime
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"purchaseId"
,
getPurchaseId
())
.
append
(
"purchaseDeptId"
,
getPurchaseDeptId
())
.
append
(
"purchaseName"
,
getPurchaseName
())
.
append
(
"specifications"
,
getSpecifications
())
.
append
(
"modelType"
,
getModelType
())
.
append
(
"applicationDescription"
,
getApplicationDescription
())
.
append
(
"userId"
,
getUserId
())
.
append
(
"price"
,
getPrice
())
.
append
(
"count"
,
getCount
())
.
append
(
"total"
,
getTotal
())
.
append
(
"purchaseDeptManagerId"
,
getPurchaseDeptManagerId
())
.
append
(
"approvedUserId"
,
getApprovedUserId
())
.
append
(
"remark"
,
getRemark
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"isDel"
,
getIsDel
())
.
append
(
"updateTime"
,
getUpdateTime
())
.
append
(
"purchaseStatus"
,
getPurchaseStatus
())
.
append
(
"approvedTime"
,
getApprovedTime
())
.
toString
();
}
}
precision-effect-system/src/main/java/com/zehong/system/mapper/TPurchaseMapper.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
system
.
mapper
;
import
java.util.List
;
import
com.zehong.system.domain.TPurchase
;
/**
* 外部采购(报销)申请Mapper接口
*
* @author zehong
* @date 2023-06-16
*/
public
interface
TPurchaseMapper
{
/**
* 查询外部采购(报销)申请
*
* @param purchaseId 外部采购(报销)申请ID
* @return 外部采购(报销)申请
*/
public
TPurchase
selectTPurchaseById
(
Long
purchaseId
);
/**
* 查询外部采购(报销)申请列表
*
* @param tPurchase 外部采购(报销)申请
* @return 外部采购(报销)申请集合
*/
public
List
<
TPurchase
>
selectTPurchaseList
(
TPurchase
tPurchase
);
/**
* 新增外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
public
int
insertTPurchase
(
TPurchase
tPurchase
);
/**
* 修改外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
public
int
updateTPurchase
(
TPurchase
tPurchase
);
/**
* 删除外部采购(报销)申请
*
* @param purchaseId 外部采购(报销)申请ID
* @return 结果
*/
public
int
deleteTPurchaseById
(
Long
purchaseId
);
/**
* 批量删除外部采购(报销)申请
*
* @param purchaseIds 需要删除的数据ID
* @return 结果
*/
public
int
deleteTPurchaseByIds
(
Long
[]
purchaseIds
);
}
precision-effect-system/src/main/java/com/zehong/system/service/ITPurchaseService.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
system
.
service
;
import
java.util.List
;
import
com.zehong.system.domain.TPurchase
;
/**
* 外部采购(报销)申请Service接口
*
* @author zehong
* @date 2023-06-16
*/
public
interface
ITPurchaseService
{
/**
* 查询外部采购(报销)申请
*
* @param purchaseId 外部采购(报销)申请ID
* @return 外部采购(报销)申请
*/
public
TPurchase
selectTPurchaseById
(
Long
purchaseId
);
/**
* 查询外部采购(报销)申请列表
*
* @param tPurchase 外部采购(报销)申请
* @return 外部采购(报销)申请集合
*/
public
List
<
TPurchase
>
selectTPurchaseList
(
TPurchase
tPurchase
);
/**
* 新增外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
public
int
insertTPurchase
(
TPurchase
tPurchase
);
/**
* 修改外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
public
int
updateTPurchase
(
TPurchase
tPurchase
);
/**
* 批量删除外部采购(报销)申请
*
* @param purchaseIds 需要删除的外部采购(报销)申请ID
* @return 结果
*/
public
int
deleteTPurchaseByIds
(
Long
[]
purchaseIds
);
/**
* 删除外部采购(报销)申请信息
*
* @param purchaseId 外部采购(报销)申请ID
* @return 结果
*/
public
int
deleteTPurchaseById
(
Long
purchaseId
);
}
precision-effect-system/src/main/java/com/zehong/system/service/impl/TPurchaseServiceImpl.java
0 → 100644
View file @
0de62006
package
com
.
zehong
.
system
.
service
.
impl
;
import
java.util.List
;
import
com.zehong.common.core.domain.entity.SysUser
;
import
com.zehong.common.utils.DateUtils
;
import
com.zehong.common.utils.SecurityUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.zehong.system.mapper.TPurchaseMapper
;
import
com.zehong.system.domain.TPurchase
;
import
com.zehong.system.service.ITPurchaseService
;
/**
* 外部采购(报销)申请Service业务层处理
*
* @author zehong
* @date 2023-06-16
*/
@Service
public
class
TPurchaseServiceImpl
implements
ITPurchaseService
{
@Autowired
private
TPurchaseMapper
tPurchaseMapper
;
/**
* 查询外部采购(报销)申请
*
* @param purchaseId 外部采购(报销)申请ID
* @return 外部采购(报销)申请
*/
@Override
public
TPurchase
selectTPurchaseById
(
Long
purchaseId
)
{
return
tPurchaseMapper
.
selectTPurchaseById
(
purchaseId
);
}
/**
* 查询外部采购(报销)申请列表
*
* @param tPurchase 外部采购(报销)申请
* @return 外部采购(报销)申请
*/
@Override
public
List
<
TPurchase
>
selectTPurchaseList
(
TPurchase
tPurchase
)
{
return
tPurchaseMapper
.
selectTPurchaseList
(
tPurchase
);
}
/**
* 新增外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
@Override
public
int
insertTPurchase
(
TPurchase
tPurchase
)
{
tPurchase
.
setCreateTime
(
DateUtils
.
getNowDate
());
SysUser
user
=
SecurityUtils
.
getLoginUser
().
getUser
();
tPurchase
.
setPurchaseDeptId
(
user
.
getDeptId
());
tPurchase
.
setHandled_by_user_id
(
user
.
getUserId
());
//经办人
return
tPurchaseMapper
.
insertTPurchase
(
tPurchase
);
}
/**
* 修改外部采购(报销)申请
*
* @param tPurchase 外部采购(报销)申请
* @return 结果
*/
@Override
public
int
updateTPurchase
(
TPurchase
tPurchase
)
{
tPurchase
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
tPurchaseMapper
.
updateTPurchase
(
tPurchase
);
}
/**
* 批量删除外部采购(报销)申请
*
* @param purchaseIds 需要删除的外部采购(报销)申请ID
* @return 结果
*/
@Override
public
int
deleteTPurchaseByIds
(
Long
[]
purchaseIds
)
{
return
tPurchaseMapper
.
deleteTPurchaseByIds
(
purchaseIds
);
}
/**
* 删除外部采购(报销)申请信息
*
* @param purchaseId 外部采购(报销)申请ID
* @return 结果
*/
@Override
public
int
deleteTPurchaseById
(
Long
purchaseId
)
{
return
tPurchaseMapper
.
deleteTPurchaseById
(
purchaseId
);
}
}
precision-effect-system/src/main/resources/mapper/business/TPurchaseMapper.xml
0 → 100644
View file @
0de62006
<?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=
"com.zehong.system.mapper.TPurchaseMapper"
>
<resultMap
type=
"TPurchase"
id=
"TPurchaseResult"
>
<result
property=
"purchaseId"
column=
"purchase_id"
/>
<result
property=
"purchaseDeptId"
column=
"purchase_dept_id"
/>
<result
property=
"purchaseName"
column=
"purchase_name"
/>
<result
property=
"specifications"
column=
"specifications"
/>
<result
property=
"modelType"
column=
"model_type"
/>
<result
property=
"applicationDescription"
column=
"application_description"
/>
<result
property=
"userId"
column=
"user_id"
/>
<result
property=
"price"
column=
"price"
/>
<result
property=
"count"
column=
"count"
/>
<result
property=
"total"
column=
"total"
/>
<result
property=
"purchaseDeptManagerId"
column=
"purchase_dept_manager_id"
/>
<result
property=
"approvedUserId"
column=
"approved_user_id"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"isDel"
column=
"is_del"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"purchaseStatus"
column=
"purchase_status"
/>
<result
property=
"approvedTime"
column=
"approved_time"
/>
</resultMap>
<sql
id=
"selectTPurchaseVo"
>
select purchase_id, purchase_dept_id, purchase_name, specifications, model_type, application_description, user_id, price, count, total, purchase_dept_manager_id, approved_user_id, remark, create_time, is_del, update_time, purchase_status, approved_time from t_purchase
</sql>
<select
id=
"selectTPurchaseList"
parameterType=
"TPurchase"
resultMap=
"TPurchaseResult"
>
<include
refid=
"selectTPurchaseVo"
/>
<where>
<if
test=
"purchaseDeptId != null "
>
and purchase_dept_id = #{purchaseDeptId}
</if>
<if
test=
"purchaseName != null and purchaseName != ''"
>
and purchase_name like concat('%', #{purchaseName}, '%')
</if>
<if
test=
"specifications != null and specifications != ''"
>
and specifications = #{specifications}
</if>
<if
test=
"modelType != null and modelType != ''"
>
and model_type = #{modelType}
</if>
<if
test=
"applicationDescription != null and applicationDescription != ''"
>
and application_description = #{applicationDescription}
</if>
<if
test=
"userId != null "
>
and user_id = #{userId}
</if>
<if
test=
"price != null "
>
and price = #{price}
</if>
<if
test=
"count != null "
>
and count = #{count}
</if>
<if
test=
"total != null "
>
and total = #{total}
</if>
<if
test=
"purchaseDeptManagerId != null "
>
and purchase_dept_manager_id = #{purchaseDeptManagerId}
</if>
<if
test=
"approvedUserId != null "
>
and approved_user_id = #{approvedUserId}
</if>
<if
test=
"isDel != null and isDel != ''"
>
and is_del = #{isDel}
</if>
<if
test=
"purchaseStatus != null and purchaseStatus != ''"
>
and purchase_status = #{purchaseStatus}
</if>
<if
test=
"approvedTime != null "
>
and approved_time = #{approvedTime}
</if>
</where>
</select>
<select
id=
"selectTPurchaseById"
parameterType=
"Long"
resultMap=
"TPurchaseResult"
>
<include
refid=
"selectTPurchaseVo"
/>
where purchase_id = #{purchaseId}
</select>
<insert
id=
"insertTPurchase"
parameterType=
"TPurchase"
>
insert into t_purchase
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"purchaseId != null"
>
purchase_id,
</if>
<if
test=
"purchaseDeptId != null"
>
purchase_dept_id,
</if>
<if
test=
"purchaseName != null"
>
purchase_name,
</if>
<if
test=
"specifications != null"
>
specifications,
</if>
<if
test=
"modelType != null"
>
model_type,
</if>
<if
test=
"applicationDescription != null"
>
application_description,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"price != null"
>
price,
</if>
<if
test=
"count != null"
>
count,
</if>
<if
test=
"total != null"
>
total,
</if>
<if
test=
"purchaseDeptManagerId != null"
>
purchase_dept_manager_id,
</if>
<if
test=
"approvedUserId != null"
>
approved_user_id,
</if>
<if
test=
"remark != null"
>
remark,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"isDel != null"
>
is_del,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"purchaseStatus != null"
>
purchase_status,
</if>
<if
test=
"approvedTime != null"
>
approved_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"purchaseId != null"
>
#{purchaseId},
</if>
<if
test=
"purchaseDeptId != null"
>
#{purchaseDeptId},
</if>
<if
test=
"purchaseName != null"
>
#{purchaseName},
</if>
<if
test=
"specifications != null"
>
#{specifications},
</if>
<if
test=
"modelType != null"
>
#{modelType},
</if>
<if
test=
"applicationDescription != null"
>
#{applicationDescription},
</if>
<if
test=
"userId != null"
>
#{userId},
</if>
<if
test=
"price != null"
>
#{price},
</if>
<if
test=
"count != null"
>
#{count},
</if>
<if
test=
"total != null"
>
#{total},
</if>
<if
test=
"purchaseDeptManagerId != null"
>
#{purchaseDeptManagerId},
</if>
<if
test=
"approvedUserId != null"
>
#{approvedUserId},
</if>
<if
test=
"remark != null"
>
#{remark},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
<if
test=
"isDel != null"
>
#{isDel},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
<if
test=
"purchaseStatus != null"
>
#{purchaseStatus},
</if>
<if
test=
"approvedTime != null"
>
#{approvedTime},
</if>
</trim>
</insert>
<update
id=
"updateTPurchase"
parameterType=
"TPurchase"
>
update t_purchase
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"purchaseDeptId != null"
>
purchase_dept_id = #{purchaseDeptId},
</if>
<if
test=
"purchaseName != null"
>
purchase_name = #{purchaseName},
</if>
<if
test=
"specifications != null"
>
specifications = #{specifications},
</if>
<if
test=
"modelType != null"
>
model_type = #{modelType},
</if>
<if
test=
"applicationDescription != null"
>
application_description = #{applicationDescription},
</if>
<if
test=
"userId != null"
>
user_id = #{userId},
</if>
<if
test=
"price != null"
>
price = #{price},
</if>
<if
test=
"count != null"
>
count = #{count},
</if>
<if
test=
"total != null"
>
total = #{total},
</if>
<if
test=
"purchaseDeptManagerId != null"
>
purchase_dept_manager_id = #{purchaseDeptManagerId},
</if>
<if
test=
"approvedUserId != null"
>
approved_user_id = #{approvedUserId},
</if>
<if
test=
"remark != null"
>
remark = #{remark},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"isDel != null"
>
is_del = #{isDel},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"purchaseStatus != null"
>
purchase_status = #{purchaseStatus},
</if>
<if
test=
"approvedTime != null"
>
approved_time = #{approvedTime},
</if>
</trim>
where purchase_id = #{purchaseId}
</update>
<delete
id=
"deleteTPurchaseById"
parameterType=
"Long"
>
delete from t_purchase where purchase_id = #{purchaseId}
</delete>
<delete
id=
"deleteTPurchaseByIds"
parameterType=
"String"
>
delete from t_purchase where purchase_id in
<foreach
item=
"purchaseId"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{purchaseId}
</foreach>
</delete>
</mapper>
\ No newline at end of file
precision-effect-system/src/main/resources/mapper/system/SysNoticeMapper.xml
View file @
0de62006
...
...
@@ -5,85 +5,92 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper
namespace=
"com.zehong.system.mapper.SysNoticeMapper"
>
<resultMap
type=
"SysNotice"
id=
"SysNoticeResult"
>
<result
property=
"noticeId"
column=
"notice_id"
/>
<result
property=
"noticeId"
column=
"notice_id"
/>
<result
property=
"noticeTitle"
column=
"notice_title"
/>
<result
property=
"noticeType"
column=
"notice_type"
/>
<result
property=
"noticeContent"
column=
"notice_content"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
<result
property=
"noticeType"
column=
"notice_type"
/>
<result
property=
"noticeContent"
column=
"notice_content"
/>
<result
property=
"userId"
column=
"user_id"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
</resultMap>
<sql
id=
"selectNoticeVo"
>
select notice_id, notice_title, notice_type, cast(notice_content as char) as notice_content, status, create_by, create_time, update_by, update_time, remark
from sys_notice
<sql
id=
"selectSysNoticeVo"
>
select notice_id, notice_title, notice_type, notice_content, user_id, status, create_by, create_time, update_by, update_time, remark from sys_notice
</sql>
<select
id=
"selectNoticeById"
parameterType=
"Long"
resultMap=
"SysNoticeResult"
>
<include
refid=
"selectNoticeVo"
/>
where notice_id = #{noticeId}
</select>
<select
id=
"selectNoticeList"
parameterType=
"SysNotice"
resultMap=
"SysNoticeResult"
>
<include
refid=
"selectNoticeVo"
/>
<where>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
AND notice_title like concat('%', #{noticeTitle}, '%')
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
AND notice_type = #{noticeType}
</if>
<if
test=
"createBy != null and createBy != ''"
>
AND create_by like concat('%', #{createBy}, '%')
</if>
</where>
<include
refid=
"selectSysNoticeVo"
/>
<where>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
and notice_title = #{noticeTitle}
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
and notice_type = #{noticeType}
</if>
<if
test=
"noticeContent != null and noticeContent != ''"
>
and notice_content = #{noticeContent}
</if>
<if
test=
"userId != null "
>
and user_id = #{userId}
</if>
<if
test=
"status != null and status != ''"
>
and status = #{status}
</if>
</where>
</select>
<insert
id=
"insertNotice"
parameterType=
"SysNotice"
>
insert into sys_notice (
<if
test=
"noticeTitle != null and noticeTitle != '' "
>
notice_title,
</if>
<if
test=
"noticeType != null and noticeType != '' "
>
notice_type,
</if>
<if
test=
"noticeContent != null and noticeContent != '' "
>
notice_content,
</if>
<if
test=
"status != null and status != '' "
>
status,
</if>
<if
test=
"remark != null and remark != ''"
>
remark,
</if>
<if
test=
"createBy != null and createBy != ''"
>
create_by,
</if>
create_time
)values(
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
#{noticeTitle},
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
#{noticeType},
</if>
<if
test=
"noticeContent != null and noticeContent != ''"
>
#{noticeContent},
</if>
<if
test=
"status != null and status != ''"
>
#{status},
</if>
<if
test=
"remark != null and remark != ''"
>
#{remark},
</if>
<if
test=
"createBy != null and createBy != ''"
>
#{createBy},
</if>
sysdate()
)
<select
id=
"selectNoticeById"
parameterType=
"Integer"
resultMap=
"SysNoticeResult"
>
<include
refid=
"selectSysNoticeVo"
/>
where notice_id = #{noticeId}
</select>
<insert
id=
"insertNotice"
parameterType=
"SysNotice"
useGeneratedKeys=
"true"
keyProperty=
"noticeId"
>
insert into sys_notice
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
notice_title,
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
notice_type,
</if>
<if
test=
"noticeContent != null"
>
notice_content,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"status != null"
>
status,
</if>
<if
test=
"createBy != null"
>
create_by,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"updateBy != null"
>
update_by,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"remark != null"
>
remark,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
#{noticeTitle},
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
#{noticeType},
</if>
<if
test=
"noticeContent != null"
>
#{noticeContent},
</if>
<if
test=
"userId != null"
>
#{userId},
</if>
<if
test=
"status != null"
>
#{status},
</if>
<if
test=
"createBy != null"
>
#{createBy},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
<if
test=
"updateBy != null"
>
#{updateBy},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
<if
test=
"remark != null"
>
#{remark},
</if>
</trim>
</insert>
<update
id=
"updateNotice"
parameterType=
"SysNotice"
>
update sys_notice
<set>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
notice_title = #{noticeTitle},
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
notice_type = #{noticeType},
</if>
<if
test=
"noticeContent != null"
>
notice_content = #{noticeContent},
</if>
<if
test=
"status != null and status != ''"
>
status = #{status},
</if>
<if
test=
"updateBy != null and updateBy != ''"
>
update_by = #{updateBy},
</if>
update_time = sysdate()
</set>
update sys_notice
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"noticeTitle != null and noticeTitle != ''"
>
notice_title = #{noticeTitle},
</if>
<if
test=
"noticeType != null and noticeType != ''"
>
notice_type = #{noticeType},
</if>
<if
test=
"noticeContent != null"
>
notice_content = #{noticeContent},
</if>
<if
test=
"userId != null"
>
user_id = #{userId},
</if>
<if
test=
"status != null"
>
status = #{status},
</if>
<if
test=
"createBy != null"
>
create_by = #{createBy},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateBy != null"
>
update_by = #{updateBy},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"remark != null"
>
remark = #{remark},
</if>
</trim>
where notice_id = #{noticeId}
</update>
<delete
id=
"deleteNoticeById"
parameterType=
"
Long
"
>
<delete
id=
"deleteNoticeById"
parameterType=
"
Integer
"
>
delete from sys_notice where notice_id = #{noticeId}
</delete>
<delete
id=
"deleteNoticeByIds"
parameterType=
"
Lo
ng"
>
<delete
id=
"deleteNoticeByIds"
parameterType=
"
Stri
ng"
>
delete from sys_notice where notice_id in
<foreach
item=
"noticeId"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{noticeId}
</foreach>
</delete>
</mapper>
\ No newline at end of file
precision-effect-web/src/api/transaction/purchase.js
0 → 100644
View file @
0de62006
import
request
from
'@/utils/request'
// 查询外部采购(报销)申请列表
export
function
listPurchase
(
query
)
{
return
request
({
url
:
'/system/purchase/list'
,
method
:
'get'
,
params
:
query
})
}
// 查询外部采购(报销)申请详细
export
function
getPurchase
(
purchaseId
)
{
return
request
({
url
:
'/system/purchase/'
+
purchaseId
,
method
:
'get'
})
}
// 新增外部采购(报销)申请
export
function
addPurchase
(
data
)
{
return
request
({
url
:
'/system/purchase'
,
method
:
'post'
,
data
:
data
})
}
// 修改外部采购(报销)申请
export
function
updatePurchase
(
data
)
{
return
request
({
url
:
'/system/purchase'
,
method
:
'put'
,
data
:
data
})
}
// 删除外部采购(报销)申请
export
function
delPurchase
(
purchaseId
)
{
return
request
({
url
:
'/system/purchase/'
+
purchaseId
,
method
:
'delete'
})
}
// 导出外部采购(报销)申请
export
function
exportPurchase
(
query
)
{
return
request
({
url
:
'/system/purchase/export'
,
method
:
'get'
,
params
:
query
})
}
\ No newline at end of file
precision-effect-web/src/layout/components/Message/Message.vue
0 → 100644
View file @
0de62006
<
template
>
<div
class=
"instantMessage"
>
<el-dropdown
trigger=
"click"
:popper-append-to-body=
"false"
style=
"height: 30px"
>
<div>
<el-badge
:value=
"this.msgInfo.length"
:max=
"99"
class=
"messageMark"
>
<!--
<i
class=
"el-icon-chat-dot-round"
/>
-->
<i
class=
"el-icon-message-solid messageDing"
/>
</el-badge>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-if=
"this.msgInfo.length == 0"
>
<span>
暂无消息
</span>
</el-dropdown-item>
<div
v-if=
"this.msgInfo.length >= 0"
>
<el-row>
<el-col
:span=
"12"
>
<el-dropdown-item>
标题
</el-dropdown-item>
</el-col>
<el-col
:span=
"12"
>
<el-dropdown-item>
类型
</el-dropdown-item>
</el-col>
</el-row>
<el-row
v-for=
"item in msgInfo"
>
<el-col
:span=
"12"
>
<el-dropdown-item
class=
"region-item-style"
>
{{
item
.
noticeTitle
}}
</el-dropdown-item>
</el-col>
<el-col
:span=
"12"
>
<el-dropdown-item
v-if=
"item.noticeType == '1'"
>
通知
</el-dropdown-item>
<el-dropdown-item
v-if=
"item.noticeType == '2'"
>
公告
</el-dropdown-item>
</el-col>
</el-row>
</div>
</el-dropdown-menu>
</el-dropdown>
</div>
</
template
>
<
script
>
export
default
{
name
:
"message"
,
data
(){
return
{
msgInfo
:
{}
}
},
created
(){
//登录成功后创建websocket
this
.
$websocket
.
initWebSocket
(
"ws://localhost:8668/precisionEffect/webSocket/"
+
this
.
$store
.
state
.
user
.
roles
.
join
(
","
)
+
"/"
+
this
.
$store
.
state
.
user
.
userId
);
this
.
$websocket
.
addEvent
(
"onmessage"
,(
msg
)
=>
{
console
.
log
(
"您有新的消息请注意接收:"
,
JSON
.
parse
(
msg
.
data
));
this
.
msgInfo
=
JSON
.
parse
(
msg
.
data
);
console
})
},
methods
:{
}
}
</
script
>
<
style
>
.region-item-style
{
max-width
:
200px
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
}
</
style
>
<
style
scoped
lang=
"scss"
>
.instantMessage
{
display
:
inline
;
.messageMark
{
width
:
25px
;
height
:
60px
;
margin-right
:
9px
;
}
.messageDing
{
font-size
:
28px
;
color
:
#5a5e66
;
position
:
relative
;
top
:
-5px
;
}
}
</
style
>
precision-effect-web/src/layout/components/Navbar.vue
View file @
0de62006
...
...
@@ -16,7 +16,7 @@
<!--
</el-tooltip>
-->
</
template
>
<Message/>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<!-- <img :src="avatar" class="user-avatar">-->
...
...
@@ -48,7 +48,7 @@ import Hamburger from '@/components/Hamburger'
import
Screenfull
from
'@/components/Screenfull'
import
SizeSelect
from
'@/components/SizeSelect'
import
Search
from
'@/components/HeaderSearch'
import
Message
from
"./Message/Message"
;
export
default
{
components
:
{
Breadcrumb
,
...
...
@@ -56,7 +56,8 @@ export default {
Hamburger
,
Screenfull
,
SizeSelect
,
Search
Search
,
Message
},
computed
:
{
...
mapGetters
([
...
...
@@ -94,6 +95,8 @@ export default {
type
:
'warning'
}).
then
(()
=>
{
this
.
$store
.
dispatch
(
'LogOut'
).
then
(()
=>
{
//关闭websocket
this
.
$websocket
.
close
();
location
.
href
=
'/index'
;
})
}).
catch
(()
=>
{});
...
...
precision-effect-web/src/main.js
View file @
0de62006
...
...
@@ -71,3 +71,6 @@ new Vue({
store
,
render
:
h
=>
h
(
App
)
})
import
websocket
from
"@/utils/websocket.js"
;
Vue
.
prototype
.
$websocket
=
websocket
;
precision-effect-web/src/utils/websocket.js
0 → 100644
View file @
0de62006
import
ElementUI
from
'element-ui'
;
let
lockReconnect
=
false
;
let
socket
;
let
timer
;
let
count
=
10
;
let
wsUrl
;
function
initWebSocket
(
wsUri
)
{
wsUrl
=
wsUri
;
//这里面的this都指向vue
socket
=
new
WebSocket
(
wsUri
);
socket
.
onerror
=
webSocketOnError
;
socket
.
onclose
=
closeWebsocket
;
socket
.
onopen
=
openWebsocket
;
}
//错误事件监听
function
webSocketOnError
(
e
)
{
ElementUI
.
Notification
({
title
:
''
,
message
:
"WebSocket连接发生错误"
+
e
,
type
:
'error'
,
duration
:
0
,
});
}
// websocket关闭监听事件
function
closeWebsocket
()
{
reconnect
();
}
//开始事件
function
openWebsocket
()
{
if
(
timer
){
clearInterval
(
timer
);
}
}
// 关闭 websocket
function
close
()
{
lockReconnect
=
true
;
socket
.
close
();
}
//消息发送
function
webSocketSend
(
agentData
)
{
socket
.
send
(
agentData
);
}
//重连机制
function
reconnect
(){
if
(
lockReconnect
){
return
}
lockReconnect
=
true
;
//没连接上会一直重连,设置延迟避免请求过多
timer
=
setTimeout
(
function
(){
count
--
;
initWebSocket
(
wsUrl
);
this
.
lockReconnect
=
false
if
(
count
==
0
){
clearInterval
(
timer
);
}
},
2000
)
}
//监听事件添加
function
addEvent
(
type
,
event
){
if
(
type
==
"onopen"
){
socket
.
onopen
=
event
;
}
else
if
(
type
==
"onmessage"
){
socket
.
onmessage
=
event
;
}
else
if
(
type
==
"onclose"
){
socket
.
onclose
=
event
;
}
else
if
(
type
==
"onerror"
){
socket
.
onerror
=
event
;
}
else
{
socket
.
addEventListener
(
type
,
event
);
}
}
export
default
{
initWebSocket
,
close
,
addEvent
}
precision-effect-web/src/views/purchase/index.vue
0 → 100644
View file @
0de62006
This diff is collapsed.
Click to expand it.
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