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
07476401
Commit
07476401
authored
Oct 24, 2024
by
李驰骋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工单、物料同步逻辑调整
parent
bbd100ce
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
420 additions
and
170 deletions
+420
-170
messages_th.properties
admin/src/main/resources/i18n/messages_th.properties
+3
-0
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
No files found.
admin/src/main/resources/i18n/messages_th.properties
View file @
07476401
...
...
@@ -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
...
...
mes/src/main/java/com/ximai/mes/md/service/IMdItemService.java
View file @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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,64 +515,90 @@ 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
->{
List
<
MdItem
>
dbList
=
mdItemMapper
.
selectMdItemByCode
(
s
.
getItemCode
());
if
(
dbList
.
size
()==
0
)
{
if
(
"Y"
.
equalsIgnoreCase
(
s
.
getVerifyStatus
()))
{
MdItem
insertTemp
=
BeanUtil
.
toBean
(
s
,
MdItem
.
class
);
this
.
insertMdItem
(
insertTemp
);
}
}
else
{
BeanUtil
.
copyProperties
(
s
,
dbList
.
get
(
0
));
if
(!
"Y"
.
equalsIgnoreCase
(
s
.
getVerifyStatus
())){
dbList
.
get
(
0
).
setEnableFlag
(
"N"
);
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
.
updateMdItem
(
dbList
.
get
(
0
));
this
.
insertMdItem
(
insertTemp
);
}
}
else
{
BeanUtil
.
copyProperties
(
s
,
dbList
.
get
(
0
));
if
(!
"Y"
.
equalsIgnoreCase
(
s
.
getVerifyStatus
())){
dbList
.
get
(
0
).
setEnableFlag
(
"N"
);
}
if
(
itemTypeMap
.
containsKey
(
s
.
getItemTypeId
())){
dbList
.
get
(
0
).
setItemTypeName
(
itemTypeMap
.
get
(
s
.
getItemTypeId
()).
getItemTypeName
());
}
//更新库房明细
List
<
MdItemWarehouseErpDto
>
detailList
=
s
.
getWarehouseList
();
MdItemWarehouse
itemWarehouseQuery
=
new
MdItemWarehouse
();
itemWarehouseQuery
.
setItemCode
(
s
.
getItemCode
());
List
<
MdItemWarehouseDto
>
detailDblist
=
itemWarehouseService
.
selectMdItemWarehouseList
(
itemWarehouseQuery
);
detailList
.
forEach
(
s2
->{
java
.
util
.
Optional
<
MdItemWarehouseDto
>
itemWarehouseDto
=
detailDblist
.
stream
().
filter
(
temp
->
temp
.
getWarehouseCode
().
equals
(
s2
.
getWarehouseCode
())).
findFirst
();
this
.
updateMdItem
(
dbList
.
get
(
0
));
}
//更新库房明细
List
<
MdItemWarehouseErpDto
>
detailList
=
s
.
getWarehouseList
();
MdItemWarehouse
itemWarehouseQuery
=
new
MdItemWarehouse
();
itemWarehouseQuery
.
setItemCode
(
s
.
getItemCode
());
List
<
MdItemWarehouseDto
>
dbDetaillist
=
itemWarehouseService
.
selectMdItemWarehouseList
(
itemWarehouseQuery
);
detailList
.
forEach
(
s2
->{
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
);
}
}
);
}
});
//存在数据续断抓取,直到所有数据更新完成
if
(
list
.
size
()==
1000
){
this
.
syncEditErpData
();
}
//判断删除关联仓库
dbDetaillist
.
forEach
(
s2
->{
if
(
detailList
.
stream
().
noneMatch
(
temp
->
temp
.
getWarehouseCode
().
equals
(
s2
.
getWarehouseCode
()))){
itemWarehouseService
.
deleteMdItemWarehouseByItemWarehouseId
(
s2
.
getItemWarehouseId
());
}
});
//回写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 @
07476401
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 @
07476401
This diff is collapsed.
Click to expand it.
mes/src/main/java/com/ximai/mes/pro/service/proWorkOrder/IProWorkorderService.java
View file @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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 @
07476401
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 @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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 @
07476401
...
...
@@ -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 @
07476401
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 @
07476401
...
...
@@ -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>
...
...
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