Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ximai
mes
Commits
5221cc34
Commit
5221cc34
authored
Oct 24, 2024
by
温志超
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
09c3e608
f08dc569
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
430 additions
and
206 deletions
+430
-206
messages_th.properties
admin/src/main/resources/i18n/messages_th.properties
+3
-0
SysUserExcelImport.java
...in/java/com/ximai/common/core/dto/SysUserExcelImport.java
+5
-33
IMdItemService.java
...rc/main/java/com/ximai/mes/md/service/IMdItemService.java
+18
-2
MdItemServiceImpl.java
...java/com/ximai/mes/md/service/impl/MdItemServiceImpl.java
+63
-37
ProWorkOrderBom.java
...om/ximai/mes/pro/domain/proWorkOrder/ProWorkOrderBom.java
+21
-3
ProWorkorderServiceImpl.java
...ro/service/impl/proWorkOrder/ProWorkorderServiceImpl.java
+184
-114
IProWorkorderService.java
...ai/mes/pro/service/proWorkOrder/IProWorkorderService.java
+18
-2
ErpService.java
mes/src/main/java/com/ximai/mes/remote/ErpService.java
+13
-0
MdItemErpQuery.java
...rc/main/java/com/ximai/mes/remote/dto/MdItemErpQuery.java
+6
-2
MdItemSyncMarkUpdate.java
...n/java/com/ximai/mes/remote/dto/MdItemSyncMarkUpdate.java
+25
-0
MdItemWarehouseErpDto.java
.../java/com/ximai/mes/remote/dto/MdItemWarehouseErpDto.java
+4
-0
ProWorkorderBomErpDto.java
.../java/com/ximai/mes/remote/dto/ProWorkorderBomErpDto.java
+9
-9
ProWorkorderErpDto.java
...ain/java/com/ximai/mes/remote/dto/ProWorkorderErpDto.java
+1
-1
ProWorkorderErpQuery.java
...n/java/com/ximai/mes/remote/dto/ProWorkorderErpQuery.java
+13
-0
ProWorkorderSyncMarkUpdate.java
.../com/ximai/mes/remote/dto/ProWorkorderSyncMarkUpdate.java
+28
-0
ProWorkOrderBomMapper.xml
...sources/mapper/pro/proWorkOrder/ProWorkOrderBomMapper.xml
+14
-0
SysUserServiceImpl.java
...ava/com/ximai/system/service/impl/SysUserServiceImpl.java
+5
-3
No files found.
admin/src/main/resources/i18n/messages_th.properties
View file @
5221cc34
...
...
@@ -59,6 +59,8 @@ basic.error.data.exist=\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E21\u0E35\u0E2D\u0
basic.error.data.not.exist
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E44
\u
0E21
\u
0E48
\u
0E21
\u
0E35
\u
0E2D
\u
0E22
\u
0E39
\u
0E48!
basic.import.error
=
\u
0E01
\u
0E32
\u
0E23
\u
0E19
\u
0E4D
\u
0E32
\u
0E40
\u
0E02
\u
0E49
\u
0E32
\u
0E25
\u
0E49
\u
0E21
\u
0E40
\u
0E2B
\u
0E25
\u
0E27:{0}
basic.import.error.not.null
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E19
\u
0E4D
\u
0E32
\u
0E40
\u
0E02
\u
0E49
\u
0E32
\u
0E15
\u
0E49
\u
0E2D
\u
0E07
\u
0E44
\u
0E21
\u
0E48
\u
0E27
\u
0E48
\u
0E32
\u
0E07
\u
0E40
\u
0E1B
\u
0E25
\u
0E48
\u
0E32
basic.excel.error.not.null.DictionaryFormat
=
\u
0E01
\u
0E23
\u
0E38
\u
0E13
\u
0E32
\u
0E1B
\u
0E23
\u
0E31
\u
0E1A
\u
0E41
\u
0E15
\u
0E48
\u
0E07
\u
0E04
\u
0E4D
\u
0E32
\u
0E2D
\u
0E18
\u
0E34
\u
0E1A
\u
0E32
\u
0E22
\u
0E1B
\u
0E23
\u
0E30
\u
0E01
\u
0E2D
\u
0E1A
\u
0E02
\u
0E2D
\u
0E07
\u
0E1E
\u
0E08
\u
0E19
\u
0E32
\u
0E19
\u
0E38
\u
0E01
\u
0E23
\u
0E21DictionaryFormat
basic.excel.error.not.null.StaticDataMappingFormat
=
\u
0E01
\u
0E23
\u
0E38
\u
0E13
\u
0E32
\u
0E1B
\u
0E23
\u
0E31
\u
0E1A
\u
0E41
\u
0E15
\u
0E48
\u
0E07
\u
0E01
\u
0E32
\u
0E23
\u
0E41
\u
0E21
\u
0E1B
\u
0E04
\u
0E4D
\u
0E32
\u
0E2D
\u
0E18
\u
0E34
\u
0E1A
\u
0E32
\u
0E22
\u
0E1B
\u
0E23
\u
0E30
\u
0E01
\u
0E2D
\u
0E1AStaticDataMappingFormat
basic.error.data.cannot.delete
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E27
\u
0E31
\u
0E2A
\u
0E14
\u
0E38
\u
0E19
\u
0E35
\u
0E49
\u
0E16
\u
0E39
\u
0E01
\u
0E43
\u
0E0A
\u
0E49
\u
0E41
\u
0E25
\u
0E49
\u
0E27
\u
0E41
\u
0E25
\u
0E30
\u
0E44
\u
0E21
\u
0E48
\u
0E2A
\u
0E32
\u
0E21
\u
0E32
\u
0E23
\u
0E16
\u
0E25
\u
0E1A
\u
0E44
\u
0E14
\u
0E49!
#md.material
md.material.data.limit.can.not.delete
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E27
\u
0E31
\u
0E2A
\u
0E14
\u
0E38
\u
0E19
\u
0E35
\u
0E49
\u
0E16
\u
0E39
\u
0E01
\u
0E43
\u
0E0A
\u
0E49
\u
0E41
\u
0E25
\u
0E49
\u
0E27
\u
0E41
\u
0E25
\u
0E30
\u
0E44
\u
0E21
\u
0E48
\u
0E2A
\u
0E32
\u
0E21
\u
0E32
\u
0E23
\u
0E16
\u
0E25
\u
0E1A
\u
0E44
\u
0E14
\u
0E49!
...
...
@@ -176,6 +178,7 @@ pro.schedule.error.to.selfmade.quantity.black=\u0E01\u0E32\u0E23\u0E41\u0E1B\u0E
pro.schedule.error.not.null.starttime
=
\u
0E40
\u
0E27
\u
0E25
\u
0E32
\u
0E40
\u
0E23
\u
0E34
\u
0E48
\u
0E21
\u
0E15
\u
0E49
\u
0E2D
\u
0E07
\u
0E44
\u
0E21
\u
0E48
\u
0E27
\u
0E48
\u
0E32
\u
0E07
pro.schedule.error.not.null.duration
=
\u
0E23
\u
0E30
\u
0E22
\u
0E30
\u
0E40
\u
0E27
\u
0E25
\u
0E32
\u
0E01
\u
0E32
\u
0E23
\u
0E1C
\u
0E25
\u
0E34
\u
0E15
\u
0E15
\u
0E49
\u
0E2D
\u
0E07
\u
0E21
\u
0E32
\u
0E01
\u
0E01
\u
0E27
\u
0E48
\u
0E320
pro.schedule.limit.min.duration
=
\u
0E23
\u
0E30
\u
0E22
\u
0E30
\u
0E40
\u
0E27
\u
0E25
\u
0E32
\u
0E01
\u
0E32
\u
0E23
\u
0E1C
\u
0E25
\u
0E34
\u
0E15
\u
0E15
\u
0E49
\u
0E2D
\u
0E07
\u
0E21
\u
0E32
\u
0E01
\u
0E01
\u
0E27
\u
0E48
\u
0E320
pro.schedule.error.not.null.vendor
=
\u
0E15
\u
0E31
\u
0E27
\u
0E1B
\u
0E23
\u
0E30
\u
0E21
\u
0E27
\u
0E25
\u
0E1C
\u
0E25
\u
0E20
\u
0E32
\u
0E22
\u
0E19
\u
0E2D
\u
0E01
\u
0E44
\u
0E21
\u
0E48
\u
0E2A
\u
0E32
\u
0E21
\u
0E32
\u
0E23
\u
0E16
\u
0E27
\u
0E48
\u
0E32
\u
0E07
\u
0E44
\u
0E14
\u
0E49
pro.schedule.error.cannot.use.standardtime
=
\u
0E44
\u
0E21
\u
0E48
\u
0E23
\u
0E2D
\u
0E07
\u
0E23
\u
0E31
\u
0E1A
\u
0E2B
\u
0E19
\u
0E48
\u
0E27
\u
0E22
\u
0E07
\u
0E32
\u
0E19
\u
0E0A
\u
0E31
\u
0E48
\u
0E27
\u
0E42
\u
0E21
\u
0E07{0}
pro.schedule.error.cal.error1
=
\u
0E40
\u
0E27
\u
0E25
\u
0E32
\u
0E2A
\u
0E34
\u
0E49
\u
0E19
\u
0E2A
\u
0E38
\u
0E14
\u
0E02
\u
0E2D
\u
0E07
\u
0E1B
\u
0E0F
\u
0E34
\u
0E17
\u
0E34
\u
0E19
\u
0E15
\u
0E49
\u
0E2D
\u
0E07
\u
0E21
\u
0E32
\u
0E01
\u
0E01
\u
0E27
\u
0E48
\u
0E32
\u
0E40
\u
0E27
\u
0E25
\u
0E32
\u
0E40
\u
0E23
\u
0E34
\u
0E48
\u
0E21
\u
0E15
\u
0E49
\u
0E19
pro.schedule.error.not.exist.solution
=
\u
0E15
\u
0E32
\u
0E23
\u
0E32
\u
0E07
\u
0E07
\u
0E32
\u
0E19
\u
0E01
\u
0E32
\u
0E23
\u
0E1C
\u
0E25
\u
0E34
\u
0E15:{0}
\u
0E44
\u
0E21
\u
0E48
\u
0E1E
\u
0E1A
\u
0E23
\u
0E38
\u
0E48
\u
0E19
\u
0E01
\u
0E32
\u
0E23
\u
0E1C
\u
0E25
\u
0E34
\u
0E15
...
...
common/src/main/java/com/ximai/common/core/dto/SysUserExcelImport.java
View file @
5221cc34
...
...
@@ -14,6 +14,8 @@ import com.ximai.common.core.domain.entity.SysDept;
import
com.ximai.common.core.domain.entity.SysRole
;
import
com.ximai.common.utils.excel.I18nField
;
import
com.ximai.common.utils.excel.converter.LocalDateTimeConverter
;
import
com.ximai.common.utils.excel.converter.StaticDataMappingConverter
;
import
com.ximai.common.utils.excel.converter.StaticDataMappingFormat
;
import
com.ximai.common.xss.Xss
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -33,14 +35,7 @@ import java.util.Set;
*/
@Data
@ApiModel
(
"用户导入"
)
public
class
SysUserExcelImport
extends
BaseExcelImport
{
/**
* 部门ID
*/
@ExcelProperty
(
"部门编号"
)
@I18nField
(
"user.jcaptcha.error2"
)
private
Long
deptId
;
public
class
SysUserExcelImport
{
/**
* 用户账号
...
...
@@ -55,7 +50,6 @@ public class SysUserExcelImport extends BaseExcelImport {
@ExcelProperty
(
"用户名称"
)
@I18nField
(
"user.nickName"
)
private
String
nickName
;
/**
* 用户邮箱
*/
...
...
@@ -73,32 +67,10 @@ public class SysUserExcelImport extends BaseExcelImport {
/**
* 用户性别
*/
@ExcelProperty
(
"用户性别"
)
@ExcelProperty
(
value
=
"用户性别"
,
converter
=
StaticDataMappingConverter
.
class
)
@StaticDataMappingFormat
(
value
=
{
"1"
,
"2"
},
excelValue
=
{
"男"
,
"女"
})
private
String
sex
;
/**
* 帐号状态(0正常 1停用)
*/
@ExcelProperty
(
"帐号状态"
)
private
String
status
;
/**
* 删除标志(0代表存在 2代表删除)
*/
private
String
delFlag
;
/**
* 最后登录IP
*/
@ExcelProperty
(
"最后登录IP"
)
private
String
loginIp
;
/**
* 最后登录时间
*/
@ExcelProperty
(
value
=
"最后登录时间"
,
converter
=
LocalDateTimeConverter
.
class
)
private
Date
loginDate
;
@ApiModelProperty
(
"国际化语言"
)
private
String
locale
;
}
mes/src/main/java/com/ximai/mes/md/service/IMdItemService.java
View file @
5221cc34
...
...
@@ -7,9 +7,11 @@ import com.ximai.mes.md.domain.MdItem;
import
com.ximai.mes.md.vo.ItemUpdateMesVo
;
import
com.ximai.mes.md.vo.MdItemVo
;
import
com.ximai.mes.md.vo.SapItemVo
;
import
com.ximai.mes.remote.dto.MdItemErpDto
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.Map
;
public
interface
IMdItemService
{
...
...
@@ -113,8 +115,22 @@ public interface IMdItemService {
void
syncErpData
();
/**
* 同步新增ERP数据
* 同步ERP数据
* 查询所有ERP同步标识为未同步数据,同步成功后修改为已同步
* 每次更新1000行,直到所有数据同步完成为止
*/
void
syncEditErpData
();
/**
* 同步ERP数据
* 查询所有ERP同步标识为未同步数据,同步成功后修改为已同步
* 每次更新1000行,直到所有数据同步完成为止
*/
void
syncEditErpData
(
MdItemErpDto
itemErpDto
,
Map
<
Long
,
MdItemType
>
itemTypeMap
);
/**
* 初始同步新增ERP数据
*/
void
s
yncAddErpData
();
void
initS
yncAddErpData
();
}
mes/src/main/java/com/ximai/mes/md/service/impl/MdItemServiceImpl.java
View file @
5221cc34
...
...
@@ -100,6 +100,8 @@ public class MdItemServiceImpl implements IMdItemService {
private
ErpService
erpService
;
@Autowired
private
IMdItemWarehouseService
itemWarehouseService
;
@Autowired
private
IMdItemService
mdItemService
;
@Override
...
...
@@ -469,13 +471,11 @@ public class MdItemServiceImpl implements IMdItemService {
@Override
public
void
syncErpData
()
{
//优先更新修改数据
this
.
syncEditErpData
();
//新增创建数据
this
.
syncAddErpData
();
mdItemService
.
syncEditErpData
();
}
@Transactional
public
void
s
yncAddErpData
(){
public
void
initS
yncAddErpData
(){
MdItemErpQuery
itemErpQuery
=
new
MdItemErpQuery
();
//获取最晚创建时间
Date
maxErpCreateTime
=
mdItemMapper
.
maxErpCreateTime
();
...
...
@@ -515,35 +515,41 @@ public class MdItemServiceImpl implements IMdItemService {
});
//存在数据续断抓取,直到所有数据更新完成
if
(
list
.
size
()==
1000
){
this
.
s
yncAddErpData
();
this
.
initS
yncAddErpData
();
}
}
@Transactional
public
void
syncEditErpData
(){
MdItemErpQuery
itemErpQuery
=
new
MdItemErpQuery
();
//获取最晚修改时间
Date
maxErpUpdateTime
=
mdItemMapper
.
maxErpUpdateTime
();
if
(
maxErpUpdateTime
==
null
){
Calendar
curr
=
Calendar
.
getInstance
();
curr
.
set
(
Calendar
.
YEAR
,
2000
);
maxErpUpdateTime
=
curr
.
getTime
();
}
ErpPageParams
.
Sort
sort
=
new
ErpPageParams
.
Sort
(){{
List
<
ErpPageParams
.
Order
>
orders
=
new
ArrayList
<>();
orders
.
add
(
new
ErpPageParams
.
Order
(
"modiDate"
,
"asc"
));
this
.
setOrders
(
orders
);
}};
itemErpQuery
.
setSyncMarkNe
(
"Y"
);
itemErpQuery
.
setSort
(
sort
);
itemErpQuery
.
setGtEqModiDate
(
maxErpUpdateTime
);
itemErpQuery
.
setCurrent
(
1
);
itemErpQuery
.
setPageSize
(
1000
);
//每次抓取1000行
List
<
MdItemErpDto
>
list
=
erpService
.
getItemList
(
itemErpQuery
).
getData
();
Map
<
Long
,
MdItemType
>
itemTypeMap
=
iItemTypeService
.
selectItemTypeList
(
new
MdItemType
()).
stream
().
collect
(
Collectors
.
toMap
(
s
->
s
.
getItemTypeId
(),
s
->
s
));
list
.
forEach
(
s
->{
mdItemService
.
syncEditErpData
(
s
,
itemTypeMap
);
});
//存在数据续断抓取,直到所有数据更新完成
if
(
list
.
size
()==
1000
){
this
.
syncEditErpData
();
}
}
@Transactional
@Override
public
void
syncEditErpData
(
MdItemErpDto
s
,
Map
<
Long
,
MdItemType
>
itemTypeMap
)
{
List
<
MdItem
>
dbList
=
mdItemMapper
.
selectMdItemByCode
(
s
.
getItemCode
());
if
(
dbList
.
size
()==
0
)
{
if
(
"Y"
.
equalsIgnoreCase
(
s
.
getVerifyStatus
()))
{
MdItem
insertTemp
=
BeanUtil
.
toBean
(
s
,
MdItem
.
class
);
if
(
itemTypeMap
.
containsKey
(
s
.
getItemTypeId
())){
insertTemp
.
setItemTypeName
(
itemTypeMap
.
get
(
s
.
getItemTypeId
()).
getItemTypeName
());
}
this
.
insertMdItem
(
insertTemp
);
}
}
else
{
...
...
@@ -551,28 +557,48 @@ public class MdItemServiceImpl implements IMdItemService {
if
(!
"Y"
.
equalsIgnoreCase
(
s
.
getVerifyStatus
())){
dbList
.
get
(
0
).
setEnableFlag
(
"N"
);
}
if
(
itemTypeMap
.
containsKey
(
s
.
getItemTypeId
())){
dbList
.
get
(
0
).
setItemTypeName
(
itemTypeMap
.
get
(
s
.
getItemTypeId
()).
getItemTypeName
());
}
this
.
updateMdItem
(
dbList
.
get
(
0
));
}
//更新库房明细
List
<
MdItemWarehouseErpDto
>
detailList
=
s
.
getWarehouseList
();
MdItemWarehouse
itemWarehouseQuery
=
new
MdItemWarehouse
();
itemWarehouseQuery
.
setItemCode
(
s
.
getItemCode
());
List
<
MdItemWarehouseDto
>
detailDb
list
=
itemWarehouseService
.
selectMdItemWarehouseList
(
itemWarehouseQuery
);
List
<
MdItemWarehouseDto
>
dbDetail
list
=
itemWarehouseService
.
selectMdItemWarehouseList
(
itemWarehouseQuery
);
detailList
.
forEach
(
s2
->{
java
.
util
.
Optional
<
MdItemWarehouseDto
>
itemWarehouseDto
=
detailDblist
.
stream
().
filter
(
temp
->
temp
.
getWarehouseCode
().
equals
(
s2
.
getWarehouseCode
())).
findFirst
();
QueryWrapper
<
MdItem
>
itemQuery
=
new
QueryWrapper
<>();
itemQuery
.
eq
(
"item_code"
,
s2
.
getItemCode
());
List
<
MdItem
>
itemList
=
mdItemService
.
selectListByQw
(
itemQuery
);
if
(
itemList
.
size
()>
0
){
MdItem
dbItem
=
itemList
.
get
(
0
);
java
.
util
.
Optional
<
MdItemWarehouseDto
>
itemWarehouseDto
=
dbDetaillist
.
stream
().
filter
(
temp
->
temp
.
getWarehouseCode
().
equals
(
s2
.
getWarehouseCode
())).
findFirst
();
if
(
itemWarehouseDto
.
isPresent
()){
MdItemWarehouseUpdate
updateDetail
=
BeanUtil
.
toBean
(
itemWarehouseDto
.
get
(),
MdItemWarehouseUpdate
.
class
);
BeanUtil
.
copyProperties
(
s2
,
updateDetail
);
updateDetail
.
setItemId
(
dbItem
.
getItemId
());
itemWarehouseService
.
updateMdItemWarehouse
(
updateDetail
);
}
else
{
MdItemWarehouseCreate
insertDetail
=
BeanUtil
.
toBeanIgnoreError
(
s2
,
MdItemWarehouseCreate
.
class
);
insertDetail
.
setItemId
(
dbItem
.
getItemId
());
itemWarehouseService
.
insertMdItemWarehouse
(
insertDetail
);
}
}
});
//判断删除关联仓库
dbDetaillist
.
forEach
(
s2
->{
if
(
detailList
.
stream
().
noneMatch
(
temp
->
temp
.
getWarehouseCode
().
equals
(
s2
.
getWarehouseCode
()))){
itemWarehouseService
.
deleteMdItemWarehouseByItemWarehouseId
(
s2
.
getItemWarehouseId
());
}
});
//存在数据续断抓取,直到所有数据更新完成
if
(
list
.
size
()==
1000
){
this
.
syncEditErpData
();
//回写ERP标识
MdItemSyncMarkUpdate
syncMarkUpdate
=
new
MdItemSyncMarkUpdate
();
syncMarkUpdate
.
setItemCode
(
s
.
getItemCode
());
ErpResponseResult
<
Object
>
rst
=
erpService
.
materialSyncMark
(
syncMarkUpdate
);
if
(!
rst
.
isSuccess
()){
log
.
error
(
String
.
format
(
"回写物料同步状态失败:%s,%s"
,
s
.
getItemCode
(),
rst
.
getErrorMessage
()));
throw
new
ServiceException
(
rst
.
getErrorMessage
());
}
}
}
mes/src/main/java/com/ximai/mes/pro/domain/proWorkOrder/ProWorkOrderBom.java
View file @
5221cc34
package
com
.
ximai
.
mes
.
pro
.
domain
.
proWorkOrder
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.ximai.common.annotation.Excel
;
import
com.ximai.common.core.domain.BaseEntity
;
import
com.ximai.mes.pro.domain.sap.SAPDtoProWorkOrderBom
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 生产工单BOM对象 pro_work_order_bom
...
...
@@ -42,10 +46,10 @@ public class ProWorkOrderBom extends BaseEntity {
@Excel
(
name
=
"物料ID"
)
private
Long
itemId
;
/**
* 物料
ID
* 物料
编码
*/
@
Excel
(
name
=
"物料编号"
)
private
Lo
ng
itemCode
;
@
ApiModelProperty
(
"物料编号"
)
private
Stri
ng
itemCode
;
/**
* sap的物料编号
...
...
@@ -133,6 +137,20 @@ public class ProWorkOrderBom extends BaseEntity {
@Excel
(
name
=
"是否倒冲"
)
private
String
isBackflush
;
@ApiModelProperty
(
"工序名"
)
private
String
opName
;
@ApiModelProperty
(
"工单单别"
)
private
String
orderSource
;
@ApiModelProperty
(
"erp创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
erpCreateTime
;
@ApiModelProperty
(
"erp修改时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
erpUpdateTime
;
private
String
itemName
;
...
...
mes/src/main/java/com/ximai/mes/pro/service/impl/proWorkOrder/ProWorkorderServiceImpl.java
View file @
5221cc34
This diff is collapsed.
Click to expand it.
mes/src/main/java/com/ximai/mes/pro/service/proWorkOrder/IProWorkorderService.java
View file @
5221cc34
...
...
@@ -2,6 +2,7 @@ package com.ximai.mes.pro.service.proWorkOrder;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.mes.constant.WorkorderStatusEnum
;
import
com.ximai.mes.md.domain.MdItem
;
import
com.ximai.mes.pro.domain.ep.EPDtoProWorkOrder
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.sap.SAPDtoProWorkOrder
;
...
...
@@ -9,6 +10,7 @@ import com.ximai.mes.pro.domain.vo.ProWorkOrderProcessToolLoseVo;
import
com.ximai.mes.pro.domain.vo.ProWorkorderQuery
;
import
com.ximai.mes.pro.domain.vo.ProWorkorderVo
;
import
com.ximai.mes.pro.domain.vo.proWorkOrder.*
;
import
com.ximai.mes.remote.dto.ProWorkorderErpDto
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -187,7 +189,21 @@ public interface IProWorkorderService {
void
syncErpData
();
/**
*
同步新增
ERP数据
*
首次新增同步
ERP数据
*/
void
syncAddErpData
();
void
initSyncAddErpData
();
/**
* 同步修改ERP数据
* 查询所有ERP同步标识为未同步数据,同步成功后修改为已同步
* 每次更新1000行,直到所有数据同步完成为止
*/
void
syncEditErpData
();
/**
* 同步修改ERP数据
* 查询所有ERP同步标识为未同步数据,同步成功后修改为已同步
* 每次更新1000行,直到所有数据同步完成为止
*/
void
syncEditErpData
(
ProWorkorderErpDto
workorderErpDto
,
Map
<
String
,
MdItem
>
itemMap
);
}
mes/src/main/java/com/ximai/mes/remote/ErpService.java
View file @
5221cc34
...
...
@@ -42,4 +42,17 @@ public interface ErpService {
@PostMapping
(
value
=
"/mocta/getMoctaList"
)
ErpResponseResult
<
List
<
ProWorkorderErpDto
>>
getWorkorderList
(
ProWorkorderErpQuery
workorderErpQuery
);
/**
* 工单更新状态标识
*/
@PostMapping
(
value
=
"/mocta/syncMark"
)
ErpResponseResult
<
Object
>
workorderSyncMark
(
ProWorkorderSyncMarkUpdate
syncMarkUpdate
);
/**
* 物料更新状态标识
*/
@PostMapping
(
value
=
"/invmb/syncMark"
)
ErpResponseResult
<
Object
>
materialSyncMark
(
MdItemSyncMarkUpdate
syncMarkUpdate
);
}
mes/src/main/java/com/ximai/mes/remote/dto/MdItemErpQuery.java
View file @
5221cc34
...
...
@@ -25,15 +25,19 @@ public class MdItemErpQuery extends ErpPageParams
@ApiModelProperty
(
"品名"
)
private
String
itemName
;
@JsonProperty
(
"neUdf08"
)
@ApiModelProperty
(
"同步标识状态-不等于"
)
private
String
syncMarkNe
;
@JsonProperty
(
"mb109"
)
@ApiModelProperty
(
"核准状态"
)
private
String
verifyStatus
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期
-大于等于
"
)
@JsonFormat
(
pattern
=
"yyyyMMddHHmmssSSS"
)
private
Date
gtEqCreateDate
;
@ApiModelProperty
(
"修改日期"
)
@ApiModelProperty
(
"修改日期
-大于等于
"
)
@JsonFormat
(
pattern
=
"yyyyMMddHHmmssSSS"
)
private
Date
gtEqModiDate
;
}
mes/src/main/java/com/ximai/mes/remote/dto/MdItemSyncMarkUpdate.java
0 → 100644
View file @
5221cc34
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 物料对象 MdItemErpQuery
*
* @date 2024-10-18
*/
@Data
public
class
MdItemSyncMarkUpdate
{
@ApiModelProperty
(
"品号"
)
@JsonProperty
(
"mb001"
)
private
String
itemCode
;
@ApiModelProperty
(
"MES同步标识"
)
@JsonProperty
(
"udf08"
)
private
String
syncMark
=
"Y"
;
}
mes/src/main/java/com/ximai/mes/remote/dto/MdItemWarehouseErpDto.java
View file @
5221cc34
...
...
@@ -2,6 +2,7 @@ package com.ximai.mes.remote.dto;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.databind.annotation.JsonDeserialize
;
import
com.ximai.mes.config.EmptyStringToLongDeserializer
;
import
com.ximai.mes.config.TrimStringDeserializer
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -20,10 +21,12 @@ public class MdItemWarehouseErpDto
@JsonProperty
(
"mc002"
)
@ApiModelProperty
(
"仓库编号"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
warehouseCode
;
@JsonProperty
(
"mc001"
)
@ApiModelProperty
(
"物料编号"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
itemCode
;
@JsonProperty
(
"mc004"
)
...
...
@@ -32,6 +35,7 @@ public class MdItemWarehouseErpDto
@JsonProperty
(
"mc015"
)
@ApiModelProperty
(
"库位"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
location
;
}
mes/src/main/java/com/ximai/mes/remote/dto/ProWorkorderBomErpDto.java
View file @
5221cc34
...
...
@@ -18,20 +18,20 @@ public class ProWorkorderBomErpDto
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"
材料品号
"
)
@JsonProperty
(
"tb00
3
"
)
@ApiModelProperty
(
"
工单单别
"
)
@JsonProperty
(
"tb00
1
"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
itemCod
e
;
private
String
orderSourc
e
;
@ApiModelProperty
(
"
材料品名
"
)
@JsonProperty
(
"tb0
1
2"
)
@ApiModelProperty
(
"
工单单号
"
)
@JsonProperty
(
"tb0
0
2"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
itemNam
e
;
private
String
workorderCod
e
;
@ApiModelProperty
(
"材料
规格
"
)
@JsonProperty
(
"tb0
1
3"
)
@ApiModelProperty
(
"材料
品号
"
)
@JsonProperty
(
"tb0
0
3"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
item
Spc
;
private
String
item
Code
;
@ApiModelProperty
(
"工艺"
)
@JsonProperty
(
"tb006"
)
...
...
mes/src/main/java/com/ximai/mes/remote/dto/ProWorkorderErpDto.java
View file @
5221cc34
...
...
@@ -26,7 +26,7 @@ public class ProWorkorderErpDto
@ApiModelProperty
(
"工单单别"
)
@JsonProperty
(
"ta001"
)
@JsonDeserialize
(
using
=
TrimStringDeserializer
.
class
)
private
String
orderSourc
e
;
private
String
workorderTyp
e
;
@ApiModelProperty
(
"工单单号"
)
@JsonProperty
(
"ta002"
)
...
...
mes/src/main/java/com/ximai/mes/remote/dto/ProWorkorderErpQuery.java
View file @
5221cc34
...
...
@@ -22,6 +22,19 @@ public class ProWorkorderErpQuery extends ErpPageParams
@ApiModelProperty
(
"审核码"
)
@JsonProperty
(
"ta013"
)
private
String
verifyStatus
;
@ApiModelProperty
(
"工单单别"
)
@JsonProperty
(
"ta001"
)
private
String
orderSource
;
@JsonProperty
(
"neUdf07"
)
@ApiModelProperty
(
"同步标识状态-不等于"
)
private
String
neSyncMark
;
@ApiModelProperty
(
"工单单号"
)
@JsonProperty
(
"ta002"
)
private
String
workorderCode
;
@JsonFormat
(
pattern
=
"yyyyMMddHHmmssSSS"
)
@ApiModelProperty
(
"创建日期"
)
private
Date
gtEqCreateDate
;
...
...
mes/src/main/java/com/ximai/mes/remote/dto/ProWorkorderSyncMarkUpdate.java
0 → 100644
View file @
5221cc34
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 工单对象 ProWorkorderErpQuery
*
* @date 2024-10-18
*/
@Data
public
class
ProWorkorderSyncMarkUpdate
{
@ApiModelProperty
(
"工单单别"
)
@JsonProperty
(
"ta001"
)
private
String
workorderType
;
@ApiModelProperty
(
"工单单号"
)
@JsonProperty
(
"ta002"
)
private
String
workorderCode
;
@ApiModelProperty
(
"同步标识"
)
@JsonProperty
(
"udf07"
)
private
String
syncMark
=
"Y"
;
}
mes/src/main/resources/mapper/pro/proWorkOrder/ProWorkOrderBomMapper.xml
View file @
5221cc34
...
...
@@ -29,6 +29,9 @@
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"opName"
column=
"op_name"
/>
<result
property=
"erpCreateTime"
column=
"erp_create_time"
/>
<result
property=
"erpUpdateTime"
column=
"erp_update_time"
/>
</resultMap>
<sql
id=
"selectProWorkOrderBomVo"
>
...
...
@@ -104,6 +107,10 @@
<if
test=
"createBy != null"
>
create_by,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"updateBy != null"
>
update_by,
</if>
<if
test=
"opName != null"
>
op_name,
</if>
<if
test=
"orderSource != null"
>
order_source,
</if>
<if
test=
"erpCreateTime !=null"
>
erp_create_time,
</if>
<if
test=
"erpUpdateTime !=null"
>
erp_update_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"workorderId != null"
>
#{workorderId},
</if>
...
...
@@ -129,6 +136,10 @@
<if
test=
"createBy != null"
>
#{createBy},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
<if
test=
"updateBy != null"
>
#{updateBy},
</if>
<if
test=
"opName != null"
>
#{opName},
</if>
<if
test=
"orderSource != null"
>
#{orderSource},
</if>
<if
test=
"erpCreateTime != null"
>
#{erpCreateTime},
</if>
<if
test=
"erpUpdateTime != null"
>
#{erpUpdateTime},
</if>
</trim>
</insert>
...
...
@@ -157,6 +168,9 @@
<if
test=
"createBy != null"
>
create_by = #{createBy},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"updateBy != null"
>
update_by = #{updateBy},
</if>
<if
test=
"opName != null"
>
op_name = #{opName},
</if>
<if
test=
"orderSource != null"
>
order_source = #{orderSource},
</if>
<if
test=
"erpUpdateTime != null"
>
erp_update_time = #{erpUpdateTime},
</if>
</trim>
where bom_item_id = #{bomItemId}
</update>
...
...
system/src/main/java/com/ximai/system/service/impl/SysUserServiceImpl.java
View file @
5221cc34
...
...
@@ -532,10 +532,10 @@ public class SysUserServiceImpl implements ISysUserService {
@Override
public
void
importUser
(
InputStream
in
,
Boolean
isUpdateSupport
)
{
ExcelReader
.
read
(
in
,
SysUserExcelImport
.
class
,
this
::
importUser
);
ExcelReader
.
read
(
in
,
SysUserExcelImport
.
class
,
this
::
importUser
Impl
,
isUpdateSupport
);
}
private
void
importUser
(
SysUserExcelImport
userExcelIm
port
){
private
void
importUser
Impl
(
SysUserExcelImport
userExcelImport
,
Boolean
isUpdateSup
port
){
SysUser
user
=
BeanUtil
.
copyProperties
(
userExcelImport
,
SysUser
.
class
);
String
password
=
configService
.
selectConfigByKey
(
"sys.user.initPassword"
);
// 验证是否存在这个用户
...
...
@@ -544,9 +544,11 @@ public class SysUserServiceImpl implements ISysUserService {
BeanValidators
.
validateWithException
(
validator
,
user
);
user
.
setPassword
(
SecurityUtils
.
encryptPassword
(
password
));
user
.
setCreateBy
(
SecurityUtils
.
getUsername
());
user
.
setStatus
(
"0"
);
this
.
insertUser
(
user
);
}
else
if
(
userExcelImport
.
getUpdateSupport
()
)
{
}
else
if
(
isUpdateSupport
)
{
BeanValidators
.
validateWithException
(
validator
,
user
);
user
.
setUserId
(
u
.
getUserId
());
user
.
setUpdateBy
(
SecurityUtils
.
getUsername
());
this
.
updateUser
(
user
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment