Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jyzb_platformV2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
赵剑炜
jyzb_platformV2
Commits
f07ab58d
Commit
f07ab58d
authored
Nov 14, 2023
by
李小惠
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改消息推送接口代码
parent
34a2ffa4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
204 行增加
和
68 行删除
+204
-68
InvExpireReq.java
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/req/InvExpireReq.java
+29
-0
Inventory.java
jyzb-biz/src/main/java/com/junmp/jyzb/entity/Inventory.java
+6
-0
InventoryMapper.java
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventoryMapper.java
+7
-0
OrderMainServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/OrderMainServiceImpl.java
+0
-0
InvExpireMsg.java
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvExpireMsg.java
+77
-41
InvOverDueMsg.java
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvOverDueMsg.java
+40
-27
InventoryMapper.xml
jyzb-biz/src/main/resources/mapper/InventoryMapper.xml
+45
-0
没有找到文件。
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/req/InvExpireReq.java
0 → 100644
View file @
f07ab58d
package
com
.
junmp
.
jyzb
.
api
.
bean
.
req
;
import
lombok.Data
;
/**
* 过质保期的数据汇总数据
*/
@Data
public
class
InvExpireReq
{
private
String
typeId
;
private
String
typeName
;
private
String
sizeId
;
private
String
sizeName
;
private
Long
orgId
;
private
String
locationId
;
private
String
locationName
;
private
Integer
sumExpireNumber
;
private
String
userId
;
}
jyzb-biz/src/main/java/com/junmp/jyzb/entity/Inventory.java
View file @
f07ab58d
...
...
@@ -88,6 +88,12 @@ public class Inventory implements Serializable {
private
Long
orgId
;
/**
* 组织机构名称
*/
@TableField
(
exist
=
false
)
private
String
orgName
;
/**
* 规格尺寸
*/
private
String
state
;
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventoryMapper.java
View file @
f07ab58d
...
...
@@ -8,6 +8,7 @@ import com.junmp.jyzb.api.bean.dto.EqsSumDto;
import
com.junmp.jyzb.api.bean.dto.InventoryDto
;
import
com.junmp.jyzb.api.bean.query.InventoryReq
;
import
com.junmp.jyzb.api.bean.req.BatchEditingInvsReq
;
import
com.junmp.jyzb.api.bean.req.InvExpireReq
;
import
com.junmp.jyzb.api.bean.vo.InventoryVo
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.InventorySummary
;
...
...
@@ -67,4 +68,9 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
//根据epc获取装备信息
List
<
InventoryDto
>
GetInvInfoByEpc
(
@Param
(
"list"
)
List
<
String
>
epcList
);
//通过组织机构id获取组织机构下的userIdlist
List
<
InvExpireReq
>
selectUserListByOrgs
(
@Param
(
"list"
)
List
<
Long
>
uniqueOrgIDsList
);
List
<
Inventory
>
searchExpireEqs
(
@Param
(
"list"
)
List
<
Object
[]>
searchItem
);
}
\ No newline at end of file
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/OrderMainServiceImpl.java
View file @
f07ab58d
差异被折叠。
点击展开。
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvExpireMsg.java
View file @
f07ab58d
...
...
@@ -5,12 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.junmp.jyzb.api.bean.req.InvExpireReq
;
import
com.junmp.jyzb.api.util.GenCodeUtil
;
import
com.junmp.jyzb.entity.Company
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.InventorySummary
;
import
com.junmp.jyzb.entity.ProductSku
;
import
com.junmp.jyzb.mapper.ExpireMapper
;
import
com.junmp.jyzb.mapper.InventoryMapper
;
import
com.junmp.jyzb.mapper.MsgMapper
;
import
com.junmp.jyzb.service.InventoryService
;
import
com.junmp.v2.common.util.BeanPlusUtil
;
...
...
@@ -26,10 +28,7 @@ import org.springframework.stereotype.Component;
import
javax.annotation.Resource
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
...
...
@@ -48,6 +47,9 @@ public class InvExpireMsg implements JobAction {
private
InventoryService
inventoryService
;
@Resource
private
InventoryMapper
inventoryMapper
;
@Resource
private
MessageApi
messageApi
;
@Resource
...
...
@@ -60,65 +62,99 @@ public class InvExpireMsg implements JobAction {
int
pageSize
=
1000
;
// 每页记录数,可以根据需求调整
int
currentPage
=
1
;
// 当前页数
//所有待判断的物资
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
//所有待判断的物资(只获取仓库下的过质保期数量)
//除去销毁出库数
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
wrapper
.
ne
(
Inventory:
:
getState
,
"destory"
);
//获取未超期的物资数量
long
termCount
=
inventoryService
.
count
(
wrapper
);
List
<
Inventory
>
list
=
new
ArrayList
<>();
if
(
termCount
>
0
)
{
// 分页查询
while
((
currentPage
-
1
)
*
pageSize
<
termCount
)
{
List
<
Inventory
>
inventoryList
=
processPageData
(
currentPage
,
pageSize
);
int
startPageSize
=(
currentPage
-
1
)
*
pageSize
;
List
<
Inventory
>
inventoryList
=
processPageData
(
startPageSize
,
pageSize
);
currentPage
++;
list
.
addAll
(
inventoryList
);
}
}
//超期物资查询出来之后,将超期物资进行消息推送提醒
//直接对list进行处理操作推送消息即可
for
(
Inventory
inventory:
list
)
{
MessageSendReq
sendReq
=
new
MessageSendReq
();
sendReq
.
setSendUserId
(
"1000"
);
sendReq
.
setReceiveUserIds
(
"1000"
);
sendReq
.
setMsgTitle
(
"物资过质保期"
);
//设置业务类型
SysDictItem
one
=
sysDictItemService
.
getOne
(
new
LambdaQueryWrapper
<
SysDictItem
>()
.
eq
(
SysDictItem:
:
getDictItemId
,
"expire"
));
sendReq
.
setBizType
(
one
.
getItemValue
());
sendReq
.
setMsgContent
(
"仓库下的装备的物资已经过质保期"
);
sendReq
.
setPriority
(
"0"
);
sendReq
.
setSendTime
(
DateTime
.
now
());
messageApi
.
sendMessage
(
sendReq
);
//需要对该所有超期物资进行分组
List
<
InvExpireReq
>
invExpireReqList
=
new
ArrayList
<>();
List
<
Long
>
orgIdsList
=
new
ArrayList
<>();
for
(
Inventory
inventory
:
list
)
{
if
(
invExpireReqList
.
size
()==
0
){
InvExpireReq
invExpireReq
=
new
InvExpireReq
();
BeanPlusUtil
.
copyProperties
(
inventory
,
invExpireReq
);
invExpireReq
.
setSumExpireNumber
(
1
);
invExpireReqList
.
add
(
invExpireReq
);
orgIdsList
.
add
(
inventory
.
getOrgId
());
continue
;
}
boolean
found
=
false
;
for
(
InvExpireReq
groupedSum
:
invExpireReqList
)
{
if
(
groupedSum
.
getOrgId
().
equals
(
inventory
.
getOrgId
())
&&
groupedSum
.
getLocationId
().
equals
(
inventory
.
getLocationId
())
&&
groupedSum
.
getSizeId
().
equals
(
inventory
.
getSizeId
())
&&
groupedSum
.
getTypeId
().
equals
(
inventory
.
getTypeId
()))
{
groupedSum
.
setSumExpireNumber
(
groupedSum
.
getSumExpireNumber
()+
1
);
found
=
true
;
break
;
}
}
if
(!
found
)
{
InvExpireReq
invExpireReq
=
new
InvExpireReq
();
BeanPlusUtil
.
copyProperties
(
inventory
,
invExpireReq
);
invExpireReq
.
setSumExpireNumber
(
1
);
invExpireReqList
.
add
(
invExpireReq
);
orgIdsList
.
add
(
inventory
.
getOrgId
());
}
}
messageApi
.
queryCount
(
new
MessageReq
());
//根据分好组的数据查询出所有的需要被提醒的组织机构id,并且查询出组织机构下的仓管员信息,并且将消息进行推送
//再将汇总list进行遍历获取不重复的组织机构
Set
<
Long
>
uniqueOrgIDs
=
new
HashSet
<>(
orgIdsList
);
List
<
Long
>
uniqueOrgIDsList
=
new
ArrayList
<>(
uniqueOrgIDs
);
//查询组织机构下面的所有仓管员的useId
List
<
InvExpireReq
>
userIdsList
=
inventoryMapper
.
selectUserListByOrgs
(
uniqueOrgIDsList
);
//获取到之后,将该条信息进行消息推送
for
(
InvExpireReq
invExpireReq:
invExpireReqList
)
{
for
(
InvExpireReq
userIds:
userIdsList
)
{
if
(
invExpireReq
.
getOrgId
()==
userIds
.
getOrgId
()){
MessageSendReq
sendReq
=
new
MessageSendReq
();
sendReq
.
setReceiveUserIds
(
userIds
.
getUserId
());
sendReq
.
setMsgTitle
(
"过质保期提醒"
);
sendReq
.
setBizType
(
"过质保提醒"
);
sendReq
.
setMsgContent
(
invExpireReq
.
getLocationName
()+
"下的"
+
invExpireReq
.
getTypeName
()+
invExpireReq
.
getSizeName
()+
"装备已经过质保期,数量为"
+
invExpireReq
.
getSumExpireNumber
());
sendReq
.
setPriority
(
"0"
);
sendReq
.
setSendTime
(
DateTime
.
now
());
messageApi
.
sendMessage
(
sendReq
);
}
}
}
/*推送发送未读数量*/
List
<
Long
>
userIdList
=
new
ArrayList
<>();
userIdList
.
add
(
1000L
);
for
(
Long
userId
:
userIdList
){
for
(
InvExpireReq
userIds:
userIdsList
){
MessageReq
req1
=
new
MessageReq
();
req1
.
setReadFlag
(
0
);
req1
.
setReceiveUserId
(
userId
);
req1
.
setReceiveUserId
(
Long
.
parseLong
(
userIds
.
getUserId
())
);
Integer
count1
=
messageApi
.
queryCount
(
req1
);
messageApi
.
pushMsgToUser
(
String
.
valueOf
(
userId
),
count1
);
messageApi
.
pushMsgToUser
(
userIds
.
getUserId
(
),
count1
);
}
}
// 处理每页数据
private
List
<
Inventory
>
processPageData
(
long
p
ageSize
,
long
currentPage
)
private
List
<
Inventory
>
processPageData
(
long
startP
ageSize
,
long
currentPage
)
{
LocalDate
localdate
=
LocalDate
.
now
();
// 使用LambdaQueryWrapper构建查询条件
LambdaQueryWrapper
<
Inventory
>
wrapper
=
Wrappers
.
lambdaQuery
();
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
//如果 生产日期 < 当前日期减去质保数,表示该装备已经超过质保期
wrapper
.
apply
(
"production_date <= DATE_SUB({0}, INTERVAL warranty_period DAY)"
,
localdate
);
//获取过质保期的物资信息
List
<
Inventory
>
page
=
inventoryService
.
page
(
PageFactory
.
getDefaultPage
(
pageSize
,
currentPage
),
wrapper
).
getRecords
();
page
.
forEach
(
o
->
o
.
setTermState
(
1
));
inventoryService
.
saveOrUpdateBatch
(
page
);
return
page
;
// Page<Inventory> page = inventoryService.page(PageFactory.getDefaultPage(), wrapper)
List
<
Object
[]>
searchItem
=
new
ArrayList
<>();
Object
[]
criteria
=
new
Object
[]{
0
,
"destory"
,
startPageSize
,
currentPage
};
searchItem
.
add
(
criteria
);
List
<
Inventory
>
list
=
inventoryMapper
.
searchExpireEqs
(
searchItem
);
list
.
forEach
(
o
->
o
.
setTermState
(
1
));
inventoryService
.
saveOrUpdateBatch
(
list
);
return
list
;
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvOverDueMsg.java
View file @
f07ab58d
...
...
@@ -2,7 +2,9 @@ package com.junmp.jyzb.task;
import
cn.hutool.core.date.DateTime
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.junmp.jyzb.api.bean.req.InvExpireReq
;
import
com.junmp.jyzb.entity.OrderMain
;
import
com.junmp.jyzb.mapper.InventoryMapper
;
import
com.junmp.jyzb.service.OrderMainService
;
import
com.junmp.jyzb.utils.DateTimeUtil
;
import
com.junmp.v2.db.api.factory.PageFactory
;
...
...
@@ -16,9 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.*
;
/**
* @author lxh
...
...
@@ -37,14 +37,17 @@ public class InvOverDueMsg implements JobAction {
private
MessageApi
messageApi
;
@Resource
private
InventoryMapper
inventoryMapper
;
@Resource
private
SysDictItemService
sysDictItemService
;
@Override
public
void
action
()
{
//获取超期物资
//先查询出 出入库单据为
借
用单的数据
//先查询出 出入库单据为
领
用单的数据
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
.
eq
(
OrderMain:
:
getBussinessType
,
"
borrow
"
)
.
eq
(
OrderMain:
:
getBussinessType
,
"
use
"
)
.
eq
(
OrderMain:
:
getOrderType
,
"out"
);
int
pageSize
=
1000
;
int
currentPage
=
1
;
...
...
@@ -59,32 +62,41 @@ public class InvOverDueMsg implements JobAction {
}
}
//将消息进行推送
//我需要将orgId进行查询并去重
Set
<
Long
>
uniqueOrgIDs
=
new
HashSet
<>();
for
(
OrderMain
orderMain:
list
)
{
MessageSendReq
sendReq
=
new
MessageSendReq
();
sendReq
.
setSendUserId
(
"1000"
);
//接收用户id先写死,后面再修改
sendReq
.
setReceiveUserIds
(
"1000"
);
sendReq
.
setMsgTitle
(
"物资超期"
);
//设置业务类型
SysDictItem
one
=
sysDictItemService
.
getOne
(
new
LambdaQueryWrapper
<
SysDictItem
>()
.
eq
(
SysDictItem:
:
getDictItemId
,
"over_due"
));
sendReq
.
setBizType
(
one
.
getItemValue
());
sendReq
.
setMsgContent
(
"单据id为:"
+
orderMain
.
getId
()+
"的物资超期,请及时查看提醒"
);
sendReq
.
setPriority
(
"0"
);
sendReq
.
setSendTime
(
DateTime
.
now
());
messageApi
.
sendMessage
(
sendReq
);
uniqueOrgIDs
.
add
(
orderMain
.
getStartOrgId
());
}
messageApi
.
queryCount
(
new
MessageReq
());
List
<
Long
>
uniqueOrgIDsList
=
new
ArrayList
<>(
uniqueOrgIDs
);
//查询组织机构下面的所有仓管员的useId
List
<
InvExpireReq
>
userIdsList
=
inventoryMapper
.
selectUserListByOrgs
(
uniqueOrgIDsList
);
for
(
OrderMain
orderMain:
list
)
{
for
(
InvExpireReq
userIds:
userIdsList
)
{
if
(
orderMain
.
getStartOrgId
()==
userIds
.
getOrgId
()){
MessageSendReq
sendReq
=
new
MessageSendReq
();
sendReq
.
setReceiveUserIds
(
userIds
.
getUserId
());
sendReq
.
setMsgTitle
(
"物资超期提醒"
);
sendReq
.
setBizType
(
"超期提醒"
);
//设置业务类型
// SysDictItem one = sysDictItemService.getOne(new LambdaQueryWrapper<SysDictItem>()
// .eq(SysDictItem::getDictItemId, "over_due"));
// sendReq.setBizType(one.getItemValue());
sendReq
.
setMsgContent
(
"单据id为:"
+
orderMain
.
getId
()+
"的领用单已超期,请及时查看处理"
);
sendReq
.
setPriority
(
"0"
);
sendReq
.
setSendTime
(
DateTime
.
now
());
messageApi
.
sendMessage
(
sendReq
);
}
}
}
/*推送发送未读数量*/
//添加需要将消息推送的userid,先写死,可以查询数据库表动态设置userid;
List
<
Long
>
userIdList
=
new
ArrayList
<>();
userIdList
.
add
(
1000L
);
for
(
Long
userId
:
userIdList
){
for
(
InvExpireReq
userIds:
userIdsList
){
MessageReq
req1
=
new
MessageReq
();
req1
.
setReadFlag
(
0
);
req1
.
setReceiveUserId
(
userId
);
req1
.
setReceiveUserId
(
Long
.
parseLong
(
userIds
.
getUserId
())
);
Integer
count1
=
messageApi
.
queryCount
(
req1
);
messageApi
.
pushMsgToUser
(
String
.
valueOf
(
userId
),
count1
);
messageApi
.
pushMsgToUser
(
userIds
.
getUserId
(
),
count1
);
}
}
...
...
@@ -94,9 +106,10 @@ public class InvOverDueMsg implements JobAction {
//获取对应的借用单据数据
Date
currentDateTime
=
DateTimeUtil
.
getCurrentDateTime
();
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
.
eq
(
OrderMain:
:
getBussinessType
,
"
borrow
"
)
.
eq
(
OrderMain:
:
getBussinessType
,
"
use
"
)
.
eq
(
OrderMain:
:
getOrderType
,
"out"
)
.
lt
(
OrderMain:
:
getReturnDate
,
currentDateTime
);
.
lt
(
OrderMain:
:
getReturnDate
,
currentDateTime
)
.
isNotNull
(
OrderMain:
:
getReturnDate
);
List
<
OrderMain
>
records
=
orderMainService
.
page
(
PageFactory
.
getDefaultPage
(
pageSize
,
currentPage
),
wrapper
).
getRecords
();
return
records
;
}
...
...
jyzb-biz/src/main/resources/mapper/InventoryMapper.xml
View file @
f07ab58d
...
...
@@ -500,6 +500,50 @@
#{item}
</foreach>
</select>
<select
id=
"selectUserListByOrgs"
resultType=
"com.junmp.jyzb.api.bean.req.InvExpireReq"
>
select suo.user_id,suo.org_id FROM sys_user_org suo
JOIN sys_user_role sur ON suo.user_id=sur.user_id
JOIN sys_role sr ON sur.role_id=sr.role_id and sr.role_id="1528003832557232130"
where suo.org_id in
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</select>
<select
id=
"searchExpireEqs"
resultType=
"com.junmp.jyzb.entity.Inventory"
>
SELECT
bi.size_id AS size_id,
bes.name AS size_name,
bi.type_id,
bet.name AS type_name,
bi.org_id_int AS org_id,
COALESCE(bcb.cabinet_id, bw.id) AS location_id,
COALESCE(MAX(bc.name), MAX(bw.name)) AS location_name
FROM
base_inventory bi
JOIN base_equipment_size bes ON bi.size_id = bes.id
JOIN base_equipment_type bet ON bi.type_id = bet.id
LEFT JOIN base_cabinet_box bcb ON bi.location_id = bcb.id AND bi.location_type = 1
LEFT JOIN base_cabinet bc ON bcb.cabinet_id = bc.id
LEFT JOIN base_warehouse bw ON bi.location_id = bw.id AND bi.location_type = 0
WHERE
bi.warranty_period != 0
AND DATE_ADD(bi.production_date, INTERVAL bi.warranty_period MONTH) > NOW()
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
AND bi.term_state = ${item[0]}
AND bi.state != '${item[1]}'
</foreach>
GROUP BY
bi.size_id,
bes.name,
bi.type_id,
bet.name,
bi.org_id_int,
COALESCE(bcb.cabinet_id, bw.id)
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
limit ${item[2]},${item[3]}
</foreach>
</select>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论