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 个修改的文件
包含
206 行增加
和
262 行删除
+206
-262
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
+2
-194
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 {
...
@@ -88,6 +88,12 @@ public class Inventory implements Serializable {
private
Long
orgId
;
private
Long
orgId
;
/**
/**
* 组织机构名称
*/
@TableField
(
exist
=
false
)
private
String
orgName
;
/**
* 规格尺寸
* 规格尺寸
*/
*/
private
String
state
;
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;
...
@@ -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.dto.InventoryDto
;
import
com.junmp.jyzb.api.bean.query.InventoryReq
;
import
com.junmp.jyzb.api.bean.query.InventoryReq
;
import
com.junmp.jyzb.api.bean.req.BatchEditingInvsReq
;
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.api.bean.vo.InventoryVo
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.InventorySummary
;
import
com.junmp.jyzb.entity.InventorySummary
;
...
@@ -67,4 +68,9 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
...
@@ -67,4 +68,9 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
//根据epc获取装备信息
//根据epc获取装备信息
List
<
InventoryDto
>
GetInvInfoByEpc
(
@Param
(
"list"
)
List
<
String
>
epcList
);
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
...
@@ -857,181 +857,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
...
@@ -857,181 +857,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
}
}
//快速生成入库单
@Override
public
boolean
addQuickOrder
(
OrderMain
existOrder
)
{
//创建新的orderMain入库单
OrderMain
orderMain
=
new
OrderMain
();
BeanPlusUtil
.
copyProperties
(
existOrder
,
orderMain
);
orderMain
.
setEndOrgId
(
existOrder
.
getStartOrgId
());
orderMain
.
setEndOrgName
(
existOrder
.
getStartOrgName
());
orderMain
.
setOrderType
(
"in"
);
orderMain
.
setId
(
UUID
.
randomUUID
().
toString
());
//工作流流程设为空
orderMain
.
setProcessId
(
null
);
//修改订单编号,设置为入库的单号
UpdateOrderReq
req
=
new
UpdateOrderReq
();
BeanPlusUtil
.
copyProperties
(
orderMain
,
req
);
OrderNum
orderNum
=
setOrderCode
(
req
);
String
codeValue
=
String
.
format
(
"%04d"
,
orderNum
.
getNum
());
orderMain
.
setOrderCode
(
orderNum
.
getBussinessType
()+
orderNum
.
getYear
()+
String
.
format
(
"%02d"
,
LocalDateTime
.
now
().
getMonth
().
getValue
())+
String
.
format
(
"%02d"
,
LocalDateTime
.
now
().
getDayOfMonth
())+
codeValue
);
//保存入库单
save
(
orderMain
);
//查询出库子单用于赋值到入库单中
List
<
OrderDetail
>
list
=
orderDetailService
.
list
(
new
LambdaQueryWrapper
<
OrderDetail
>()
.
eq
(
OrderDetail:
:
getOrderId
,
existOrder
.
getId
()));
//查询条件,将所有查询条件放在searchCriteria中,用于修改库存表中的装备的仓库位置
//原来出库单的查询条件list(根据条件查询库存汇总表中包含有相同条件的数据)
List
<
Object
[]>
searchCriteria
=
new
ArrayList
<>();
//新建的入库单查询条件list(根据条件查询库存汇总表中是否包含有相同条件的数据)
List
<
Object
[]>
updateCriteria
=
new
ArrayList
<>();
//仓库id
String
locationId
=
orderMain
.
getLocationId
();
//创建入库单子单
List
<
OrderDetail
>
collect
=
list
.
stream
().
map
(
orderDetail
->
{
OrderDetail
orderDetail1
=
new
OrderDetail
();
BeanPlusUtil
.
copyProperties
(
orderDetail
,
orderDetail1
);
//修改主单据id
orderDetail1
.
setOrderId
(
orderMain
.
getId
());
//修改单据出入状态
orderDetail1
.
setType
(
"in"
);
//修改仓库id
orderDetail1
.
setWarehouseId
(
locationId
);
orderDetail1
.
setWarehouseName
(
orderMain
.
getLocationName
());
Object
[]
criteria
=
new
Object
[]{
existOrder
.
getStartOrgId
(),
orderDetail
.
getWarehouseId
(),
orderDetail
.
getTypeId
(),
orderDetail
.
getSizeId
(),
orderDetail
.
getPrice
()};
searchCriteria
.
add
(
criteria
);
Object
[]
update
=
new
Object
[]{
orderMain
.
getEndOrgId
(),
locationId
,
orderDetail1
.
getTypeId
(),
orderDetail1
.
getSizeId
(),
orderDetail1
.
getPrice
()};
updateCriteria
.
add
(
update
);
return
orderDetail1
;
}).
collect
(
Collectors
.
toList
());
orderDetailService
.
saveBatch
(
collect
);
//将summary汇总表中数据进行修改(修改该组织机构下的装备汇总信息将库存信息的在库数,库存总数,总价还有其他数据数量进行修改)
//那么首先将原来的仓库下的装备汇总信息进行查询出来,对其进行修改
List
<
InventorySummary
>
oldSummaryList
=
inventorySummaryService
.
selectSumByItems
(
searchCriteria
);
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List
<
InventorySummary
>
newSummaryList
=
inventorySummaryService
.
selectSumByItems
(
updateCriteria
);
//创建删除列表用于将没用的数据汇总信息进行删除
public
boolean
addQuickOrder
(
OrderMain
existOrder
)
{
List
<
InventorySummary
>
deleteList
=
new
ArrayList
<>();
for
(
OrderDetail
orderDetail:
list
)
{
for
(
InventorySummary
oldSum:
oldSummaryList
)
{
//如果组织机构、仓库id、sizeId、typeId、unitPrice相同,那么修改其各项数值(不会存在两个列表长度不对等的情况,一定是一对一的,只不过是顺序问题,所以需要进行遍历)
//需要判断传递的计划数量是否和在库数相等,如果相等表示将报废区数的数量也一起移库,否则表示报废区的数量
if
(
orderDetail
.
getSizeId
().
equals
(
oldSum
.
getSizeId
())
&&
orderDetail
.
getTypeId
().
equals
(
oldSum
.
getTypeId
())
&&
orderDetail
.
getPrice
().
compareTo
(
oldSum
.
getUnitPrice
())==
0
){
//直接修改各项数据,并且判断库存总数是否为0,如果为0 ,判断其他数据是否为0,只有当所有数据为0才能将这条信息进行删除,否则装备数据会不准确(销毁数量)
oldSum
.
setNumber
(
oldSum
.
getNumber
()-
orderDetail
.
getPlanNum
());
oldSum
.
setPrice
(
oldSum
.
getPrice
().
subtract
(
orderDetail
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail
.
getPlanNum
()))));
oldSum
.
setStockNumber
(
oldSum
.
getStockNumber
()-
orderDetail
.
getPlanNum
());
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if
(
oldSum
.
getStockNumber
()==
0
&&
oldSum
.
getNumber
()==
0
&&
oldSum
.
getOutboundNumber
()==
0
&&
oldSum
.
getBrokenNumber
()==
0
&&
oldSum
.
getDestructionNumber
()!=
0
){
deleteList
.
add
(
oldSum
);
}
break
;
//查询到直接跳过该循环进入下一循环
}
}
for
(
InventorySummary
oldSum:
oldSummaryList
)
{
if
(
orderDetail
.
getSizeId
().
equals
(
oldSum
.
getSizeId
())
&&
orderDetail
.
getTypeId
().
equals
(
oldSum
.
getTypeId
())
&&
orderDetail
.
getPrice
().
compareTo
(
oldSum
.
getUnitPrice
())==
0
){
//直接修改各项数据,并且判断库存总数是否为0,如果为0 ,判断其他数据是否为0,只有当所有数据为0才能将这条信息进行删除,否则装备数据会不准确(销毁数量)
oldSum
.
setNumber
(
oldSum
.
getNumber
()-
orderDetail
.
getPlanNum
());
oldSum
.
setPrice
(
oldSum
.
getPrice
().
subtract
(
orderDetail
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail
.
getPlanNum
()))));
oldSum
.
setStockNumber
(
oldSum
.
getStockNumber
()-
orderDetail
.
getPlanNum
());
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if
(
oldSum
.
getStockNumber
()==
0
&&
oldSum
.
getNumber
()==
0
&&
oldSum
.
getOutboundNumber
()==
0
&&
oldSum
.
getBrokenNumber
()==
0
&&
oldSum
.
getDestructionNumber
()!=
0
){
deleteList
.
add
(
oldSum
);
}
break
;
//查询到直接跳过该循环进入下一循环
}
break
;
}
}
// 如果存在那么只需要修改在库数,出库数,库存总数和单价;
// 如果不存在那么新增一条该型号,类型和单价的数据,并且对在库数,出库数,库存总数和单价进行赋值添加;
//判断查询的汇总表中是否存在数据,如果list为空,那么直接进行新增即可,如果不为空,那么需要遍历哪些满足条件,如果满足条件只需要进行修改更新,如果未找到那么则进行新增
//查询组织机构编码
String
orgCode
=
pubOrgService
.
PubOrgExist
(
orderMain
.
getEndOrgId
()).
getOrgCode
();
//新建list用于存放新的汇总数据
List
<
InventorySummary
>
newList
=
new
ArrayList
<>();
if
(
newSummaryList
.
size
()==
0
){
for
(
OrderDetail
orderDetail1:
collect
)
{
InventorySummary
newSummary
=
addNewSum
(
orderMain
,
orderDetail1
,
orgCode
);
newList
.
add
(
newSummary
);
}
}
else
{
//遍历两个list,判断是否存在,如果不存在,那么将新增数据放在newList中最后进行批量新增,如果存在,那么修改数据,还是放在newSummaryList中,之后同老的数据一起进行修改
for
(
OrderDetail
orderDetail1:
collect
)
{
boolean
flag
=
false
;
for
(
InventorySummary
newSum:
newSummaryList
)
{
if
(
orderDetail1
.
getSizeId
().
equals
(
newSum
.
getSizeId
())
&&
orderDetail1
.
getTypeId
().
equals
(
newSum
.
getTypeId
())
&&
orderDetail1
.
getPrice
().
compareTo
(
newSum
.
getUnitPrice
())==
0
){
newSum
.
setNumber
(
newSum
.
getNumber
()-
orderDetail1
.
getPlanNum
());
newSum
.
setPrice
(
newSum
.
getPrice
().
subtract
(
orderDetail1
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail1
.
getPlanNum
()))));
newSum
.
setStockNumber
(
newSum
.
getStockNumber
()-
orderDetail1
.
getPlanNum
());
//过质保数?临近质保?报废数?
flag
=
true
;
break
;
}
}
if
(!
flag
){
//新增一条数据并且返回
InventorySummary
newSummary
=
addNewSum
(
orderMain
,
orderDetail1
,
orgCode
);
newList
.
add
(
newSummary
);
}
}
}
//保存新的inventorySummary数据
//如果newList不为空则save
boolean
a
=
true
;
if
(
newList
.
size
()>
0
){
a
=
inventorySummaryService
.
saveBatch
(
newList
);
}
//如果删除list不为空,那么进行批量删除
boolean
b
=
true
;
if
(
deleteList
.
size
()>
0
){
b
=
inventorySummaryService
.
removeBatchByIds
(
deleteList
);
}
//将orderSum和newSum两个列表进行拼接,最终得到一个更新的list进行更新
List
<
InventorySummary
>
totalSumList
=
new
ArrayList
<>();
totalSumList
.
addAll
(
oldSummaryList
);
totalSumList
.
addAll
(
newSummaryList
);
boolean
c
=
inventorySummaryService
.
updateBatchById
(
totalSumList
);
//将库存表inventory中的装备的仓库id进行修改
List
<
Inventory
>
eqsList
=
inventoryService
.
selectEqsByItem
(
searchCriteria
);
for
(
Inventory
inventory
:
eqsList
)
{
for
(
OrderDetail
detail2
:
collect
)
{
if
(
inventory
.
getOrgId
().
equals
(
existOrder
.
getStartOrgId
())
&&
inventory
.
getSizeId
().
equals
(
detail2
.
getSizeId
())
&&
inventory
.
getTypeId
().
equals
(
detail2
.
getTypeId
())
&&
inventory
.
getPrice
().
equals
(
detail2
.
getPrice
()))
{
// 修改 仓库id
inventory
.
setLocationId
(
detail2
.
getWarehouseId
());
break
;
// 找到匹配的对象后跳出内循环
}
}
}
boolean
d
=
inventoryService
.
updateBatchById
(
eqsList
);
return
(
a
&&
b
&&
c
&&
d
);
}
public
boolean
addQuickOrder1
(
OrderMain
existOrder
)
{
//创建新的orderMain入库单
//创建新的orderMain入库单
OrderMain
orderMain
=
new
OrderMain
();
OrderMain
orderMain
=
new
OrderMain
();
BeanPlusUtil
.
copyProperties
(
existOrder
,
orderMain
);
BeanPlusUtil
.
copyProperties
(
existOrder
,
orderMain
);
...
@@ -1235,26 +1062,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
...
@@ -1235,26 +1062,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
return
true
;
return
true
;
}
}
//新增一条inventorysummary数据
public
InventorySummary
addNewSum
(
OrderMain
orderMain
,
OrderDetail
orderDetail1
,
String
orgCode
){
InventorySummary
newSummary
=
new
InventorySummary
();
newSummary
.
setOrgId
(
orderMain
.
getEndOrgId
());
newSummary
.
setOrgName
(
orderMain
.
getEndOrgName
());
newSummary
.
setOrgCode
(
orgCode
);
newSummary
.
setTypeId
(
orderDetail1
.
getTypeId
());
newSummary
.
setTypeName
(
orderDetail1
.
getTypeName
());
newSummary
.
setSizeId
(
orderDetail1
.
getSizeId
());
newSummary
.
setSizeName
(
orderDetail1
.
getSizeName
());
newSummary
.
setLocationId
(
orderMain
.
getLocationId
());
newSummary
.
setLocationName
(
orderMain
.
getLocationName
());
newSummary
.
setLocationType
(
"0"
);
newSummary
.
setNumber
(
orderDetail1
.
getPlanNum
());
newSummary
.
setPrice
(
orderDetail1
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail1
.
getPlanNum
())));
newSummary
.
setUnitPrice
(
orderDetail1
.
getPrice
());
newSummary
.
setStockNumber
(
orderDetail1
.
getPlanNum
());
newSummary
.
setCreateTime
(
DateTimeUtil
.
getCurrentDateTime
());
return
newSummary
;
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvExpireMsg.java
View file @
f07ab58d
...
@@ -5,12 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -5,12 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
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.api.util.GenCodeUtil
;
import
com.junmp.jyzb.entity.Company
;
import
com.junmp.jyzb.entity.Company
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.Inventory
;
import
com.junmp.jyzb.entity.InventorySummary
;
import
com.junmp.jyzb.entity.InventorySummary
;
import
com.junmp.jyzb.entity.ProductSku
;
import
com.junmp.jyzb.entity.ProductSku
;
import
com.junmp.jyzb.mapper.ExpireMapper
;
import
com.junmp.jyzb.mapper.ExpireMapper
;
import
com.junmp.jyzb.mapper.InventoryMapper
;
import
com.junmp.jyzb.mapper.MsgMapper
;
import
com.junmp.jyzb.mapper.MsgMapper
;
import
com.junmp.jyzb.service.InventoryService
;
import
com.junmp.jyzb.service.InventoryService
;
import
com.junmp.v2.common.util.BeanPlusUtil
;
import
com.junmp.v2.common.util.BeanPlusUtil
;
...
@@ -26,10 +28,7 @@ import org.springframework.stereotype.Component;
...
@@ -26,10 +28,7 @@ import org.springframework.stereotype.Component;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
...
@@ -48,6 +47,9 @@ public class InvExpireMsg implements JobAction {
...
@@ -48,6 +47,9 @@ public class InvExpireMsg implements JobAction {
private
InventoryService
inventoryService
;
private
InventoryService
inventoryService
;
@Resource
@Resource
private
InventoryMapper
inventoryMapper
;
@Resource
private
MessageApi
messageApi
;
private
MessageApi
messageApi
;
@Resource
@Resource
...
@@ -60,65 +62,99 @@ public class InvExpireMsg implements JobAction {
...
@@ -60,65 +62,99 @@ public class InvExpireMsg implements JobAction {
int
pageSize
=
1000
;
// 每页记录数,可以根据需求调整
int
pageSize
=
1000
;
// 每页记录数,可以根据需求调整
int
currentPage
=
1
;
// 当前页数
int
currentPage
=
1
;
// 当前页数
//所有待判断的物资
//所有待判断的物资(只获取仓库下的过质保期数量)
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
//除去销毁出库数
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
wrapper
.
ne
(
Inventory:
:
getState
,
"destory"
);
//获取未超期的物资数量
//获取未超期的物资数量
long
termCount
=
inventoryService
.
count
(
wrapper
);
long
termCount
=
inventoryService
.
count
(
wrapper
);
List
<
Inventory
>
list
=
new
ArrayList
<>();
List
<
Inventory
>
list
=
new
ArrayList
<>();
if
(
termCount
>
0
)
{
if
(
termCount
>
0
)
{
// 分页查询
// 分页查询
while
((
currentPage
-
1
)
*
pageSize
<
termCount
)
{
while
((
currentPage
-
1
)
*
pageSize
<
termCount
)
{
List
<
Inventory
>
inventoryList
=
processPageData
(
currentPage
,
pageSize
);
int
startPageSize
=(
currentPage
-
1
)
*
pageSize
;
List
<
Inventory
>
inventoryList
=
processPageData
(
startPageSize
,
pageSize
);
currentPage
++;
currentPage
++;
list
.
addAll
(
inventoryList
);
list
.
addAll
(
inventoryList
);
}
}
}
}
//超期物资查询出来之后,将超期物资进行消息推送提醒
//超期物资查询出来之后,将超期物资进行消息推送提醒
//直接对list进行处理操作推送消息即可
//直接对list进行处理操作推送消息即可
for
(
Inventory
inventory:
list
)
{
//需要对该所有超期物资进行分组
MessageSendReq
sendReq
=
new
MessageSendReq
();
List
<
InvExpireReq
>
invExpireReqList
=
new
ArrayList
<>();
sendReq
.
setSendUserId
(
"1000"
);
List
<
Long
>
orgIdsList
=
new
ArrayList
<>();
sendReq
.
setReceiveUserIds
(
"1000"
);
for
(
Inventory
inventory
:
list
)
{
sendReq
.
setMsgTitle
(
"物资过质保期"
);
if
(
invExpireReqList
.
size
()==
0
){
//设置业务类型
InvExpireReq
invExpireReq
=
new
InvExpireReq
();
SysDictItem
one
=
sysDictItemService
.
getOne
(
new
LambdaQueryWrapper
<
SysDictItem
>()
BeanPlusUtil
.
copyProperties
(
inventory
,
invExpireReq
);
.
eq
(
SysDictItem:
:
getDictItemId
,
"expire"
));
invExpireReq
.
setSumExpireNumber
(
1
);
sendReq
.
setBizType
(
one
.
getItemValue
());
invExpireReqList
.
add
(
invExpireReq
);
sendReq
.
setMsgContent
(
"仓库下的装备的物资已经过质保期"
);
orgIdsList
.
add
(
inventory
.
getOrgId
());
sendReq
.
setPriority
(
"0"
);
continue
;
sendReq
.
setSendTime
(
DateTime
.
now
());
}
messageApi
.
sendMessage
(
sendReq
);
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
<>();
for
(
InvExpireReq
userIds:
userIdsList
){
userIdList
.
add
(
1000L
);
for
(
Long
userId
:
userIdList
){
MessageReq
req1
=
new
MessageReq
();
MessageReq
req1
=
new
MessageReq
();
req1
.
setReadFlag
(
0
);
req1
.
setReadFlag
(
0
);
req1
.
setReceiveUserId
(
userId
);
req1
.
setReceiveUserId
(
Long
.
parseLong
(
userIds
.
getUserId
())
);
Integer
count1
=
messageApi
.
queryCount
(
req1
);
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
();
List
<
Object
[]>
searchItem
=
new
ArrayList
<>();
// 使用LambdaQueryWrapper构建查询条件
Object
[]
criteria
=
new
Object
[]{
0
,
"destory"
,
startPageSize
,
currentPage
};
LambdaQueryWrapper
<
Inventory
>
wrapper
=
Wrappers
.
lambdaQuery
();
searchItem
.
add
(
criteria
);
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
List
<
Inventory
>
list
=
inventoryMapper
.
searchExpireEqs
(
searchItem
);
//如果 生产日期 < 当前日期减去质保数,表示该装备已经超过质保期
list
.
forEach
(
o
->
o
.
setTermState
(
1
));
wrapper
.
apply
(
"production_date <= DATE_SUB({0}, INTERVAL warranty_period DAY)"
,
localdate
);
inventoryService
.
saveOrUpdateBatch
(
list
);
//获取过质保期的物资信息
return
list
;
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)
}
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvOverDueMsg.java
View file @
f07ab58d
...
@@ -2,7 +2,9 @@ package com.junmp.jyzb.task;
...
@@ -2,7 +2,9 @@ package com.junmp.jyzb.task;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateTime
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
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.entity.OrderMain
;
import
com.junmp.jyzb.mapper.InventoryMapper
;
import
com.junmp.jyzb.service.OrderMainService
;
import
com.junmp.jyzb.service.OrderMainService
;
import
com.junmp.jyzb.utils.DateTimeUtil
;
import
com.junmp.jyzb.utils.DateTimeUtil
;
import
com.junmp.v2.db.api.factory.PageFactory
;
import
com.junmp.v2.db.api.factory.PageFactory
;
...
@@ -16,9 +18,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -16,9 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* @author lxh
* @author lxh
...
@@ -37,14 +37,17 @@ public class InvOverDueMsg implements JobAction {
...
@@ -37,14 +37,17 @@ public class InvOverDueMsg implements JobAction {
private
MessageApi
messageApi
;
private
MessageApi
messageApi
;
@Resource
@Resource
private
InventoryMapper
inventoryMapper
;
@Resource
private
SysDictItemService
sysDictItemService
;
private
SysDictItemService
sysDictItemService
;
@Override
@Override
public
void
action
()
{
public
void
action
()
{
//获取超期物资
//获取超期物资
//先查询出 出入库单据为
借
用单的数据
//先查询出 出入库单据为
领
用单的数据
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
.
eq
(
OrderMain:
:
getBussinessType
,
"
borrow
"
)
.
eq
(
OrderMain:
:
getBussinessType
,
"
use
"
)
.
eq
(
OrderMain:
:
getOrderType
,
"out"
);
.
eq
(
OrderMain:
:
getOrderType
,
"out"
);
int
pageSize
=
1000
;
int
pageSize
=
1000
;
int
currentPage
=
1
;
int
currentPage
=
1
;
...
@@ -59,32 +62,41 @@ public class InvOverDueMsg implements JobAction {
...
@@ -59,32 +62,41 @@ public class InvOverDueMsg implements JobAction {
}
}
}
}
//将消息进行推送
//将消息进行推送
//我需要将orgId进行查询并去重
Set
<
Long
>
uniqueOrgIDs
=
new
HashSet
<>();
for
(
OrderMain
orderMain:
list
)
{
for
(
OrderMain
orderMain:
list
)
{
MessageSendReq
sendReq
=
new
MessageSendReq
();
uniqueOrgIDs
.
add
(
orderMain
.
getStartOrgId
());
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
);
}
}
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;
for
(
InvExpireReq
userIds:
userIdsList
){
List
<
Long
>
userIdList
=
new
ArrayList
<>();
userIdList
.
add
(
1000L
);
for
(
Long
userId
:
userIdList
){
MessageReq
req1
=
new
MessageReq
();
MessageReq
req1
=
new
MessageReq
();
req1
.
setReadFlag
(
0
);
req1
.
setReadFlag
(
0
);
req1
.
setReceiveUserId
(
userId
);
req1
.
setReceiveUserId
(
Long
.
parseLong
(
userIds
.
getUserId
())
);
Integer
count1
=
messageApi
.
queryCount
(
req1
);
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 {
...
@@ -94,9 +106,10 @@ public class InvOverDueMsg implements JobAction {
//获取对应的借用单据数据
//获取对应的借用单据数据
Date
currentDateTime
=
DateTimeUtil
.
getCurrentDateTime
();
Date
currentDateTime
=
DateTimeUtil
.
getCurrentDateTime
();
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
LambdaQueryWrapper
<
OrderMain
>
wrapper
=
new
LambdaQueryWrapper
<
OrderMain
>()
.
eq
(
OrderMain:
:
getBussinessType
,
"
borrow
"
)
.
eq
(
OrderMain:
:
getBussinessType
,
"
use
"
)
.
eq
(
OrderMain:
:
getOrderType
,
"out"
)
.
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
();
List
<
OrderMain
>
records
=
orderMainService
.
page
(
PageFactory
.
getDefaultPage
(
pageSize
,
currentPage
),
wrapper
).
getRecords
();
return
records
;
return
records
;
}
}
...
...
jyzb-biz/src/main/resources/mapper/InventoryMapper.xml
View file @
f07ab58d
...
@@ -500,6 +500,50 @@
...
@@ -500,6 +500,50 @@
#{item}
#{item}
</foreach>
</foreach>
</select>
</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>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论