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
ec70df2b
Commit
ec70df2b
authored
Nov 14, 2023
by
李小惠
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改前端返回数据
parent
5f948795
显示空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
394 行增加
和
75 行删除
+394
-75
InventoryDto.java
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/InventoryDto.java
+4
-1
OrderDto.java
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/OrderDto.java
+11
-0
UpdateOrderReq.java
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/req/UpdateOrderReq.java
+1
-1
InventoryController.java
jyzb-biz/src/main/java/com/junmp/jyzb/controller/InventoryController.java
+13
-0
InventorySummary.java
jyzb-biz/src/main/java/com/junmp/jyzb/entity/InventorySummary.java
+8
-0
OrderMain.java
jyzb-biz/src/main/java/com/junmp/jyzb/entity/OrderMain.java
+1
-1
GlobalEndListener.java
jyzb-biz/src/main/java/com/junmp/jyzb/listener/GlobalEndListener.java
+1
-15
InventoryMapper.java
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventoryMapper.java
+4
-0
InventorySummaryMapper.java
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventorySummaryMapper.java
+3
-0
InventorySummaryService.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/InventorySummaryService.java
+4
-0
InventoryServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/InventoryServiceImpl.java
+2
-16
InventorySummaryServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/InventorySummaryServiceImpl.java
+20
-1
OrderMainServiceImpl.java
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/OrderMainServiceImpl.java
+283
-37
InvExpireMsg.java
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvExpireMsg.java
+2
-1
InventoryMapper.xml
jyzb-biz/src/main/resources/mapper/InventoryMapper.xml
+27
-0
InventorySummaryMapper.xml
jyzb-biz/src/main/resources/mapper/InventorySummaryMapper.xml
+9
-1
FlowInstanceServiceImpl.java
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
+1
-1
没有找到文件。
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/InventoryDto.java
View file @
ec70df2b
...
...
@@ -69,6 +69,8 @@ public class InventoryDto implements Serializable {
*/
private
String
locationId
;
private
String
locationName
;
/**
* 价格
*/
...
...
@@ -91,7 +93,8 @@ public class InventoryDto implements Serializable {
/**
* 组织机构id
*/
private
Long
orgId
;
private
String
orgId
;
private
Long
orgIdInt
;
/**
* 组织机构
*/
...
...
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/dto/OrderDto.java
View file @
ec70df2b
...
...
@@ -92,4 +92,15 @@ public class OrderDto implements Serializable {
private
String
repairName
;
private
String
destoryName
;
/**
* 附件地址
*/
private
String
attachmentLocation
;
/**
* 归还人id,归还入库特有(相当于领用人)
*/
private
String
returnUserId
;
private
String
returnUser
;
}
jyzb-api/src/main/java/com/junmp/jyzb/api/bean/req/UpdateOrderReq.java
View file @
ec70df2b
...
...
@@ -139,7 +139,7 @@ public class UpdateOrderReq extends BaseRequest implements Serializable {
/**
* 调拨类型(2支拨,1价拨),调拨出入库才有
*/
private
Integer
transfer
Type
;
private
Integer
allocate
Type
;
/**
* 归还人id,归还入库特有(相当于领用人)
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/controller/InventoryController.java
View file @
ec70df2b
...
...
@@ -94,6 +94,12 @@ public class InventoryController {
return
ApiRes
.
success
(
inventorySummaryService
.
getEquipmentInfo
(
req
));
}
@PostMapping
(
"/getOne"
)
@ApiOperation
(
"获取单个库存的数量"
)
public
ApiRes
<
InventorySummary
>
getOne
(
@RequestBody
InventorySumReq
req
){
return
ApiRes
.
success
(
inventorySummaryService
.
getOne
(
req
));
}
//根据组织机构id/单警柜id/仓库id查询出库存汇总数量以及金额(和getEquipmentInfo同时调用,汇总出符合查询条件的装备)
...
...
@@ -239,5 +245,12 @@ public class InventoryController {
return
ApiRes
.
success
(
inventoryService
.
checkEPCList
(
req
));
}
//调用存储过程将汇总信息进行插入
@PostMapping
(
"/insertToSummary"
)
@ApiOperation
(
"将汇总信息进行插入"
)
public
ApiRes
<
Boolean
>
insertToSummary
(){
return
ApiRes
.
success
(
inventorySummaryService
.
insertToSummary
());
}
}
jyzb-biz/src/main/java/com/junmp/jyzb/entity/InventorySummary.java
View file @
ec70df2b
...
...
@@ -133,6 +133,14 @@ public class InventorySummary implements Serializable {
@TableField
(
"destruction_number"
)
private
Integer
destructionNumber
;
/**
* 销毁金额
*/
@ApiModelProperty
(
value
=
"销毁金额"
)
@TableField
(
"destruction_price"
)
private
BigDecimal
destructionPrice
;
/**
* 过质保数量
*/
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/entity/OrderMain.java
View file @
ec70df2b
...
...
@@ -20,7 +20,7 @@ public class OrderMain implements Serializable {
@TableField
(
"order_type"
)
private
String
orderType
;
@TableField
(
"process_id"
)
@TableField
(
value
=
"process_id"
,
updateStrategy
=
FieldStrategy
.
IGNORED
)
private
String
processId
;
@TableField
(
"bussiness_type"
)
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/listener/GlobalEndListener.java
View file @
ec70df2b
...
...
@@ -81,7 +81,7 @@ import java.util.stream.Collectors;
String
Type
=
orderType
.
get
(
0
).
getValue
().
toString
();
if
(
Type
.
equals
(
"workOrder"
)
)
//出入库单据
if
(
Type
.
equals
(
"workOrder"
)
||
Type
.
equals
(
"quickOrder"
))
//出入库单据(包含快速移库出库单)
{
// OrderMainReq req=new OrderMainReq();
// req.setProcessId(processInstanceId);
...
...
@@ -122,21 +122,7 @@ import java.util.stream.Collectors;
if
(
Type
.
equals
(
"stocktakeOrder"
)){
//盘库申请单
}
if
(
Type
.
equals
(
"quickOrder"
)){
OrderMain
existOrder
=
orderMainService
.
getOne
(
new
LambdaQueryWrapper
<
OrderMain
>()
.
eq
(
OrderMain:
:
getProcessId
,
processInstanceId
));
existOrder
.
setExamineState
(
"finished"
);
existOrder
.
setOrderState
(
"ready"
);
orderMainService
.
updateById
(
existOrder
);
//创建快速出库单并且通过快速出库单再去创建入库单(主单)
boolean
b
=
orderMainService
.
addQuickOrder
(
existOrder
);
if
(!
b
){
throw
new
ServiceException
(
OrderExceptionEnum
.
ORDER_CREATE_ERROR
);
}
}
}
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventoryMapper.java
View file @
ec70df2b
...
...
@@ -64,4 +64,7 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
//根据条件查询满足条件的数据(用于快速移库修改装备仓库id)
List
<
Inventory
>
selectEqsByItem
(
@Param
(
"list"
)
List
<
Object
[]>
searchCriteria
);
//根据epc获取装备信息
List
<
InventoryDto
>
GetInvInfoByEpc
(
@Param
(
"list"
)
List
<
String
>
epcList
);
}
\ No newline at end of file
jyzb-biz/src/main/java/com/junmp/jyzb/mapper/InventorySummaryMapper.java
View file @
ec70df2b
...
...
@@ -45,4 +45,6 @@ public interface InventorySummaryMapper extends BaseMapper<InventorySummary> {
List
<
TjOrgEqsDto
>
test
(
@Param
(
"req"
)
InventoryReq
req
);
List
<
TjOrgEqsDto
>
selectDynamicView
();
void
insertToSummary
(
@Param
(
"summaryTableName"
)
String
summaryTableName
,
@Param
(
"sourceTableName"
)
String
sourceTableName
,
@Param
(
"warrantyThreshold"
)
Integer
warrantyThreshold
);
}
\ No newline at end of file
jyzb-biz/src/main/java/com/junmp/jyzb/service/InventorySummaryService.java
View file @
ec70df2b
...
...
@@ -22,6 +22,8 @@ public interface InventorySummaryService extends IService<InventorySummary> {
//根据条件查询装备汇总信息,用于出库单的选择装备
List
<
InventorySumDto
>
GetInventorySumInfo
(
InventorySumReq
req
);
InventorySummary
getOne
(
InventorySumReq
req
);
//对summary表中数据进行重新计算装备信息汇总
Boolean
updateSummaryInsByOrder
(
Long
orgId
);
...
...
@@ -37,4 +39,6 @@ public interface InventorySummaryService extends IService<InventorySummary> {
//出入库时无单据查询库存汇总并统计更新或者记账时根据单据查询库存汇总并统计更新
List
<
InventorySummary
>
selectSumByItems
(
List
<
Object
[]>
searchCriteria
);
boolean
insertToSummary
();
}
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/InventoryServiceImpl.java
View file @
ec70df2b
...
...
@@ -194,22 +194,8 @@ public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory
if
(
epcList
.
size
()==
0
){
throw
new
ServiceException
(
CabinetExceptionEnum
.
PARAMETER_ERROR
);
}
List
<
InventoryDto
>
inventoryDtoList
=
new
ArrayList
<>();
List
<
Inventory
>
inventoryList
=
list
(
new
LambdaQueryWrapper
<
Inventory
>().
in
(
Inventory:
:
getEpc
,
epcList
));
for
(
Inventory
inventory:
inventoryList
)
{
InventoryDto
inventoryDto
=
new
InventoryDto
();
BeanPlusUtil
.
copyProperties
(
inventory
,
inventoryDto
);
//设置型号名称,类别名称,供应商名称
String
sizeName
=
equipmentSizeService
.
getById
(
inventory
.
getSizeId
()).
getName
();
String
typeName
=
equipmentTypeService
.
getById
(
inventory
.
getTypeId
()).
getName
();
if
(
inventory
.
getSupplierId
()
!=
null
)
{
String
supplierName
=
supplierService
.
getById
(
inventory
.
getSupplierId
()).
getName
();
inventoryDto
.
setSupplierName
(
supplierName
);
}
inventoryDto
.
setSizeName
(
sizeName
);
inventoryDto
.
setTypeName
(
typeName
);
inventoryDtoList
.
add
(
inventoryDto
);
}
List
<
InventoryDto
>
inventoryDtoList
=
inventoryMapper
.
GetInvInfoByEpc
(
epcList
);
return
inventoryDtoList
;
}
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/InventorySummaryServiceImpl.java
View file @
ec70df2b
...
...
@@ -93,6 +93,7 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return
o1
.
getTypeId
().
compareTo
(
o2
.
getTypeId
());
}
});
Page
<
InventorySummary
>
page1
=
PageFactory
.
getDefaultPage
(
req
.
getPageNo
(),
req
.
getPageSize
());
page1
.
setRecords
(
list
);
page1
.
setTotal
(
size
);
...
...
@@ -109,7 +110,17 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return
inventorySummaryMapper
.
GetInventorySumInfo
(
req
);
}
@Override
public
InventorySummary
getOne
(
InventorySumReq
req
)
{
LambdaQueryWrapper
<
InventorySummary
>
eq
=
new
LambdaQueryWrapper
<
InventorySummary
>()
.
eq
(
ObjectUtil
.
isNotEmpty
(
req
.
getOrgId
()),
InventorySummary:
:
getOrgId
,
req
.
getOrgId
())
.
eq
(
ObjectUtil
.
isNotEmpty
(
req
.
getLocationId
()),
InventorySummary:
:
getLocationId
,
req
.
getLocationId
())
.
eq
(
ObjectUtil
.
isNotEmpty
(
req
.
getTypeId
()),
InventorySummary:
:
getTypeId
,
req
.
getTypeId
())
.
eq
(
ObjectUtil
.
isNotEmpty
(
req
.
getSizeId
()),
InventorySummary:
:
getSizeId
,
req
.
getSizeId
())
.
eq
(
ObjectUtil
.
isNotEmpty
(
req
.
getUnitPrice
()),
InventorySummary:
:
getUnitPrice
,
req
.
getUnitPrice
());
InventorySummary
one
=
getOne
(
eq
);
return
one
;
}
//对summary表中数据进行重新计算装备信息汇总
...
...
@@ -229,6 +240,14 @@ public class InventorySummaryServiceImpl extends ServiceImpl<InventorySummaryMa
return
inventorySummaryMapper
.
selectSumByItems
(
searchCriteria
);
}
@Override
public
boolean
insertToSummary
()
{
String
summaryTableName
=
"base_inventory_summary"
;
String
sourceTableName
=
"base_inventory"
;
Integer
warrantyThreshold
=
15
;
inventorySummaryMapper
.
insertToSummary
(
summaryTableName
,
sourceTableName
,
warrantyThreshold
);
return
true
;
}
private
LambdaQueryWrapper
<
InventorySummary
>
createWrapper
(
InventorySumReq
req
)
{
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/service/impl/OrderMainServiceImpl.java
View file @
ec70df2b
...
...
@@ -172,15 +172,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
startProcessInstanceDTO
.
setOrderType
(
"workOrder"
);
processInstanceId
=
FlowInstanceService
.
startProcessInstanceById
(
startProcessInstanceDTO
);
}
else
{
//快速移库单
}
else
if
(
req
.
getBussinessType
().
equals
(
"quick"
)
&&
req
.
getExamineState
().
equals
(
"working"
))
{
//快速移库单
startProcessInstanceDTO
.
setOrderType
(
"quickOrder"
);
processInstanceId
=
FlowInstanceService
.
startProcessInstanceById
(
startProcessInstanceDTO
);
}
//list返回数据
List
<
String
>
list
=
new
ArrayList
<>();
//当前审核是否跳过
if
(
processInstanceId
.
substring
(
0
,
2
).
equals
(
"TG"
)
){
String
substring
=
processInstanceId
.
substring
(
2
);
if
(
processInstanceId
!=
null
&&
processInstanceId
.
substring
(
0
,
4
).
equals
(
"skip"
)
){
String
substring
=
processInstanceId
.
substring
(
4
);
order
.
setProcessId
(
substring
);
if
(
ObjectUtil
.
isNotNull
(
req
.
getId
())
&&
!
req
.
getId
().
trim
().
isEmpty
())
{
updateById
(
order
);
...
...
@@ -548,9 +549,18 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
boolean
d
=
updateSummaryInfo
(
req
,
orderDetailReqList
,
orgId
);
//如果是领用,警员绑定装备
boolean
e
=
policeBindEqs
(
req
,
reqList
,
orgId
);
boolean
e
=
true
;
if
(
req
.
getBussinessType
().
equals
(
"use"
)){
e
=
policeBindEqs
(
req
,
reqList
,
orgId
);
}
//如果是快速移库,记账完成之后新增入库单并且该单据不走审核流,但是审核状态和入库状态显示已完成
boolean
f
=
true
;
if
(
req
.
getBussinessType
().
equals
(
"quick"
)){
f
=
addQuickOrder
(
orderMain
);
}
//更新主单据
return
(
a
&&
b
&&
c
&&
d
&&
e
);
return
(
a
&&
b
&&
c
&&
d
&&
e
&&
f
);
}
public
boolean
policeBindEqs
(
UpdateOrderReq
req
,
List
<
UpdateOrderDetailReq
>
reqList
,
Long
orgId
){
...
...
@@ -850,14 +860,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//快速生成入库单
@Override
public
boolean
addQuickOrder
(
OrderMain
existOrder
)
{
//orderMain入库单
//
创建新的
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
);
...
...
@@ -867,14 +879,16 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
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
(根据条件查询库存汇总表中包含有相同条件的数据)
List
<
Object
[]>
searchCriteria
=
new
ArrayList
<>();
//新建的入库单查询条件list
//新建的入库单查询条件list
(根据条件查询库存汇总表中是否包含有相同条件的数据)
List
<
Object
[]>
updateCriteria
=
new
ArrayList
<>();
//仓库id
String
locationId
=
orderMain
.
getLocationId
();
//创建入库单子单
List
<
OrderDetail
>
collect
=
list
.
stream
().
map
(
orderDetail
->
{
OrderDetail
orderDetail1
=
new
OrderDetail
();
...
...
@@ -884,60 +898,68 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//修改单据出入状态
orderDetail1
.
setType
(
"in"
);
//修改仓库id
orderDetail1
.
setWarehouseId
(
orderMain
.
getLocationId
()
);
orderDetail1
.
setWarehouseId
(
locationId
);
orderDetail1
.
setWarehouseName
(
orderMain
.
getLocationName
());
//新增创建时间
orderDetail1
.
setCreateTime
(
DateTimeUtil
.
getCurrentDateTime
());
Object
[]
criteria
=
new
Object
[]{
existOrder
.
getStartOrgId
(),
orderDetail
.
getWarehouseId
(),
orderDetail
.
getTypeId
(),
orderDetail
.
getSizeId
(),
orderDetail
.
getPrice
()};
searchCriteria
.
add
(
criteria
);
Object
[]
update
=
new
Object
[]{
orderMain
.
getEndOrgId
(),
orderDetail1
.
getWarehouseId
()
,
orderDetail1
.
getTypeId
(),
orderDetail1
.
getSizeId
(),
orderDetail1
.
getPrice
()};
Object
[]
update
=
new
Object
[]{
orderMain
.
getEndOrgId
(),
locationId
,
orderDetail1
.
getTypeId
(),
orderDetail1
.
getSizeId
(),
orderDetail1
.
getPrice
()};
updateCriteria
.
add
(
update
);
return
orderDetail1
;
}).
collect
(
Collectors
.
toList
());
orderDetailService
.
saveBatch
(
collect
);
//将库存表中的装备的仓库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
;
// 找到匹配的对象后跳出内循环
}
}
}
inventoryService
.
updateBatchById
(
eqsList
);
//将summary汇总表中数据进行修改(修改该组织机构下的装备汇总信息将库存信息的在库数,库存总数,总价还有其他数据数量进行修改)
//那么首先将原来的仓库下的装备汇总信息进行查询出来,对其进行修改
List
<
InventorySummary
>
oldSummaryList
=
inventorySummaryService
.
selectSumByItems
(
searchCriteria
);
//其次查询出修改后的仓库下面的汇总信息,判断该仓库下是否已经存在该号型、类型、单价相同的装备数据
List
<
InventorySummary
>
newSummaryList
=
inventorySummaryService
.
selectSumByItems
(
updateCriteria
);
//创建删除列表用于将没用的数据汇总信息进行删除
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
){
&&
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
.
getDestructionNumber
()!=
0
){
if
(
oldSum
.
getStockNumber
()==
0
&&
oldSum
.
getNumber
()==
0
&&
oldSum
.
getOutboundNumber
()==
0
&&
oldSum
.
getBrokenNumber
()==
0
&&
oldSum
.
getDestructionNumber
()!=
0
){
deleteList
.
add
(
oldSum
);
}
break
;
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
<
InventorySummary
>
newSummaryList
=
inventorySummaryService
.
selectSumByItems
(
updateCriteria
);
// 如果存在那么只需要修改在库数,出库数,库存总数和单价;
// 如果不存在那么新增一条该型号,类型和单价的数据,并且对在库数,出库数,库存总数和单价进行赋值添加;
//判断查询的汇总表中是否存在数据,如果list为空,那么直接进行新增即可,如果不为空,那么需要遍历哪些满足条件,如果满足条件只需要进行修改更新,如果未找到那么则进行新增
...
...
@@ -962,6 +984,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
newSum
.
setPrice
(
newSum
.
getPrice
().
subtract
(
orderDetail1
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail1
.
getPlanNum
()))));
newSum
.
setStockNumber
(
newSum
.
getStockNumber
()-
orderDetail1
.
getPlanNum
());
//过质保数?临近质保?报废数?
flag
=
true
;
break
;
}
...
...
@@ -975,18 +998,241 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
}
//保存新的inventorySummary数据
//如果newList不为空则save
boolean
a
=
true
;
if
(
newList
.
size
()>
0
){
inventorySummaryService
.
saveBatch
(
newList
);
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
=
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
();
String
locationName
=
orderMain
.
getLocationName
();
//创建入库单子单
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
(
locationName
);
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
);
//第一步:判断是否将报废区的数据也同样进行移库(flag=true表示将报废区的数量进行一起移动)
boolean
flag
=
oldSummaryList
.
stream
()
.
filter
(
oldsum
->
oldsum
.
getBrokenNumber
()
>
0
)
.
anyMatch
(
oldsum
->
list
.
stream
()
.
anyMatch
(
orderDetail
->
orderDetail
.
getSizeId
().
equals
(
oldsum
.
getSizeId
())
&&
orderDetail
.
getTypeId
().
equals
(
oldsum
.
getTypeId
())
&&
orderDetail
.
getPrice
().
compareTo
(
oldsum
.
getUnitPrice
())
==
0
&&
oldsum
.
getBrokenNumber
()
+
orderDetail
.
getPlanNum
()
==
oldsum
.
getStockNumber
())
);
//创建删除列表用于将没用的数据汇总信息进行删除
List
<
InventorySummary
>
deleteList
=
new
ArrayList
<>();
//将修改的信息直接保存(需要的只是各种数量方便计算)
List
<
InventorySummary
>
saveList
=
new
ArrayList
<>();
//如果整个报废区进行移动,那么将各个数量进行修改
if
(
flag
){
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
)
{
InventorySummary
inventorySummary
=
new
InventorySummary
();
BeanPlusUtil
.
copyProperties
(
oldSum
,
inventorySummary
);
inventorySummary
.
setLocationId
(
locationId
);
inventorySummary
.
setLocationName
(
locationName
);
inventorySummary
.
setNumber
(
orderDetail
.
getPlanNum
()+
oldSum
.
getOutboundNumber
());
inventorySummary
.
setPrice
(
orderDetail
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail
.
getPlanNum
())));
inventorySummary
.
setStockNumber
(
orderDetail
.
getPlanNum
());
inventorySummary
.
setDestructionNumber
(
0
);
//销毁金额也为0
inventorySummary
.
setDestructionPrice
(
BigDecimal
.
ZERO
);
saveList
.
add
(
inventorySummary
);
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if
(
oldSum
.
getDestructionNumber
()
==
0
)
{
deleteList
.
add
(
oldSum
);
}
else
{
oldSum
.
setBrokenNumber
(
0
);
oldSum
.
setNumber
(
0
);
oldSum
.
setPrice
(
BigDecimal
.
ZERO
);
oldSum
.
setStockNumber
(
0
);
oldSum
.
setOutboundNumber
(
0
);
oldSum
.
setUseNumber
(
0
);
oldSum
.
setExpireNumber
(
0
);
oldSum
.
setNearBrokenNumber
(
0
);
}
break
;
//查询到直接跳过该循环进入下一循环
}
}
}
}
else
{
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
)
{
InventorySummary
inventorySummary
=
new
InventorySummary
();
BeanPlusUtil
.
copyProperties
(
oldSum
,
inventorySummary
);
inventorySummary
.
setLocationId
(
locationId
);
inventorySummary
.
setLocationName
(
locationName
);
//在库数量进行修改并且报废数设为0
inventorySummary
.
setBrokenNumber
(
0
);
inventorySummary
.
setNumber
(
orderDetail
.
getPlanNum
()+
oldSum
.
getOutboundNumber
());
inventorySummary
.
setPrice
(
orderDetail
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail
.
getPlanNum
()+
oldSum
.
getOutboundNumber
())));
inventorySummary
.
setStockNumber
(
orderDetail
.
getPlanNum
());
inventorySummary
.
setDestructionNumber
(
0
);
inventorySummary
.
setDestructionPrice
(
BigDecimal
.
ZERO
);
saveList
.
add
(
inventorySummary
);
oldSum
.
setNumber
(
oldSum
.
getNumber
()-
orderDetail
.
getPlanNum
());
oldSum
.
setPrice
(
oldSum
.
getPrice
().
subtract
(
orderDetail
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
orderDetail
.
getPlanNum
()))));
oldSum
.
setOutboundNumber
(
0
);
oldSum
.
setStockNumber
(
oldSum
.
getNumber
()-
orderDetail
.
getPlanNum
());
oldSum
.
setNearBrokenNumber
(
0
);
oldSum
.
setExpireNumber
(
0
);
oldSum
.
setUseNumber
(
0
);
//如果存在删减数量完成之后所有的数量值都是0的情况,那么将这一条数据进行删除操作
if
(
oldSum
.
getBrokenNumber
()==
0
&&
oldSum
.
getDestructionNumber
()
==
0
)
{
deleteList
.
add
(
oldSum
);
}
break
;
//查询到直接跳过该循环进入下一循环
}
}
}
}
//判断查询到的newList是否有值,如果有值直接进行修改即可,但是如果不存在,则默认新增一条数据
if
(
newSummaryList
.
size
()>
0
){
for
(
InventorySummary
save:
saveList
)
{
for
(
InventorySummary
newsum:
newSummaryList
)
{
if
(
save
.
getSizeId
().
equals
(
newsum
.
getSizeId
())
&&
save
.
getTypeId
().
equals
(
newsum
.
getTypeId
())
&&
save
.
getPrice
().
compareTo
(
newsum
.
getUnitPrice
())
==
0
){
newsum
.
setBrokenNumber
(
save
.
getBrokenNumber
()+
newsum
.
getBrokenNumber
());
newsum
.
setNumber
(
save
.
getNumber
()+
newsum
.
getNumber
());
newsum
.
setStockNumber
(
save
.
getStockNumber
()+
newsum
.
getStockNumber
());
newsum
.
setPrice
(
newsum
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
newsum
.
getStockNumber
())));
newsum
.
setOutboundNumber
(
save
.
getOutboundNumber
()+
newsum
.
getOutboundNumber
());
newsum
.
setExpireNumber
(
save
.
getExpireNumber
()+
newsum
.
getExpireNumber
());
newsum
.
setNearBrokenNumber
(
save
.
getNearBrokenNumber
()+
newsum
.
getNearBrokenNumber
());
newsum
.
setUseNumber
(
save
.
getUseNumber
()+
newsum
.
getUseNumber
());
saveList
.
remove
(
save
);
break
;
}
}
}
}
//如果saveList不为空则save
boolean
a
=
true
;
if
(
saveList
.
size
()>
0
){
a
=
inventorySummaryService
.
saveBatch
(
saveList
);
}
//如果删除list不为空,那么进行批量删除
boolean
b
=
true
;
if
(
deleteList
.
size
()>
0
){
inventorySummaryService
.
removeBatchByIds
(
deleteList
);
b
=
inventorySummaryService
.
removeBatchByIds
(
deleteList
);
}
//将orderSum和newSum两个列表进行拼接,最终得到一个更新的list进行更新
List
<
InventorySummary
>
totalSumList
=
new
ArrayList
<>();
totalSumList
.
addAll
(
oldSummaryList
);
totalSumList
.
addAll
(
newSummaryList
);
return
inventorySummaryService
.
updateBatchById
(
totalSumList
);
boolean
c
=
inventorySummaryService
.
updateBatchById
(
totalSumList
);
//将库存表inventory中的装备的仓库id进行修改
//需要判断是否将报废区的数据进行移库,如果移动,那么所有的装备修改仓库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
true
;
}
//新增一条inventorysummary数据
...
...
jyzb-biz/src/main/java/com/junmp/jyzb/task/InvExpireMsg.java
View file @
ec70df2b
...
...
@@ -34,7 +34,7 @@ import java.util.Map;
/**
* @Author: Zhaojw
* @Description: 过期物资消息提醒
* @Description: 过期物资消息提醒
(过质保期数量的消息提醒)
* @DateTime: 2023/7/14 16:25
* @Params:
* @Return
...
...
@@ -62,6 +62,7 @@ public class InvExpireMsg implements JobAction {
//所有待判断的物资
wrapper
.
eq
(
Inventory:
:
getTermState
,
0
);
//获取未超期的物资数量
long
termCount
=
inventoryService
.
count
(
wrapper
);
List
<
Inventory
>
list
=
new
ArrayList
<>();
...
...
jyzb-biz/src/main/resources/mapper/InventoryMapper.xml
View file @
ec70df2b
...
...
@@ -474,6 +474,32 @@
)
</foreach>
</select>
<select
id=
"GetInvInfoByEpc"
resultType=
"com.junmp.jyzb.api.bean.dto.InventoryDto"
>
SELECT bi.*, po.org_name, es.name, et.name, bs.name, bw.name
FROM base_inventory bi
JOIN pub_org po ON po.org_id = bi.org_id_int
JOIN base_equipment_size es ON es.id = bi.size_id
JOIN base_equipment_type et ON et.id = bi.type_id
JOIN base_supplier bs ON bs.id = bi.supplier_id
JOIN base_warehouse bw ON bw.id = bi.location_id
WHERE bi.location_type = 0 AND epc IN
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
UNION ALL
SELECT bi.*, po.org_name, es.name, et.name, bs.name, bc.name
FROM base_inventory bi
JOIN pub_org po ON po.org_id = bi.org_id_int
JOIN base_equipment_size es ON es.id = bi.size_id
JOIN base_equipment_type et ON et.id = bi.type_id
JOIN base_supplier bs ON bs.id = bi.supplier_id
JOIN base_cabinet_box bcb ON bcb.id = bi.location_id
JOIN base_cabinet bc ON bc.id = bcb.cabinet_id
WHERE bi.location_type = 1 AND epc IN
<foreach
collection=
"list"
item=
"item"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</select>
</mapper>
\ No newline at end of file
jyzb-biz/src/main/resources/mapper/InventorySummaryMapper.xml
View file @
ec70df2b
...
...
@@ -268,7 +268,7 @@
select * from base_inventory_summary where
<foreach
collection=
"list"
item=
"item"
separator=
"or"
>
(
org_id_int = ${item[0]} AND location_id = '${item[1]}' AND type_id = ${item[
3]} AND size_id = '${item[2
]}' AND unit_price = ${item[4]}
org_id_int = ${item[0]} AND location_id = '${item[1]}' AND type_id = ${item[
2]} AND size_id = '${item[3
]}' AND unit_price = ${item[4]}
)
</foreach>
</select>
...
...
@@ -368,6 +368,13 @@
GROUP BY type_id,size_id,bi.org_id_int,location_id,bi.price) as t
GROUP BY t.locationId,t.type_id,t.size_id,t.orgId,t.unitPrice
</insert>
<insert
id=
"insertToSummary"
statementType=
"CALLABLE"
>
{call InsertInventorySummary(
#{summaryTableName, mode=IN},
#{sourceTableName, mode=IN},
#{warrantyThreshold, mode=IN, jdbcType=INTEGER}
)}
</insert>
</mapper>
\ No newline at end of file
jyzb-process/src/main/java/com/junmp/junmpProcess/service/impl/FlowInstanceServiceImpl.java
View file @
ec70df2b
...
...
@@ -165,7 +165,7 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
Object
skip
=
runtimeService
.
getVariable
(
processInstance
.
getId
(),
"skip"
);
if
(
ObjectUtils
.
isNotEmpty
(
skip
)
&&
BooleanUtils
.
toBoolean
(
skip
.
toString
())){
return
"
TG
"
+
processInstance
.
getId
();
return
"
skip
"
+
processInstance
.
getId
();
}
else
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论