Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mini-wms
概览
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
周海峰
mini-wms
Commits
517a4784
Commit
517a4784
authored
Dec 22, 2025
by
yubin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
90af9a4c
c7f4c428
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
126 行增加
和
25 行删除
+126
-25
ruoyi-admin/src/main/java/com/ruoyi/web/controller/inventory/InboundOrdersController.java
+1
-1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/inventory/MaterialsController.java
+10
-7
ruoyi-inventory/src/main/java/com/ruoyi/inventory/mapper/MaterialsMapper.java
+7
-1
ruoyi-inventory/src/main/java/com/ruoyi/inventory/service/impl/MaterialsServiceImpl.java
+91
-16
ruoyi-inventory/src/main/resources/mapper/inventory/MaterialsMapper.xml
+17
-0
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/inventory/InboundOrdersController.java
View file @
517a4784
...
@@ -56,7 +56,7 @@ public class InboundOrdersController extends BaseController
...
@@ -56,7 +56,7 @@ public class InboundOrdersController extends BaseController
private
IInboundOrdersService
inboundOrdersService
;
private
IInboundOrdersService
inboundOrdersService
;
@Autowired
@Autowired
private
ISysDictDataService
iSysDictDataService
;
private
ISysDictDataService
iSysDictDataService
;
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
InboundOrders
ServiceImpl
.
class
);
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
InboundOrders
Controller
.
class
);
/**
/**
* 查询入库单主列表
* 查询入库单主列表
*/
*/
...
...
ruoyi-admin/src/main/java/com/ruoyi/web/controller/inventory/MaterialsController.java
View file @
517a4784
package
com
.
ruoyi
.
web
.
controller
.
inventory
;
package
com
.
ruoyi
.
web
.
controller
.
inventory
;
import
java.util.Collections
;
import
java.io.File
;
import
java.util.List
;
import
java.util.*
;
import
java.util.Map
;
import
java.util.UUID
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.ruoyi.common.core.domain.entity.Materials
;
import
com.ruoyi.common.core.domain.entity.Materials
;
import
com.ruoyi.inventory.domain.Inventory
;
import
com.ruoyi.inventory.domain.Inventory
;
import
com.ruoyi.inventory.domain.OutboundOrderItems
;
import
com.ruoyi.inventory.domain.OutboundOrderItems
;
import
com.ruoyi.inventory.service.impl.MaterialsServiceImpl
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -33,7 +37,7 @@ public class MaterialsController extends BaseController
...
@@ -33,7 +37,7 @@ public class MaterialsController extends BaseController
{
{
@Autowired
@Autowired
private
IMaterialsService
materialsService
;
private
IMaterialsService
materialsService
;
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
MaterialsController
.
class
);
/**
/**
* 查询物料列表
* 查询物料列表
*/
*/
...
@@ -100,7 +104,6 @@ public class MaterialsController extends BaseController
...
@@ -100,7 +104,6 @@ public class MaterialsController extends BaseController
@PostMapping
@PostMapping
public
AjaxResult
add
(
@RequestBody
Materials
materials
)
public
AjaxResult
add
(
@RequestBody
Materials
materials
)
{
{
materials
.
setId
(
UUID
.
randomUUID
().
toString
());
return
toAjax
(
materialsService
.
insertMaterials
(
materials
));
return
toAjax
(
materialsService
.
insertMaterials
(
materials
));
}
}
...
@@ -150,7 +153,7 @@ public class MaterialsController extends BaseController
...
@@ -150,7 +153,7 @@ public class MaterialsController extends BaseController
ExcelUtil
<
Materials
>
util
=
new
ExcelUtil
<
Materials
>(
Materials
.
class
);
ExcelUtil
<
Materials
>
util
=
new
ExcelUtil
<
Materials
>(
Materials
.
class
);
List
<
Materials
>
materialsList
=
util
.
importExcel
(
file
.
getInputStream
());
List
<
Materials
>
materialsList
=
util
.
importExcel
(
file
.
getInputStream
());
String
operName
=
getUsername
();
String
operName
=
getUsername
();
String
message
=
materialsService
.
importMaterials
(
materialsList
,
updateSupport
,
operName
);
String
message
=
materialsService
.
importMaterials
(
materialsList
,
updateSupport
,
operName
);
return
success
(
message
);
return
success
(
message
);
}
}
...
...
ruoyi-inventory/src/main/java/com/ruoyi/inventory/mapper/MaterialsMapper.java
View file @
517a4784
...
@@ -106,6 +106,7 @@ public interface MaterialsMapper
...
@@ -106,6 +106,7 @@ public interface MaterialsMapper
* @return 结果
* @return 结果
*/
*/
public
int
deleteMaterialsByIds
(
String
[]
ids
);
public
int
deleteMaterialsByIds
(
String
[]
ids
);
/**
/**
* 获取物料sap和id map字典
* 获取物料sap和id map字典
*
*
...
@@ -114,5 +115,10 @@ public interface MaterialsMapper
...
@@ -114,5 +115,10 @@ public interface MaterialsMapper
@MapKey
(
"sap_no"
)
@MapKey
(
"sap_no"
)
public
Map
<
String
,
Map
<
String
,
String
>>
selectMaterialIdAndSapMap
();
public
Map
<
String
,
Map
<
String
,
String
>>
selectMaterialIdAndSapMap
();
/**
* 获取物料sap是否存在
*
* @return 结果
*/
public
List
<
Materials
>
sapIsExist
(
List
<
String
>
sapList
);
}
}
ruoyi-inventory/src/main/java/com/ruoyi/inventory/service/impl/MaterialsServiceImpl.java
View file @
517a4784
package
com
.
ruoyi
.
inventory
.
service
.
impl
;
package
com
.
ruoyi
.
inventory
.
service
.
impl
;
import
java.util.Date
;
import
java.io.File
;
import
java.util.List
;
import
java.util.*
;
import
java.util.Map
;
import
java.util.UUID
;
import
com.alibaba.excel.EasyExcel
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.ruoyi.common.core.domain.entity.Materials
;
import
com.ruoyi.common.core.domain.entity.Materials
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.inventory.domain.OutboundOrderItems
;
import
com.ruoyi.inventory.domain.OutboundOrderItems
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.ruoyi.inventory.mapper.MaterialsMapper
;
import
com.ruoyi.inventory.mapper.MaterialsMapper
;
...
@@ -28,7 +31,7 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -28,7 +31,7 @@ public class MaterialsServiceImpl implements IMaterialsService
{
{
@Autowired
@Autowired
private
MaterialsMapper
materialsMapper
;
private
MaterialsMapper
materialsMapper
;
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
MaterialsServiceImpl
.
class
);
/**
/**
* 查询物料
* 查询物料
*
*
...
@@ -66,14 +69,21 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -66,14 +69,21 @@ public class MaterialsServiceImpl implements IMaterialsService
@Override
@Override
public
int
insertMaterials
(
Materials
materials
)
public
int
insertMaterials
(
Materials
materials
)
{
{
List
<
Materials
>
materialsList
=
materialsMapper
.
selectMaterialsBySapNo
(
materials
.
getSapNo
());
if
(
materialsList
==
null
||
materialsList
.
isEmpty
()){
materials
.
setId
(
UUID
.
randomUUID
().
toString
());
materials
.
setCreateTime
(
DateUtils
.
getNowDate
());
materials
.
setCreateTime
(
DateUtils
.
getNowDate
());
materials
.
setCreateUserCode
(
SystemUtils
.
getUserName
());
materials
.
setCreateUserCode
(
SystemUtils
.
getUserName
());
materials
.
setCreateBy
(
SystemUtils
.
getUserName
());
materials
.
setCreateBy
(
SystemUtils
.
getUserName
());
materials
.
setIsUsed
(
1L
);
return
materialsMapper
.
insertMaterials
(
materials
);
return
materialsMapper
.
insertMaterials
(
materials
);
}
else
{
return
updateMaterials
(
materials
);
}
}
}
/**
/**
* 修改物料
* 修改物料
(调用updateMaterialsIsUsed方法将原本的物料有效状态设置为0)
*
*
* @param materials 物料
* @param materials 物料
* @return 结果
* @return 结果
...
@@ -81,14 +91,20 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -81,14 +91,20 @@ public class MaterialsServiceImpl implements IMaterialsService
@Override
@Override
public
int
updateMaterials
(
Materials
materials
)
public
int
updateMaterials
(
Materials
materials
)
{
{
String
[]
ids
=
materials
.
getId
().
split
(
","
);
updateMaterialsIsUsed
(
ids
);
materials
.
setId
(
UUID
.
randomUUID
().
toString
());
materials
.
setUpdateUserCode
(
SystemUtils
.
getUserName
());
materials
.
setUpdateUserCode
(
SystemUtils
.
getUserName
());
materials
.
setUpdateBy
(
SystemUtils
.
getUserName
());
materials
.
setUpdateBy
(
SystemUtils
.
getUserName
());
materials
.
setUpdateTime
(
DateUtils
.
getNowDate
());
materials
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
materialsMapper
.
updateMaterials
(
materials
);
materials
.
setIsUsed
(
1L
);
return
materialsMapper
.
insertMaterials
(
materials
);
}
}
/**
/**
* 修改物料的使用状态
* 修改物料的使用状态
(删除用)
*
*
* @param ids 需要删除的物料主键
* @param ids 需要删除的物料主键
* @return 结果
* @return 结果
...
@@ -111,8 +127,17 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -111,8 +127,17 @@ public class MaterialsServiceImpl implements IMaterialsService
{
{
throw
new
ServiceException
(
"导入用户数据不能为空!"
);
throw
new
ServiceException
(
"导入用户数据不能为空!"
);
}
}
int
totalNum
=
0
;
int
successNum
=
0
;
int
successNum
=
0
;
int
failureNum
=
0
;
int
failureNum
=
0
;
int
updateNum
=
0
;
List
<
String
>
sapList
=
extractSapCodes
(
materialsList
);
List
<
Materials
>
sapExist
=
materialsMapper
.
sapIsExist
(
sapList
);
Map
<
String
,
Integer
>
sapMap
=
new
HashMap
<>();
for
(
Materials
materials
:
sapExist
){
sapMap
.
put
(
materials
.
getSapNo
(),
1
);
}
StringBuilder
successMsg
=
new
StringBuilder
();
StringBuilder
successMsg
=
new
StringBuilder
();
StringBuilder
failureMsg
=
new
StringBuilder
();
StringBuilder
failureMsg
=
new
StringBuilder
();
Date
now
=
DateUtils
.
getNowDate
();
Date
now
=
DateUtils
.
getNowDate
();
...
@@ -122,10 +147,19 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -122,10 +147,19 @@ public class MaterialsServiceImpl implements IMaterialsService
{
{
try
try
{
{
totalNum
++;
String
sapNo
=
materials
.
getSapNo
();
String
materialName
=
materials
.
getMaterialName
();
if
(
StringUtils
.
isBlank
(
sapNo
)
||
StringUtils
.
isBlank
(
materialName
))
{
failureNum
++;
continue
;
}
sapNo
=
materials
.
getSapNo
().
trim
();
materials
.
setSapNo
(
sapNo
);
materials
.
setId
(
UUID
.
randomUUID
().
toString
());
materials
.
setId
(
UUID
.
randomUUID
().
toString
());
// 填充创建人、创建时间、修改人、修改时间
// 填充创建人、创建时间、修改人、修改时间
materials
.
setCreateBy
(
operId
);
materials
.
setCreateBy
(
operId
);
materials
.
setCreateUserCode
(
SystemUtils
.
getUserName
());
materials
.
setCreateTime
(
now
);
materials
.
setCreateTime
(
now
);
// 填充创建用户编码和更新用户编码
// 填充创建用户编码和更新用户编码
materials
.
setCreateUserCode
(
operId
);
materials
.
setCreateUserCode
(
operId
);
...
@@ -142,31 +176,72 @@ public class MaterialsServiceImpl implements IMaterialsService
...
@@ -142,31 +176,72 @@ public class MaterialsServiceImpl implements IMaterialsService
{
{
materials
.
setSortNo
(
0L
);
// 默认排序号
materials
.
setSortNo
(
0L
);
// 默认排序号
}
}
if
(
sapMap
.
get
(
materials
.
getSapNo
())
==
null
){
materialsMapper
.
insertMaterials
(
materials
);
materialsMapper
.
insertMaterials
(
materials
);
successNum
++;
successNum
++;
successMsg
.
append
(
"<br/>"
+
successNum
+
"、物料 "
+
materials
.
getMaterialName
()
+
" 导入成功"
);
successMsg
.
append
(
"<br/>"
+
successNum
+
"、物料 "
+
materials
.
getMaterialName
()
+
" 导入成功"
);
}
else
{
updateMaterials
(
materials
);
updateNum
++;
successMsg
.
append
(
"<br/>"
+
updateNum
+
"、物料 "
+
materials
.
getMaterialName
()
+
" 已存在,覆盖完成"
);
}
}
}
catch
(
Exception
e
)
catch
(
Exception
e
)
{
{
failureNum
++;
failureNum
++;
String
msg
=
"<br/>"
+
failureNum
+
"、物料 "
+
materials
.
getMaterialName
()
+
" 导入失败:"
;
String
msg
=
"<br/>"
+
failureNum
+
"、物料 "
+
materials
.
getMaterialName
()
+
" 导入失败:"
;
failureMsg
.
append
(
msg
+
e
.
getMessage
());
failureMsg
.
append
(
msg
+
e
.
getMessage
());
}
}
}
}
if
(
failureNum
>
0
)
if
(
failureNum
>
0
)
{
{
failureMsg
.
insert
(
0
,
"很抱歉,导入失败!共 "
+
failureNum
+
" 条数据格式不正确"
);
failureMsg
.
insert
(
0
,
"很抱歉,导入失败!共 "
+
failureNum
+
" 条数据格式不正确,SAPNo或物料名称可能不存在"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
else
{
successMsg
.
insert
(
0
,
"恭喜您,数据已全部导入成功!共 "
+
successNum
+
" 条,数据如下:"
);
}
}
successMsg
.
insert
(
0
,
"恭喜您,数据已全部导入成功!共 "
+
totalNum
+
" 条,数据如下:"
);
successMsg
.
append
(
"<br/>"
+
failureMsg
);
return
successMsg
.
toString
();
return
successMsg
.
toString
();
}
}
/**
/**
* 从物料列表中提取SAP标识并去重
* @param materialsList 物料列表(核心参数替换为这个)
* @return 去重后的SAP标识列表
*/
private
List
<
String
>
extractSapCodes
(
List
<
Materials
>
materialsList
)
{
// 1. 初始化Set用于自动去重
Set
<
String
>
sapCodeSet
=
new
HashSet
<>();
// 2. 判空:避免传入null列表导致空指针
if
(
materialsList
==
null
||
materialsList
.
isEmpty
())
{
log
.
warn
(
"物料列表为空,未提取到任何SAP标识"
);
return
new
ArrayList
<>();
}
// 3. 遍历物料列表,提取SAP标识
for
(
Materials
material
:
materialsList
)
{
// 防御性判空:避免单个物料对象为null
if
(
material
==
null
)
{
continue
;
}
// 4. 获取SAP标识(替换为你实际的getter方法,比如getSapId())
String
sapCode
=
material
.
getSapNo
();
// 5. 过滤空值/空白字符串/无效值(和原逻辑一致)
if
(
StringUtils
.
hasText
(
sapCode
)
&&
!
"null"
.
equalsIgnoreCase
(
sapCode
.
trim
()))
{
// 统一trim去空格,避免" SAP001 "和"SAP001"被判定为不同值
sapCodeSet
.
add
(
sapCode
.
trim
());
}
}
// 6. 打印日志(和原逻辑一致)
log
.
info
(
"物料列表解析完成,共提取到{}个不重复的SAP标识"
,
sapCodeSet
.
size
());
// 7. Set转List返回
return
new
ArrayList
<>(
sapCodeSet
);
}
/**
* @description: 获取物料 的 sap_no Name 做成字典
* @description: 获取物料 的 sap_no Name 做成字典
* @author cs
* @author cs
* @date 2025/12/4
* @date 2025/12/4
...
...
ruoyi-inventory/src/main/resources/mapper/inventory/MaterialsMapper.xml
View file @
517a4784
...
@@ -295,4 +295,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
...
@@ -295,4 +295,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectMaterialIdAndSapMap"
resultType=
"java.util.Map"
>
<select
id=
"selectMaterialIdAndSapMap"
resultType=
"java.util.Map"
>
select id,sap_no from materials where is_used = 1
select id,sap_no from materials where is_used = 1
</select>
</select>
<!-- 精简后的resultMap -->
<resultMap
type=
"Materials"
id=
"MaterialSapResult"
>
<result
column=
"sap_no"
property=
"sapNo"
/>
</resultMap>
<select
id=
"sapIsExist"
resultMap=
"MaterialSapResult"
parameterType=
"java.util.List"
>
select sap_no from materials
<where>
is_used = 1
and sap_no in
<foreach
collection=
"list"
item=
"sapNo"
separator=
","
open=
"("
close=
")"
>
#{sapNo}
</foreach>
</where>
</select>
</mapper>
</mapper>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论