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
6b963db9
Commit
6b963db9
authored
Oct 26, 2024
by
李驰骋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ERP接口调用、日志添加
parent
5f8c898d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
791 additions
and
233 deletions
+791
-233
RuoYiApplication.java
admin/src/main/java/com/ximai/RuoYiApplication.java
+14
-5
messages.properties
admin/src/main/resources/i18n/messages.properties
+1
-0
messages_en.properties
admin/src/main/resources/i18n/messages_en.properties
+1
-0
messages_th.properties
admin/src/main/resources/i18n/messages_th.properties
+1
-0
messages_zh_CN.properties
admin/src/main/resources/i18n/messages_zh_CN.properties
+34
-25
ApiLog.java
common/src/main/java/com/ximai/common/annotation/ApiLog.java
+48
-0
InOutType.java
common/src/main/java/com/ximai/common/enums/InOutType.java
+19
-0
ServletUtils.java
...on/src/main/java/com/ximai/common/utils/ServletUtils.java
+6
-1
IpUtils.java
common/src/main/java/com/ximai/common/utils/ip/IpUtils.java
+1
-1
LogAspect.java
.../src/main/java/com/ximai/framework/aspectj/LogAspect.java
+13
-10
IExtendedProcess.java
mes/src/main/java/com/ximai/mes/aspect/IExtendedProcess.java
+12
-0
MethodExtendedProcess.java
...main/java/com/ximai/mes/aspect/MethodExtendedProcess.java
+40
-0
MethodExtendedProcessAspect.java
...ava/com/ximai/mes/aspect/MethodExtendedProcessAspect.java
+80
-0
MethodExtendedProcesses.java
...in/java/com/ximai/mes/aspect/MethodExtendedProcesses.java
+15
-0
ApiLogAspect.java
mes/src/main/java/com/ximai/mes/config/ApiLogAspect.java
+22
-24
EPConfiguration.java
mes/src/main/java/com/ximai/mes/config/EPConfiguration.java
+0
-42
FeignConfiguration.java
...rc/main/java/com/ximai/mes/config/FeignConfiguration.java
+1
-0
FooConfiguration.java
mes/src/main/java/com/ximai/mes/config/FooConfiguration.java
+8
-0
ProWorkorderController.java
...s/pro/controller/proWorkOrder/ProWorkorderController.java
+2
-1
AlgorithmDataSourceImpl.java
.../ximai/mes/pro/schedule/impl/AlgorithmDataSourceImpl.java
+4
-0
ProWorkorderServiceImpl.java
...ro/service/impl/proWorkOrder/ProWorkorderServiceImpl.java
+39
-28
ProTaskServiceImpl.java
...m/ximai/mes/pro/service/impl/task/ProTaskServiceImpl.java
+22
-60
ProTaskWorkunitServiceImpl.java
...mes/pro/service/impl/task/ProTaskWorkunitServiceImpl.java
+38
-12
IProWorkorderService.java
...ai/mes/pro/service/proWorkOrder/IProWorkorderService.java
+14
-9
IProTaskWorkunitService.java
...m/ximai/mes/pro/service/task/IProTaskWorkunitService.java
+15
-0
ErpService.java
mes/src/main/java/com/ximai/mes/remote/ErpService.java
+15
-14
CustomResponseEntityDecoder.java
.../ximai/mes/remote/config/CustomResponseEntityDecoder.java
+37
-0
FinishStockInCreate.java
...in/java/com/ximai/mes/remote/dto/FinishStockInCreate.java
+28
-0
FinishStockInCreateDetail.java
...a/com/ximai/mes/remote/dto/FinishStockInCreateDetail.java
+37
-0
ProWorkorderStateUpdate.java
...ava/com/ximai/mes/remote/dto/ProWorkorderStateUpdate.java
+29
-0
PurchasingRequisitionCreate.java
...com/ximai/mes/remote/dto/PurchasingRequisitionCreate.java
+36
-0
PurchasingRequisitionDetailCreate.java
...mai/mes/remote/dto/PurchasingRequisitionDetailCreate.java
+27
-0
FinishStockInCreateProcess.java
.../ximai/mes/remote/process/FinishStockInCreateProcess.java
+41
-0
PurchasingRequisitionCreateProcess.java
...es/remote/process/PurchasingRequisitionCreateProcess.java
+57
-0
WorkorderStateUpdateProcess.java
...ximai/mes/remote/process/WorkorderStateUpdateProcess.java
+32
-0
ProTaskWorkunitMapper.xml
.../main/resources/mapper/pro/task/ProTaskWorkunitMapper.xml
+2
-1
No files found.
admin/src/main/java/com/ximai/RuoYiApplication.java
View file @
6b963db9
package
com
.
ximai
;
package
com
.
ximai
;
import
com.bstek.ureport.console.UReportServlet
;
import
com.bstek.ureport.console.UReportServlet
;
import
com.ximai.mes.md.service.IMdItemService
;
import
com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
...
@@ -10,6 +14,7 @@ import org.springframework.context.annotation.Bean;
...
@@ -10,6 +14,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.ImportResource
;
import
org.springframework.context.annotation.ImportResource
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.web.context.request.RequestContextListener
;
import
springfox.documentation.oas.annotations.EnableOpenApi
;
import
springfox.documentation.oas.annotations.EnableOpenApi
;
/**
/**
...
@@ -21,13 +26,17 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
...
@@ -21,13 +26,17 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
@EnableFeignClients
(
basePackages
=
{
"com.ximai"
})
@EnableFeignClients
(
basePackages
=
{
"com.ximai"
})
@EnableScheduling
@EnableScheduling
@EnableOpenApi
@EnableOpenApi
public
class
RuoYiApplication
{
public
class
RuoYiApplication
implements
CommandLineRunner
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
// System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication
springApplication
=
new
SpringApplication
(
RuoYiApplication
.
class
);
SpringApplication
.
run
(
RuoYiApplication
.
class
,
args
);
springApplication
.
run
(
args
);
// System.out.println("MES启动成功\n");
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
}
}
@Bean
@Bean
public
ServletRegistrationBean
urportServlet
()
{
public
ServletRegistrationBean
urportServlet
()
{
ServletRegistrationBean
bean
=
new
ServletRegistrationBean
(
new
UReportServlet
());
ServletRegistrationBean
bean
=
new
ServletRegistrationBean
(
new
UReportServlet
());
...
...
admin/src/main/resources/i18n/messages.properties
View file @
6b963db9
...
@@ -53,6 +53,7 @@ basic.error.request.error=\u670D\u52A1\u5668\u9650\u6D41\u5F02\u5E38\uFF0C\u8BF7
...
@@ -53,6 +53,7 @@ basic.error.request.error=\u670D\u52A1\u5668\u9650\u6D41\u5F02\u5E38\uFF0C\u8BF7
basic.response.success
=
\u
64CD
\u
4F5C
\u6210\u
529F
basic.response.success
=
\u
64CD
\u
4F5C
\u6210\u
529F
basic.response.fail
=
\u
64CD
\u
4F5C
\u5931\u
8D25
basic.response.fail
=
\u
64CD
\u
4F5C
\u5931\u
8D25
basic.data.not.exist
=
\u6570\u
636E
\u
4E0D
\u
5B58
\u5728
basic.data.not.exist
=
\u6570\u
636E
\u
4E0D
\u
5B58
\u5728
basic.error.repeat.confirm
=
\u
91CD
\u
590D
\u
786E
\u
8BA4
basic.data.disable
=
\u6570\u
636E
\u
5DF2
\u
88AB
\u7981\u7528
basic.data.disable
=
\u6570\u
636E
\u
5DF2
\u
88AB
\u7981\u7528
basic.data.deleted
=
\u6570\u
636E
\u
5DF2
\u
88AB
\u5220\u9664
basic.data.deleted
=
\u6570\u
636E
\u
5DF2
\u
88AB
\u5220\u9664
basic.error.data.exist
=
\u6570\u
636E
\u
5DF2
\u
7ECF
\u
5B58
\u5728\u
FF01
basic.error.data.exist
=
\u6570\u
636E
\u
5DF2
\u
7ECF
\u
5B58
\u5728\u
FF01
...
...
admin/src/main/resources/i18n/messages_en.properties
View file @
6b963db9
...
@@ -53,6 +53,7 @@ basic.error.request.error=Server throttling exception. Please try again later.
...
@@ -53,6 +53,7 @@ basic.error.request.error=Server throttling exception. Please try again later.
basic.response.success
=
Operation successful.
basic.response.success
=
Operation successful.
basic.response.fail
=
Operation failed.
basic.response.fail
=
Operation failed.
basic.data.not.exist
=
Data does not exist.
basic.data.not.exist
=
Data does not exist.
basic.error.repeat.confirm
=
Repeat confirm.
basic.data.disable
=
Data has been disabled.
basic.data.disable
=
Data has been disabled.
basic.data.deleted
=
Data has been deleted.
basic.data.deleted
=
Data has been deleted.
basic.error.data.exist
=
Data already exists!
basic.error.data.exist
=
Data already exists!
...
...
admin/src/main/resources/i18n/messages_th.properties
View file @
6b963db9
...
@@ -53,6 +53,7 @@ basic.error.request.error=\u0E02\u0E49\u0E2D\u0E22\u0E01\u0E40\u0E27\u0E49\u0E19
...
@@ -53,6 +53,7 @@ basic.error.request.error=\u0E02\u0E49\u0E2D\u0E22\u0E01\u0E40\u0E27\u0E49\u0E19
basic.response.success
=
\u
0E1B
\u
0E0F
\u
0E34
\u
0E1A
\u
0E31
\u
0E15
\u
0E34
\u
0E01
\u
0E32
\u
0E23
\u
0E2A
\u
0E4D
\u
0E32
\u
0E40
\u
0E23
\u
0E47
\u
0E08
basic.response.success
=
\u
0E1B
\u
0E0F
\u
0E34
\u
0E1A
\u
0E31
\u
0E15
\u
0E34
\u
0E01
\u
0E32
\u
0E23
\u
0E2A
\u
0E4D
\u
0E32
\u
0E40
\u
0E23
\u
0E47
\u
0E08
basic.response.fail
=
\u
0E1B
\u
0E0F
\u
0E34
\u
0E1A
\u
0E31
\u
0E15
\u
0E34
\u
0E01
\u
0E32
\u
0E23
\u
0E25
\u
0E49
\u
0E21
\u
0E40
\u
0E2B
\u
0E25
\u
0E27
basic.response.fail
=
\u
0E1B
\u
0E0F
\u
0E34
\u
0E1A
\u
0E31
\u
0E15
\u
0E34
\u
0E01
\u
0E32
\u
0E23
\u
0E25
\u
0E49
\u
0E21
\u
0E40
\u
0E2B
\u
0E25
\u
0E27
basic.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.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.error.repeat.confirm
=
\u
0E22
\u
0E37
\u
0E19
\u
0E22
\u
0E31
\u
0E19
basic.data.disable
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E16
\u
0E39
\u
0E01
\u
0E1B
\u
0E34
\u
0E14
\u
0E01
\u
0E32
\u
0E23
\u
0E43
\u
0E0A
\u
0E49
\u
0E07
\u
0E32
\u
0E19
basic.data.disable
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E16
\u
0E39
\u
0E01
\u
0E1B
\u
0E34
\u
0E14
\u
0E01
\u
0E32
\u
0E23
\u
0E43
\u
0E0A
\u
0E49
\u
0E07
\u
0E32
\u
0E19
basic.data.deleted
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E16
\u
0E39
\u
0E01
\u
0E25
\u
0E1A
\u
0E41
\u
0E25
\u
0E49
\u
0E27
basic.data.deleted
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E16
\u
0E39
\u
0E01
\u
0E25
\u
0E1A
\u
0E41
\u
0E25
\u
0E49
\u
0E27
basic.error.data.exist
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E21
\u
0E35
\u
0E2D
\u
0E22
\u
0E39
\u
0E48
\u
0E41
\u
0E25
\u
0E49
\u
0E27!
basic.error.data.exist
=
\u
0E02
\u
0E49
\u
0E2D
\u
0E21
\u
0E39
\u
0E25
\u
0E21
\u
0E35
\u
0E2D
\u
0E22
\u
0E39
\u
0E48
\u
0E41
\u
0E25
\u
0E49
\u
0E27!
...
...
admin/src/main/resources/i18n/messages_zh_CN.properties
View file @
6b963db9
This diff is collapsed.
Click to expand it.
common/src/main/java/com/ximai/common/annotation/ApiLog.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
common
.
annotation
;
import
com.ximai.common.enums.BusinessType
;
import
com.ximai.common.enums.InOutType
;
import
com.ximai.common.enums.OperatorType
;
import
java.lang.annotation.*
;
/**
* 自定义操作日志记录注解
*
*
*/
@Target
({
ElementType
.
PARAMETER
,
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
ApiLog
{
/**
* 模块
*/
public
String
title
()
default
""
;
/**
* 功能
*/
public
BusinessType
businessType
()
default
BusinessType
.
OTHER
;
/**
* 操作人类别
*/
public
OperatorType
operatorType
()
default
OperatorType
.
MANAGE
;
/**
* 调入、调出
*/
public
InOutType
inOutType
()
default
InOutType
.
IN
;
/**
* 是否保存请求的参数
*/
public
boolean
isSaveRequestData
()
default
true
;
/**
* 是否保存响应的参数
*/
public
boolean
isSaveResponseData
()
default
true
;
}
common/src/main/java/com/ximai/common/enums/InOutType.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
common
.
enums
;
/**
* 操作人类别
*
*/
public
enum
InOutType
{
/**
* 其它
*/
IN
,
/**
* 后台用户
*/
OUT
,
}
common/src/main/java/com/ximai/common/utils/ServletUtils.java
View file @
6b963db9
...
@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
javax.servlet.http.HttpSession
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.ximai.common.constant.Constants
;
import
com.ximai.common.constant.Constants
;
import
com.ximai.common.utils.data.StringUtils
;
import
com.ximai.common.utils.data.StringUtils
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestAttributes
;
...
@@ -74,7 +75,11 @@ public class ServletUtils
...
@@ -74,7 +75,11 @@ public class ServletUtils
*/
*/
public
static
HttpServletRequest
getRequest
()
public
static
HttpServletRequest
getRequest
()
{
{
return
getRequestAttributes
().
getRequest
();
ServletRequestAttributes
requestAttributes
=
getRequestAttributes
();
if
(
ObjectUtil
.
isEmpty
(
requestAttributes
)){
return
null
;
}
return
requestAttributes
.
getRequest
();
}
}
/**
/**
...
...
common/src/main/java/com/ximai/common/utils/ip/IpUtils.java
View file @
6b963db9
...
@@ -112,7 +112,7 @@ public class IpUtils
...
@@ -112,7 +112,7 @@ public class IpUtils
*/
*/
public
static
byte
[]
textToNumericFormatV4
(
String
text
)
public
static
byte
[]
textToNumericFormatV4
(
String
text
)
{
{
if
(
text
.
length
()
==
0
)
if
(
StringUtils
.
isEmpty
(
text
)
)
{
{
return
null
;
return
null
;
}
}
...
...
framework/src/main/java/com/ximai/framework/aspectj/LogAspect.java
View file @
6b963db9
package
com
.
ximai
.
framework
.
aspectj
;
package
com
.
ximai
.
framework
.
aspectj
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.ximai.common.annotation.Log
;
import
com.ximai.common.annotation.Log
;
import
com.ximai.common.core.domain.model.LoginUser
;
import
com.ximai.common.core.domain.model.LoginUser
;
...
@@ -64,11 +65,14 @@ public class LogAspect {
...
@@ -64,11 +65,14 @@ public class LogAspect {
SysOperLog
operLog
=
new
SysOperLog
();
SysOperLog
operLog
=
new
SysOperLog
();
operLog
.
setStatus
(
BusinessStatus
.
SUCCESS
.
ordinal
());
operLog
.
setStatus
(
BusinessStatus
.
SUCCESS
.
ordinal
());
// 请求的地址
// 请求的地址
String
ip
=
IpUtils
.
getIpAddr
(
ServletUtils
.
getRequest
());
HttpServletRequest
request
=
ServletUtils
.
getRequest
();
operLog
.
setOperIp
(
ip
);
String
requestURI
=
""
;
String
requestURI
=
ServletUtils
.
getRequest
().
getRequestURI
();
if
(
ObjectUtil
.
isNotEmpty
(
request
)){
operLog
.
setOperUrl
(
requestURI
);
String
ip
=
IpUtils
.
getIpAddr
(
request
);
operLog
.
setOperIp
(
ip
);
requestURI
=
request
.
getRequestURI
();
operLog
.
setOperUrl
(
requestURI
);
}
// 获取当前的用户
// 获取当前的用户
LoginUser
loginUser
=
null
;
LoginUser
loginUser
=
null
;
try
{
try
{
...
@@ -78,7 +82,6 @@ public class LogAspect {
...
@@ -78,7 +82,6 @@ public class LogAspect {
}
}
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
log
.
info
(
"url:"
+
requestURI
+
"获取接口用户报错: "
+
ex
.
getMessage
());
log
.
info
(
"url:"
+
requestURI
+
"获取接口用户报错: "
+
ex
.
getMessage
());
// throw new RuntimeException(ex);
}
}
...
@@ -91,16 +94,16 @@ public class LogAspect {
...
@@ -91,16 +94,16 @@ public class LogAspect {
String
methodName
=
joinPoint
.
getSignature
().
getName
();
String
methodName
=
joinPoint
.
getSignature
().
getName
();
operLog
.
setMethod
(
className
+
"."
+
methodName
+
"()"
);
operLog
.
setMethod
(
className
+
"."
+
methodName
+
"()"
);
// 设置请求方式
// 设置请求方式
operLog
.
setRequestMethod
(
ServletUtils
.
getRequest
().
getMethod
());
if
(
ObjectUtil
.
isNotEmpty
(
request
))
{
operLog
.
setRequestMethod
(
request
.
getMethod
());
}
// 处理设置注解上的参数
// 处理设置注解上的参数
getControllerMethodDescription
(
joinPoint
,
controllerLog
,
operLog
,
jsonResult
);
getControllerMethodDescription
(
joinPoint
,
controllerLog
,
operLog
,
jsonResult
);
// 保存数据库
// 保存数据库
AsyncManager
.
me
().
execute
(
AsyncFactory
.
recordOper
(
operLog
));
AsyncManager
.
me
().
execute
(
AsyncFactory
.
recordOper
(
operLog
));
}
catch
(
Exception
exp
)
{
}
catch
(
Exception
exp
)
{
// 记录本地异常日志
// 记录本地异常日志
log
.
error
(
"==前置通知异常=="
);
log
.
error
(
"Log前置通知异常:"
,
exp
);
log
.
error
(
"异常信息:{}"
,
exp
.
getMessage
());
exp
.
printStackTrace
();
}
}
}
}
...
...
mes/src/main/java/com/ximai/mes/aspect/IExtendedProcess.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
aspect
;
import
java.lang.annotation.*
;
/**
* 方法扩展处理
*/
public
interface
IExtendedProcess
{
public
void
process
(
Object
[]
args
,
Object
returnResult
);
}
mes/src/main/java/com/ximai/mes/aspect/MethodExtendedProcess.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
aspect
;
import
java.lang.annotation.*
;
/**
* 方法扩展处理
*/
@Target
({
ElementType
.
PARAMETER
,
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
MethodExtendedProcess
{
/**
* 系统参数开关名,不配置为默认开启
* @return
*/
String
sysSwitchParam
()
default
""
;
/**
* 处理实现类
*
* @return
*/
Class
<?
extends
IExtendedProcess
>
processClz
();
/**
* 是否新开线程
* @return
*/
boolean
newThread
()
default
false
;
/**
* 是否捕获异常
* 仅对非新开线程有效
* @return
*/
boolean
errorCatch
()
default
false
;
}
mes/src/main/java/com/ximai/mes/aspect/MethodExtendedProcessAspect.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
aspect
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.ximai.common.core.domain.AjaxResult
;
import
com.ximai.common.utils.DictUtils
;
import
com.ximai.framework.config.ApplicationConfig
;
import
com.ximai.framework.manager.AsyncManager
;
import
com.ximai.mes.wm.domain.WmBarcodeConfig
;
import
com.ximai.mes.wm.service.IWmBarcodeConfigService
;
import
com.ximai.system.domain.SysConfig
;
import
com.ximai.system.service.ISysConfigService
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.annotation.AfterReturning
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
java.util.List
;
import
java.util.TimerTask
;
@Aspect
@Component
public
class
MethodExtendedProcessAspect
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
MethodExtendedProcessAspect
.
class
);
@Autowired
ApplicationContext
applicationContext
;
@Autowired
ISysConfigService
configService
;
/**
* 根据扩展业务配置执行处理方法
* @param joinPoint
* @param extendedProcesses
* @param returnResult
*/
@AfterReturning
(
pointcut
=
"@annotation(extendedProcesses)"
,
returning
=
"returnResult"
)
public
void
doAfter
(
JoinPoint
joinPoint
,
MethodExtendedProcesses
extendedProcesses
,
Object
returnResult
){
for
(
MethodExtendedProcess
extendedProcess
:
extendedProcesses
.
config
()){
if
(
ObjectUtil
.
isNotEmpty
(
extendedProcess
.
sysSwitchParam
())){
String
val
=
configService
.
selectConfigByKey
(
extendedProcess
.
sysSwitchParam
());
if
(
"0"
.
equals
(
val
)){
return
;
}
}
IExtendedProcess
process
=
applicationContext
.
getBean
(
extendedProcess
.
processClz
());
ServletRequestAttributes
requestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
,
true
);
if
(
extendedProcess
.
newThread
()){
AsyncManager
.
me
().
execute
(
new
TimerTask
()
{
@Override
public
void
run
()
{
process
.
process
(
joinPoint
.
getArgs
(),
returnResult
);
}
});
}
else
{
if
(
extendedProcess
.
errorCatch
()){
try
{
process
.
process
(
joinPoint
.
getArgs
(),
returnResult
);
}
catch
(
Exception
e
){
log
.
error
(
"扩展处理执行失败,"
,
e
);
}
}
else
{
process
.
process
(
joinPoint
.
getArgs
(),
returnResult
);
}
}
}
}
}
mes/src/main/java/com/ximai/mes/aspect/MethodExtendedProcesses.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
aspect
;
import
java.lang.annotation.*
;
/**
* 方法扩展处理
*/
@Target
({
ElementType
.
PARAMETER
,
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
MethodExtendedProcesses
{
MethodExtendedProcess
[]
config
();
}
mes/src/main/java/com/ximai/mes/config/ApiLogAspect.java
View file @
6b963db9
package
com
.
ximai
.
mes
.
config
;
package
com
.
ximai
.
mes
.
config
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.ximai.common.annotation.ApiLog
;
import
com.ximai.common.annotation.Log
;
import
com.ximai.common.annotation.Log
;
import
com.ximai.common.enums.BusinessStatus
;
import
com.ximai.common.enums.BusinessStatus
;
import
com.ximai.common.enums.HttpMethod
;
import
com.ximai.common.enums.HttpMethod
;
...
@@ -45,11 +47,11 @@ public class ApiLogAspect {
...
@@ -45,11 +47,11 @@ public class ApiLogAspect {
*
*
* @param joinPoint 切点
* @param joinPoint 切点
*/
*/
@AfterReturning
(
pointcut
=
"
execution(* com.ximai.mes.restful.*.*(..)
)"
,
returning
=
"jsonResult"
)
@AfterReturning
(
pointcut
=
"
@annotation(apiLog
)"
,
returning
=
"jsonResult"
)
public
void
doAfterReturning
(
JoinPoint
joinPoint
,
Object
jsonResult
)
{
public
void
doAfterReturning
(
JoinPoint
joinPoint
,
ApiLog
apiLog
,
Object
jsonResult
)
{
MethodSignature
methodSignature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
MethodSignature
methodSignature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
Method
method
=
methodSignature
.
getMethod
();
Method
method
=
methodSignature
.
getMethod
();
Log
controllerLog
=
method
.
getAnnotation
(
Log
.
class
);
ApiLog
controllerLog
=
method
.
getAnnotation
(
Api
Log
.
class
);
ApiOperation
apiOperation
=
method
.
getAnnotation
(
ApiOperation
.
class
);
ApiOperation
apiOperation
=
method
.
getAnnotation
(
ApiOperation
.
class
);
LogInfo
logInfo
=
new
LogInfo
();
LogInfo
logInfo
=
new
LogInfo
();
if
(
controllerLog
!=
null
)
{
if
(
controllerLog
!=
null
)
{
...
@@ -67,11 +69,11 @@ public class ApiLogAspect {
...
@@ -67,11 +69,11 @@ public class ApiLogAspect {
* @param joinPoint 切点
* @param joinPoint 切点
* @param e 异常
* @param e 异常
*/
*/
@AfterThrowing
(
value
=
"
execution(* com.ximai.mes.restful.*.*(..)
)"
,
throwing
=
"e"
)
@AfterThrowing
(
value
=
"
@annotation(apiLog
)"
,
throwing
=
"e"
)
public
void
doAfterThrowing
(
JoinPoint
joinPoint
,
Exception
e
)
{
public
void
doAfterThrowing
(
JoinPoint
joinPoint
,
ApiLog
apiLog
,
Exception
e
)
{
MethodSignature
methodSignature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
MethodSignature
methodSignature
=
(
MethodSignature
)
joinPoint
.
getSignature
();
Method
method
=
methodSignature
.
getMethod
();
Method
method
=
methodSignature
.
getMethod
();
Log
controllerLog
=
method
.
getAnnotation
(
Log
.
class
);
ApiLog
controllerLog
=
method
.
getAnnotation
(
Api
Log
.
class
);
ApiOperation
apiOperation
=
method
.
getAnnotation
(
ApiOperation
.
class
);
ApiOperation
apiOperation
=
method
.
getAnnotation
(
ApiOperation
.
class
);
LogInfo
logInfo
=
new
LogInfo
();
LogInfo
logInfo
=
new
LogInfo
();
if
(
controllerLog
!=
null
)
{
if
(
controllerLog
!=
null
)
{
...
@@ -83,7 +85,7 @@ public class ApiLogAspect {
...
@@ -83,7 +85,7 @@ public class ApiLogAspect {
handleLog
(
joinPoint
,
logInfo
,
e
,
null
);
handleLog
(
joinPoint
,
logInfo
,
e
,
null
);
}
}
private
LogInfo
convertLogInfo
(
Log
controllerLog
)
{
private
LogInfo
convertLogInfo
(
Api
Log
controllerLog
)
{
LogInfo
logInfo
=
new
LogInfo
();
LogInfo
logInfo
=
new
LogInfo
();
logInfo
.
setBusinessType
(
controllerLog
.
businessType
());
logInfo
.
setBusinessType
(
controllerLog
.
businessType
());
logInfo
.
setSaveRequestData
(
controllerLog
.
isSaveRequestData
());
logInfo
.
setSaveRequestData
(
controllerLog
.
isSaveRequestData
());
...
@@ -98,21 +100,25 @@ public class ApiLogAspect {
...
@@ -98,21 +100,25 @@ public class ApiLogAspect {
SysApiLog
operLog
=
new
SysApiLog
();
SysApiLog
operLog
=
new
SysApiLog
();
operLog
.
setStatus
(
BusinessStatus
.
SUCCESS
.
ordinal
());
operLog
.
setStatus
(
BusinessStatus
.
SUCCESS
.
ordinal
());
// 请求的地址
// 请求的地址
String
ip
=
IpUtils
.
getIpAddr
(
ServletUtils
.
getRequest
());
HttpServletRequest
request
=
ServletUtils
.
getRequest
();
operLog
.
setOperIp
(
ip
);
if
(
ObjectUtil
.
isNotEmpty
(
request
)){
operLog
.
setOperUrl
(
ServletUtils
.
getRequest
().
getRequestURI
());
String
ip
=
IpUtils
.
getIpAddr
(
request
);
operLog
.
setOperIp
(
ip
);
operLog
.
setOperUrl
(
request
.
getRequestURI
());
}
if
(
e
!=
null
)
{
if
(
e
!=
null
)
{
operLog
.
setStatus
(
BusinessStatus
.
FAIL
.
ordinal
());
operLog
.
setStatus
(
BusinessStatus
.
FAIL
.
ordinal
());
operLog
.
setErrorMsg
(
StringUtils
.
substring
(
e
.
getMessage
(),
0
,
2000
));
operLog
.
setErrorMsg
(
StringUtils
.
substring
(
e
.
getMessage
(),
0
,
2000
));
}
}
// 设置方法名称
// 设置方法名称
String
className
=
joinPoint
.
get
Target
().
getClass
().
getName
();
String
className
=
joinPoint
.
get
Signature
().
getDeclaringType
().
getName
();
String
methodName
=
joinPoint
.
getSignature
().
getName
();
String
methodName
=
joinPoint
.
getSignature
().
getName
();
operLog
.
setMethod
(
className
+
"."
+
methodName
+
"()"
);
operLog
.
setMethod
(
className
+
"."
+
methodName
+
"()"
);
// 设置请求方式
// 设置请求方式
operLog
.
setRequestMethod
(
ServletUtils
.
getRequest
().
getMethod
());
if
(
ObjectUtil
.
isNotEmpty
(
request
))
{
operLog
.
setRequestMethod
(
request
.
getMethod
());
}
// 处理设置注解上的参数
// 处理设置注解上的参数
getControllerMethodDescription
(
joinPoint
,
controllerLog
,
operLog
,
jsonResult
);
getControllerMethodDescription
(
joinPoint
,
controllerLog
,
operLog
,
jsonResult
);
// 保存数据库
// 保存数据库
...
@@ -126,9 +132,7 @@ public class ApiLogAspect {
...
@@ -126,9 +132,7 @@ public class ApiLogAspect {
});
});
}
catch
(
Exception
exp
)
{
}
catch
(
Exception
exp
)
{
// 记录本地异常日志
// 记录本地异常日志
log
.
error
(
"==前置通知异常=="
);
log
.
error
(
"ApiLog前置通知异常:"
,
exp
);
log
.
error
(
"异常信息:{}"
,
exp
.
getMessage
());
exp
.
printStackTrace
();
}
}
}
}
...
@@ -162,14 +166,8 @@ public class ApiLogAspect {
...
@@ -162,14 +166,8 @@ public class ApiLogAspect {
* @throws Exception 异常
* @throws Exception 异常
*/
*/
private
void
setRequestValue
(
JoinPoint
joinPoint
,
SysApiLog
operLog
)
throws
Exception
{
private
void
setRequestValue
(
JoinPoint
joinPoint
,
SysApiLog
operLog
)
throws
Exception
{
String
requestMethod
=
operLog
.
getRequestMethod
();
String
params
=
argsArrayToString
(
joinPoint
.
getArgs
());
if
(
HttpMethod
.
PUT
.
name
().
equals
(
requestMethod
)
||
HttpMethod
.
POST
.
name
().
equals
(
requestMethod
))
{
operLog
.
setOperParam
(
params
);
String
params
=
argsArrayToString
(
joinPoint
.
getArgs
());
operLog
.
setOperParam
(
params
);
}
else
{
Map
<?,
?>
paramsMap
=
(
Map
<?,
?>)
ServletUtils
.
getRequest
().
getAttribute
(
HandlerMapping
.
URI_TEMPLATE_VARIABLES_ATTRIBUTE
);
operLog
.
setOperParam
(
paramsMap
.
toString
());
}
}
}
/**
/**
...
...
mes/src/main/java/com/ximai/mes/config/EPConfiguration.java
deleted
100644 → 0
View file @
5f8c898d
package
com
.
ximai
.
mes
.
config
;
import
com.ximai.system.service.ISysConfigService
;
import
feign.Logger
;
import
feign.Request
;
import
feign.RequestInterceptor
;
import
feign.Retryer
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.annotation.Bean
;
public
class
EPConfiguration
{
@Autowired
private
ISysConfigService
configService
;
@Bean
public
RequestInterceptor
headerInterceptor
()
{
return
template
->
{
template
.
header
(
"X-Authentication"
,
"e10adc3949ba59abbe56e057f20f883e "
);
template
.
header
(
"Content-Type"
,
"application/json;charset=UTF-8 "
);
};
}
@Bean
@ConditionalOnMissingBean
//这里如果不加@ConditionalOnMissingBean那么独立配置是无法生效的,原理在后面补充
public
Logger
.
Level
feignLoggerLevel
()
{
return
Logger
.
Level
.
FULL
;
}
@Bean
Request
.
Options
feignOptions
()
{
// 设置连接超时时间为2秒,设置读取超时时间为5秒
return
new
Request
.
Options
(
20
*
1000
,
50
*
1000
);
}
@Bean
public
Retryer
feignRetryer
()
{
//最大请求次数为5,初始间隔时间为100ms,下次间隔时间1.5倍递增,重试间最大间隔时间为1s,
return
new
Retryer
.
Default
();
}
}
mes/src/main/java/com/ximai/mes/config/FeignConfiguration.java
View file @
6b963db9
...
@@ -25,5 +25,6 @@ public class FeignConfiguration implements RequestInterceptor {
...
@@ -25,5 +25,6 @@ public class FeignConfiguration implements RequestInterceptor {
requestTemplate
.
header
(
"Content-type"
,
"application/json;charset=utf-8"
);
requestTemplate
.
header
(
"Content-type"
,
"application/json;charset=utf-8"
);
String
usernameAndPassword
=
userName
+
":"
+
passWord
;
String
usernameAndPassword
=
userName
+
":"
+
passWord
;
requestTemplate
.
header
(
"Authorization"
,
"Basic "
+
Base64
.
getEncoder
().
encodeToString
(
usernameAndPassword
.
getBytes
()));
requestTemplate
.
header
(
"Authorization"
,
"Basic "
+
Base64
.
getEncoder
().
encodeToString
(
usernameAndPassword
.
getBytes
()));
}
}
}
}
mes/src/main/java/com/ximai/mes/config/FooConfiguration.java
View file @
6b963db9
package
com
.
ximai
.
mes
.
config
;
package
com
.
ximai
.
mes
.
config
;
import
com.ximai.mes.remote.config.CustomResponseEntityDecoder
;
import
com.ximai.system.service.ISysConfigService
;
import
com.ximai.system.service.ISysConfigService
;
import
feign.Logger
;
import
feign.Logger
;
import
feign.Request
;
import
feign.Request
;
import
feign.RequestInterceptor
;
import
feign.RequestInterceptor
;
import
feign.Retryer
;
import
feign.Retryer
;
import
feign.codec.Decoder
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.http.HttpMessageConverters
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
java.util.Base64
;
import
java.util.Base64
;
...
@@ -44,5 +48,9 @@ public class FooConfiguration {
...
@@ -44,5 +48,9 @@ public class FooConfiguration {
return
new
Retryer
.
Default
();
return
new
Retryer
.
Default
();
}
}
@Bean
public
Decoder
decoder
(
ObjectFactory
<
HttpMessageConverters
>
messageConverters
){
return
new
CustomResponseEntityDecoder
(
messageConverters
);
}
}
}
mes/src/main/java/com/ximai/mes/pro/controller/proWorkOrder/ProWorkorderController.java
View file @
6b963db9
...
@@ -380,7 +380,8 @@ public class ProWorkorderController extends BaseController {
...
@@ -380,7 +380,8 @@ public class ProWorkorderController extends BaseController {
*/
*/
@GetMapping
(
value
=
"/setStatus/{workorderId}"
)
@GetMapping
(
value
=
"/setStatus/{workorderId}"
)
public
void
setStaus
(
@PathVariable
(
"workorderId"
)
Long
workorderId
)
{
public
void
setStaus
(
@PathVariable
(
"workorderId"
)
Long
workorderId
)
{
proWorkorderService
.
updateProWorkorderStatus
(
Collections
.
singletonList
(
workorderId
),
WorkorderStatusEnum
.
PUBLISHED
);
ProWorkorder
workorder
=
proWorkorderService
.
selectWorkorderById
(
workorderId
);
proWorkorderService
.
updateWorkorderState
(
workorder
,
WorkorderStatusEnum
.
PUBLISHED
);
}
}
@PostMapping
(
value
=
"/proofMakeProduction"
)
@PostMapping
(
value
=
"/proofMakeProduction"
)
...
...
mes/src/main/java/com/ximai/mes/pro/schedule/impl/AlgorithmDataSourceImpl.java
View file @
6b963db9
...
@@ -2,6 +2,7 @@ package com.ximai.mes.pro.schedule.impl;
...
@@ -2,6 +2,7 @@ package com.ximai.mes.pro.schedule.impl;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.StopWatch
;
import
cn.hutool.core.date.StopWatch
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.common.utils.MessageUtils
;
import
com.ximai.common.utils.MessageUtils
;
...
@@ -116,6 +117,9 @@ public class AlgorithmDataSourceImpl implements AlgorithmDataSource {
...
@@ -116,6 +117,9 @@ public class AlgorithmDataSourceImpl implements AlgorithmDataSource {
List
<
ProWorkorder
>
list
=
new
ArrayList
<>();
List
<
ProWorkorder
>
list
=
new
ArrayList
<>();
list
.
add
(
workorder
);
list
.
add
(
workorder
);
scheduleJobGroup
.
setWorkorderList
(
list
);
scheduleJobGroup
.
setWorkorderList
(
list
);
if
(
ObjectUtil
.
isEmpty
(
workorder
.
getRequestDate
())){
throw
new
ServiceException
(
MessageUtils
.
message
(
"pro.workOrder.error.not.null.requestDate"
));
}
LocalDateTime
recentDate
=
list
.
stream
().
map
(
s
->
DateUtil
.
toLocalDateTime
(
s
.
getRequestDate
())).
min
(
Comparator
.
comparing
(
LocalDateTime:
:
toLocalDate
)).
get
();
LocalDateTime
recentDate
=
list
.
stream
().
map
(
s
->
DateUtil
.
toLocalDateTime
(
s
.
getRequestDate
())).
min
(
Comparator
.
comparing
(
LocalDateTime:
:
toLocalDate
)).
get
();
scheduleJobGroup
.
setQuantity
(
workorderScheduleParamsMap
.
get
(
workorder
.
getWorkorderId
()).
getScheduleQuantity
());
scheduleJobGroup
.
setQuantity
(
workorderScheduleParamsMap
.
get
(
workorder
.
getWorkorderId
()).
getScheduleQuantity
());
scheduleJobGroup
.
setDemandDate
(
recentDate
);
scheduleJobGroup
.
setDemandDate
(
recentDate
);
...
...
mes/src/main/java/com/ximai/mes/pro/service/impl/proWorkOrder/ProWorkorderServiceImpl.java
View file @
6b963db9
...
@@ -20,11 +20,11 @@ import com.ximai.common.utils.data.DataUtil;
...
@@ -20,11 +20,11 @@ import com.ximai.common.utils.data.DataUtil;
import
com.ximai.common.utils.data.DateUtils
;
import
com.ximai.common.utils.data.DateUtils
;
import
com.ximai.common.utils.data.ExceptionUtil
;
import
com.ximai.common.utils.data.ExceptionUtil
;
import
com.ximai.common.utils.data.StringUtils
;
import
com.ximai.common.utils.data.StringUtils
;
import
com.ximai.mes.aspect.MethodExtendedProcess
;
import
com.ximai.mes.aspect.MethodExtendedProcesses
;
import
com.ximai.mes.constant.*
;
import
com.ximai.mes.constant.*
;
import
com.ximai.mes.md.domain.MdItem
;
import
com.ximai.mes.md.domain.MdItem
;
import
com.ximai.mes.md.domain.MdProductBom
;
import
com.ximai.mes.md.domain.MdProductBom
;
import
com.ximai.mes.md.dto.MdItemWarehouseCreate
;
import
com.ximai.mes.md.dto.MdItemWarehouseDto
;
import
com.ximai.mes.md.mapper.MdItemMapper
;
import
com.ximai.mes.md.mapper.MdItemMapper
;
import
com.ximai.mes.md.service.IMdBaseInfoService
;
import
com.ximai.mes.md.service.IMdBaseInfoService
;
import
com.ximai.mes.md.service.IMdItemService
;
import
com.ximai.mes.md.service.IMdItemService
;
...
@@ -53,6 +53,8 @@ import com.ximai.mes.pro.service.task.IProTaskService;
...
@@ -53,6 +53,8 @@ import com.ximai.mes.pro.service.task.IProTaskService;
import
com.ximai.mes.pro.service.task.IProTaskWorkunitService
;
import
com.ximai.mes.pro.service.task.IProTaskWorkunitService
;
import
com.ximai.mes.remote.ErpService
;
import
com.ximai.mes.remote.ErpService
;
import
com.ximai.mes.remote.dto.*
;
import
com.ximai.mes.remote.dto.*
;
import
com.ximai.mes.remote.process.FinishStockInCreateProcess
;
import
com.ximai.mes.remote.process.WorkorderStateUpdateProcess
;
import
com.ximai.mes.tm.domain.TmTool
;
import
com.ximai.mes.tm.domain.TmTool
;
import
com.ximai.mes.tm.mapper.TmToolMapper
;
import
com.ximai.mes.tm.mapper.TmToolMapper
;
import
com.ximai.mes.wm.domain.WmIssueHeader
;
import
com.ximai.mes.wm.domain.WmIssueHeader
;
...
@@ -76,7 +78,6 @@ import java.io.IOException;
...
@@ -76,7 +78,6 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
ximai
.
common
.
constant
.
Constants
.
DateConstant
.
DATETIME_PATTERN
;
import
static
com
.
ximai
.
common
.
constant
.
Constants
.
DateConstant
.
DATETIME_PATTERN
;
...
@@ -988,12 +989,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -988,12 +989,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
proWorkorder
.
setEpItemCode
(
proWorkorder
.
getProductCode
());
proWorkorder
.
setEpItemCode
(
proWorkorder
.
getProductCode
());
}
}
}
}
proWorkorder
.
setQuantityProduced
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityQualify
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityUnqualify
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityScheduled
(
BigDecimal
.
ZERO
);
proWorkorder
.
setBatchSerial
(
1
);
int
i
=
this
.
insertProWorkorder
(
proWorkorder
);
int
i
=
this
.
insertProWorkorder
(
proWorkorder
);
//新增生产工单BOM表
//新增生产工单BOM表
...
@@ -1073,6 +1068,11 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1073,6 +1068,11 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
}
}
proWorkorder
.
setStatus
(
WorkorderStatusEnum
.
PUBLISHED
.
getValue
());
proWorkorder
.
setStatus
(
WorkorderStatusEnum
.
PUBLISHED
.
getValue
());
proWorkorder
.
createAction
();
proWorkorder
.
createAction
();
proWorkorder
.
setQuantityProduced
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityQualify
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityUnqualify
(
BigDecimal
.
ZERO
);
proWorkorder
.
setQuantityScheduled
(
BigDecimal
.
ZERO
);
proWorkorder
.
setBatchSerial
(
1
);
int
r
=
proWorkorderMapper
.
insertProWorkorder
(
proWorkorder
);
int
r
=
proWorkorderMapper
.
insertProWorkorder
(
proWorkorder
);
//未设置生产版本时自动根据产品编号匹配最新生产版本
//未设置生产版本时自动根据产品编号匹配最新生产版本
if
(
ObjectUtil
.
isEmpty
(
proWorkorder
.
getProductionSolutionId
())){
if
(
ObjectUtil
.
isEmpty
(
proWorkorder
.
getProductionSolutionId
())){
...
@@ -1263,22 +1263,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1263,22 +1263,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
return
i
;
return
i
;
}
}
/**
* 查询生产工单
*
* @param workorderIds 生产工单主键
* @return 生产工单
*/
@Override
public
void
updateProWorkorderStatus
(
List
<
Long
>
workorderIds
,
WorkorderStatusEnum
workOrderStatusEnum
)
{
for
(
Long
id
:
workorderIds
)
{
ProWorkorder
proWorkorder
=
proWorkorderMapper
.
selectWorkorderById
(
id
);
proWorkorder
.
setStatus
(
workOrderStatusEnum
.
getValue
());
this
.
updateProWorkorder
(
proWorkorder
);
}
}
@Override
@Override
public
List
<
ProWorkOrderProcessToolLoseVo
>
checkToolNum
(
Long
[]
workOrderIds
)
{
public
List
<
ProWorkOrderProcessToolLoseVo
>
checkToolNum
(
Long
[]
workOrderIds
)
{
ExceptionUtil
.
checkTrueThrowException
(
CollectionUtil
.
isEmpty
(
Arrays
.
asList
(
workOrderIds
)),
MessageUtils
.
message
(
"pro.tool.error.error27"
));
ExceptionUtil
.
checkTrueThrowException
(
CollectionUtil
.
isEmpty
(
Arrays
.
asList
(
workOrderIds
)),
MessageUtils
.
message
(
"pro.tool.error.error27"
));
...
@@ -1315,7 +1299,8 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1315,7 +1299,8 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
}
}
});
});
}
}
//修改工单状态
proWorkorderService
.
updateWorkorderState
(
proWorkorder
,
WorkorderStatusEnum
.
PUBLISHED
);
}
}
...
@@ -1329,8 +1314,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1329,8 +1314,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
throw
new
ServiceException
(
buffer
.
toString
());
throw
new
ServiceException
(
buffer
.
toString
());
}
}
//修改工单状态
proWorkorderService
.
updateProWorkorderStatus
(
Arrays
.
asList
(
workOrderIds
),
WorkorderStatusEnum
.
PUBLISHED
);
return
rst
;
return
rst
;
}
}
...
@@ -1819,6 +1802,9 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1819,6 +1802,9 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
}
}
workorderId
=
dbList
.
get
(
0
).
getWorkorderId
();
workorderId
=
dbList
.
get
(
0
).
getWorkorderId
();
}
}
if
(
ObjectUtil
.
isEmpty
(
workorderId
)){
return
;
}
//保存BOM明细
//保存BOM明细
List
<
ProWorkorderBomErpDto
>
detailList
=
s
.
getWorkorderBomList
();
List
<
ProWorkorderBomErpDto
>
detailList
=
s
.
getWorkorderBomList
();
ProWorkOrderBom
workOrderBomQuery
=
new
ProWorkOrderBom
();
ProWorkOrderBom
workOrderBomQuery
=
new
ProWorkOrderBom
();
...
@@ -1855,4 +1841,29 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
...
@@ -1855,4 +1841,29 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
throw
new
ServiceException
(
rst
.
getErrorMessage
());
throw
new
ServiceException
(
rst
.
getErrorMessage
());
}
}
}
}
@MethodExtendedProcesses
(
config
={
@MethodExtendedProcess
(
sysSwitchParam
=
"erp.finish.stockin.create.enable"
,
processClz
=
FinishStockInCreateProcess
.
class
,
newThread
=
true
,
errorCatch
=
true
)
})
@Override
public
void
reportUpdateProWorkorder
(
ProWorkorder
workorder
,
BigDecimal
qualifyQuantity
,
BigDecimal
unQualifyQuantity
)
{
workorder
.
setQuantityQualify
(
workorder
.
getQuantityQualify
().
add
(
qualifyQuantity
));
workorder
.
setQuantityUnqualify
(
workorder
.
getQuantityUnqualify
().
add
(
unQualifyQuantity
));
workorder
.
setQuantityProduced
(
DataUtil
.
getNormalData
(
workorder
.
getQuantityProduced
()).
add
(
qualifyQuantity
));
if
(
workorder
.
getQuantityProduced
().
compareTo
(
workorder
.
getQuantity
())>=
0
){
proWorkorderService
.
updateWorkorderState
(
workorder
,
WorkorderStatusEnum
.
FINISHED
);
}
proWorkorderService
.
updateProWorkorder
(
workorder
);
}
@MethodExtendedProcesses
(
config
={
@MethodExtendedProcess
(
sysSwitchParam
=
"erp.workorder.state.update"
,
processClz
=
WorkorderStateUpdateProcess
.
class
,
newThread
=
true
,
errorCatch
=
true
)
})
@Override
public
void
updateWorkorderState
(
ProWorkorder
workorder
,
WorkorderStatusEnum
workorderStatusEnum
){
workorder
.
setStatus
(
workorderStatusEnum
.
getValue
());
proWorkorderService
.
updateProWorkorder
(
workorder
);
}
}
}
mes/src/main/java/com/ximai/mes/pro/service/impl/task/ProTaskServiceImpl.java
View file @
6b963db9
...
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
...
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
import
cn.hutool.core.date.StopWatch
;
import
cn.hutool.core.date.StopWatch
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.common.constant.UserConstants
;
import
com.ximai.common.constant.UserConstants
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.common.utils.MessageUtils
;
import
com.ximai.common.utils.MessageUtils
;
import
com.ximai.common.utils.SecurityUtils
;
import
com.ximai.common.utils.SecurityUtils
;
import
com.ximai.common.utils.data.DataUtil
;
import
com.ximai.common.utils.data.DataUtil
;
...
@@ -815,47 +814,29 @@ public class ProTaskServiceImpl implements IProTaskService {
...
@@ -815,47 +814,29 @@ public class ProTaskServiceImpl implements IProTaskService {
}
}
}
}
}
}
if
(
workorderId
!=
null
&&
workorderId
!=
0
)
{
// 查看当前工单已报工数量
// 查看当前工单已报工数量
if
(
proWorkorders
.
size
()
==
1
)
{
if
(
proWorkorders
.
size
()
==
1
)
{
if
(
feedbackQualityDouConst
>=
task
.
getQuantity
().
doubleValue
()
||
taskQuantityWaitDouConst
==
0
)
{
if
(
feedbackQualityDouConst
>=
task
.
getQuantity
().
doubleValue
()
||
taskQuantityWaitDouConst
==
0
)
{
taskWorkunit
.
setStatus
(
FINISHED
.
getStatus
());
}
// 判断已经报工数和未报工数
if
(
execQuantityQualifySumConst
>=
0
)
{
// 第一次进入
if
(
maxWorkunitQuantityConst
>
execQuantityQualifySumConst
)
{
// 工单大于已报工数量 工单减去已报工数量
feedbackQualityVal
=
new
BigDecimal
(
maxWorkunitQuantityConst
-
execQuantityQualifySumConst
);
// 报工数量大于可报工数量取报工数量
if
(
feedbackQualityVal
.
doubleValue
()
>
feedbackQualityDouConst
)
{
feedbackQualityVal
=
feedbackQualifyConst
;
}
}
else
{
feedbackQualityVal
=
BigDecimal
.
valueOf
(
Math
.
min
(
maxWorkunitQuantityConst
,
feedbackQualityDouConst
));
}
}
quantityWaitVal
=
taskQuantityWaitConst
.
subtract
(
feedbackQualityVal
);
}
}
else
{
// 工单数量数量小于或者等于已报工数量 报工数量 大于等待数量 否则
double
v1
=
maxWorkunitQuantityConst
-
execQuantityQualifySumConst
;
if
(
feedbackQualityDouConst
>=
v1
)
{
taskWorkunit
.
setStatus
(
FINISHED
.
getStatus
());
taskWorkunit
.
setStatus
(
FINISHED
.
getStatus
());
feedbackQualityVal
=
BigDecimal
.
valueOf
(
v1
);
}
}
if
(
feedbackQualityDouConst
>
taskQuantityWaitDouConst
)
{
// 判断已经报工数和未报工数
feedbackQualityVal
=
taskQuantityWaitConst
;
if
(
execQuantityQualifySumConst
>=
0
)
{
// 第一次进入
if
(
maxWorkunitQuantityConst
>
execQuantityQualifySumConst
)
{
// 工单大于已报工数量 工单减去已报工数量
feedbackQualityVal
=
new
BigDecimal
(
maxWorkunitQuantityConst
-
execQuantityQualifySumConst
);
// 报工数量大于可报工数量取报工数量
if
(
feedbackQualityVal
.
doubleValue
()
>
feedbackQualityDouConst
)
{
feedbackQualityVal
=
feedbackQualifyConst
;
}
}
else
{
feedbackQualityVal
=
BigDecimal
.
valueOf
(
Math
.
min
(
maxWorkunitQuantityConst
,
feedbackQualityDouConst
));
}
}
}
quantityWaitVal
=
taskQuantityWaitConst
.
subtract
(
feedbackQualityVal
);
quantityWaitVal
=
taskQuantityWaitConst
.
subtract
(
feedbackQualityVal
);
}
}
task
.
setQuantityWait
(
quantityWaitVal
.
doubleValue
()
<
0
D
?
BigDecimal
.
ZERO
:
quantityWaitVal
);
task
.
setQuantityWait
(
quantityWaitVal
.
doubleValue
()
<
0
D
?
BigDecimal
.
ZERO
:
quantityWaitVal
);
task
.
setQuantityProduced
(
DataUtil
.
getNormalData
(
task
.
getQuantityProduced
()).
add
(
feedbackQualityVal
));
task
.
setQuantityProduced
(
DataUtil
.
getNormalData
(
task
.
getQuantityProduced
()).
add
(
feedbackQualityVal
));
task
.
setQuantityQualify
(
DataUtil
.
getNormalData
(
task
.
getQuantityQualify
()).
add
(
feedbackQualityVal
));
task
.
setQuantityQualify
(
DataUtil
.
getNormalData
(
task
.
getQuantityQualify
()).
add
(
feedbackQualityVal
));
...
@@ -878,7 +859,6 @@ public class ProTaskServiceImpl implements IProTaskService {
...
@@ -878,7 +859,6 @@ public class ProTaskServiceImpl implements IProTaskService {
feedback
.
setWorkunitId
(
taskWorkunit
.
getWorkunitId
());
feedback
.
setWorkunitId
(
taskWorkunit
.
getWorkunitId
());
feedback
.
setNickName
(
sysUserMapper
.
selectUserById
(
SecurityUtils
.
getUserId
()).
getNickName
());
feedback
.
setNickName
(
sysUserMapper
.
selectUserById
(
SecurityUtils
.
getUserId
()).
getNickName
());
//暂停更新记录
//暂停更新记录
if
(
Objects
.
equals
(
taskWorkunit
.
getStatus
(),
FINISHED
.
getStatus
()))
{
if
(
Objects
.
equals
(
taskWorkunit
.
getStatus
(),
FINISHED
.
getStatus
()))
{
proStartWorkService
.
closeObj
(
feedback
);
proStartWorkService
.
closeObj
(
feedback
);
...
@@ -905,26 +885,16 @@ public class ProTaskServiceImpl implements IProTaskService {
...
@@ -905,26 +885,16 @@ public class ProTaskServiceImpl implements IProTaskService {
//如果为最后一道工序,回写工单数量
//如果为最后一道工序,回写工单数量
if
(
StringUtils
.
isEmpty
(
nextTask
))
{
if
(
StringUtils
.
isEmpty
(
nextTask
))
{
feedbackWorkorder
.
forEach
((
k
,
v
)
->
{
feedbackWorkorder
.
forEach
((
k
,
v
)
->
{
ProWorkorder
workorder
=
v
.
getWorkorder
();
proWorkorderService
.
reportUpdateProWorkorder
(
v
.
getWorkorder
(),
v
.
getQuantityQualify
(),
v
.
getQuantityUnqualify
());
workorder
.
setQuantityQualify
(
workorder
.
getQuantityQualify
().
add
(
v
.
getQuantityQualify
()));
workorder
.
setQuantityUnqualify
(
workorder
.
getQuantityUnqualify
().
add
(
v
.
getQuantityUnqualify
()));
workorder
.
setQuantityProduced
(
DataUtil
.
getNormalData
(
workorder
.
getQuantityProduced
()).
add
(
v
.
getQuantityQualify
()));
proWorkorderService
.
updateProWorkorder
(
workorder
);
});
});
}
}
}
}
proTaskWorkunitService
.
updateProTaskWorkunit
(
taskWorkunit
);
proTaskWorkunitService
.
updateProTaskWorkunit
(
taskWorkunit
);
//打印记录
if
(
"1"
.
equals
(
feedback
.
getPrintContents
()))
{
proFdQrcodePrintRecordService
.
insertProFdQrcodePrintRecordfeedback
(
feedback
);
}
//扣减刀具寿命
proTaskWorkunitService
.
updateProTaskWorkunitlife
(
feedback
);
//报工满足条件下架刀模版具
tmToolMachinesService
.
feedbackToolDismount
(
taskWorkunit
);
return
response
;
return
response
;
}
}
@Transactional
@Transactional
@Override
@Override
public
void
changeStatus
(
ProTask
proTask
)
{
public
void
changeStatus
(
ProTask
proTask
)
{
...
@@ -948,20 +918,12 @@ public class ProTaskServiceImpl implements IProTaskService {
...
@@ -948,20 +918,12 @@ public class ProTaskServiceImpl implements IProTaskService {
proTasks
=
proTaskMapper
.
selectProTaskVoList
(
taskWorkunitId
,
task
.
getArrangeCode
());
proTasks
=
proTaskMapper
.
selectProTaskVoList
(
taskWorkunitId
,
task
.
getArrangeCode
());
task
=
proTasks
.
get
(
0
);
task
=
proTasks
.
get
(
0
);
proTaskWorkunit
.
setStatus
(
proTask
.
getStatus
());
proTaskWorkunitService
.
updateProTaskWorkunit
(
proTaskWorkunit
);
if
(
proTask
.
getStatus
().
equals
(
TaskStatusEnum
.
BEGINNING
.
getStatus
()))
{
if
(
proTask
.
getStatus
().
equals
(
TaskStatusEnum
.
BEGINNING
.
getStatus
()))
{
//设置工单状态为生产中
proTaskWorkunit
.
setStatus
(
proTask
.
getStatus
());
List
<
ProWorkorder
>
orderList
=
proWorkorderMapper
.
selectProWorkorderJoinTask
(
new
QueryWrapper
<
ProWorkorder
>().
eq
(
"t2.task_id"
,
proTask
.
getTaskId
()));
proTaskWorkunitService
.
updateProTaskWorkunitState
(
proTaskWorkunit
,
TaskStatusEnum
.
get
(
proTask
.
getStatus
()));
for
(
ProWorkorder
proWorkorder
:
orderList
)
{
if
(
WorkorderStatusEnum
.
ISSUED
.
getValue
().
equals
(
proWorkorder
.
getStatus
()))
{
proWorkorder
.
setStatus
(
WorkorderStatusEnum
.
PRODUCING
.
getValue
());
Long
workorderId
=
proWorkorder
.
getWorkorderId
();
proWorkorderService
.
updateProWorkorderStatus
(
Collections
.
singletonList
(
workorderId
),
WorkorderStatusEnum
.
PRODUCING
);
}
}
}
}
if
(
proTask
.
getStatus
().
equals
(
TaskStatusEnum
.
FINISHED
.
getStatus
()))
{
if
(
proTask
.
getStatus
().
equals
(
TaskStatusEnum
.
FINISHED
.
getStatus
()))
{
...
...
mes/src/main/java/com/ximai/mes/pro/service/impl/task/ProTaskWorkunitServiceImpl.java
View file @
6b963db9
...
@@ -3,24 +3,20 @@ package com.ximai.mes.pro.service.impl.task;
...
@@ -3,24 +3,20 @@ package com.ximai.mes.pro.service.impl.task;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.
Number
Util
;
import
cn.hutool.core.util.
Object
Util
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.common.core.domain.BaseEntity
;
import
com.ximai.common.core.domain.entity.SysUser
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.common.utils.MessageUtils
;
import
com.ximai.common.utils.MessageUtils
;
import
com.ximai.common.utils.data.DataUtil
;
import
com.ximai.common.utils.data.ExceptionUtil
;
import
com.ximai.common.utils.data.ExceptionUtil
;
import
com.ximai.common.utils.data.StringUtils
;
import
com.ximai.common.utils.data.StringUtils
;
import
com.ximai.mes.aspect.MethodExtendedProcess
;
import
com.ximai.mes.aspect.MethodExtendedProcesses
;
import
com.ximai.mes.constant.*
;
import
com.ximai.mes.constant.*
;
import
com.ximai.mes.md.domain.MdWorkunit
;
import
com.ximai.mes.md.mapper.MdWorkunitMapper
;
import
com.ximai.mes.md.mapper.MdWorkunitMapper
;
import
com.ximai.mes.md.service.IMdWorkunitService
;
import
com.ximai.mes.md.service.IMdWorkunitService
;
import
com.ximai.mes.pro.domain.ProArrange
;
import
com.ximai.mes.pro.domain.ProFeedback
;
import
com.ximai.mes.pro.domain.ProFeedback
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.task.*
;
import
com.ximai.mes.pro.domain.task.*
;
import
com.ximai.mes.pro.domain.vo.ProTaskVo
;
import
com.ximai.mes.pro.domain.vo.task.ProTaskWorkunitQuery
;
import
com.ximai.mes.pro.domain.vo.task.ProTaskWorkunitQuery
;
import
com.ximai.mes.pro.domain.vo.task.TaskWorkunitOutsourceSplitParam
;
import
com.ximai.mes.pro.domain.vo.task.TaskWorkunitOutsourceSplitParam
;
import
com.ximai.mes.pro.domain.vo.task.TaskWorkunitToOutsourceParam
;
import
com.ximai.mes.pro.domain.vo.task.TaskWorkunitToOutsourceParam
;
...
@@ -28,11 +24,13 @@ import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToSelfMadeParam;
...
@@ -28,11 +24,13 @@ import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToSelfMadeParam;
import
com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordCreate
;
import
com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordCreate
;
import
com.ximai.mes.pro.mapper.ProArrangeMapper
;
import
com.ximai.mes.pro.mapper.ProArrangeMapper
;
import
com.ximai.mes.pro.mapper.ProFeedbackMapper
;
import
com.ximai.mes.pro.mapper.ProFeedbackMapper
;
import
com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper
;
import
com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper
;
import
com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper
;
import
com.ximai.mes.pro.service.IProAllocationMaterialService
;
import
com.ximai.mes.pro.service.IProAllocationMaterialService
;
import
com.ximai.mes.pro.service.IProMaterialRequestService
;
import
com.ximai.mes.pro.service.IProMaterialRequestService
;
import
com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService
;
import
com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService
;
import
com.ximai.mes.pro.service.task.*
;
import
com.ximai.mes.pro.service.task.*
;
import
com.ximai.mes.remote.process.PurchasingRequisitionCreateProcess
;
import
com.ximai.mes.tm.domain.TmTool
;
import
com.ximai.mes.tm.domain.TmTool
;
import
com.ximai.mes.tm.domain.TmToolMachines
;
import
com.ximai.mes.tm.domain.TmToolMachines
;
import
com.ximai.mes.tm.domain.TmToolRequestUseItem
;
import
com.ximai.mes.tm.domain.TmToolRequestUseItem
;
...
@@ -48,7 +46,6 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -48,7 +46,6 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
ximai
.
mes
.
constant
.
WorkorderStatusEnum
.
CLOSE
;
import
static
com
.
ximai
.
mes
.
constant
.
WorkorderStatusEnum
.
CLOSE
;
...
@@ -70,7 +67,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
...
@@ -70,7 +67,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
@Autowired
@Autowired
private
IProTaskWorkunitService
proTaskWorkunitService
;
private
IProTaskWorkunitService
proTaskWorkunitService
;
@Resource
@Resource
private
Pro
ArrangeMapper
proArrange
Mapper
;
private
Pro
WorkorderMapper
proWorkorder
Mapper
;
@Resource
@Resource
private
SysUserMapper
sysUserMapper
;
private
SysUserMapper
sysUserMapper
;
...
@@ -189,6 +186,22 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
...
@@ -189,6 +186,22 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
return
proTaskWorkunitMapper
.
updateProTaskWorkunit
(
proTaskWorkunit
);
return
proTaskWorkunitMapper
.
updateProTaskWorkunit
(
proTaskWorkunit
);
}
}
@Override
public
void
updateProTaskWorkunitState
(
ProTaskWorkunit
proTaskWorkunit
,
TaskStatusEnum
taskStatusEnum
)
{
if
(
taskStatusEnum
==
TaskStatusEnum
.
BEGINNING
){
//判断是否设置工单开工
List
<
ProWorkorder
>
orderList
=
proWorkorderMapper
.
selectProWorkorderJoinTask
(
new
QueryWrapper
<
ProWorkorder
>().
eq
(
"t2.task_id"
,
proTaskWorkunit
.
getTaskId
()));
for
(
ProWorkorder
proWorkorder
:
orderList
)
{
if
(
WorkorderStatusEnum
.
ISSUED
.
getValue
().
equals
(
proWorkorder
.
getStatus
()))
{
proWorkorder
.
setStatus
(
WorkorderStatusEnum
.
PRODUCING
.
getValue
());
proWorkorderService
.
updateWorkorderState
(
proWorkorder
,
WorkorderStatusEnum
.
PRODUCING
);
}
}
}
proTaskWorkunit
.
setStatus
(
taskStatusEnum
.
getStatus
());
this
.
updateProTaskWorkunit
(
proTaskWorkunit
);
}
/**
/**
* 修改任务工作单元
* 修改任务工作单元
*
*
...
@@ -412,6 +425,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
...
@@ -412,6 +425,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
query
.
le
(
proTaskWorkunit
.
getScheduleEndDateTo
()
!=
null
,
"ptw.schedule_start_date"
,
proTaskWorkunit
.
getScheduleEndDateTo
());
query
.
le
(
proTaskWorkunit
.
getScheduleEndDateTo
()
!=
null
,
"ptw.schedule_start_date"
,
proTaskWorkunit
.
getScheduleEndDateTo
());
query
.
eq
(
StringUtils
.
isNotEmpty
(
proTaskWorkunit
.
getArrangeCode
()),
"t.arrange_code"
,
proTaskWorkunit
.
getArrangeCode
());
query
.
eq
(
StringUtils
.
isNotEmpty
(
proTaskWorkunit
.
getArrangeCode
()),
"t.arrange_code"
,
proTaskWorkunit
.
getArrangeCode
());
query
.
eq
(
proTaskWorkunit
.
getOutsourced
()!=
null
,
"ptw.outsourced"
,
proTaskWorkunit
.
getOutsourced
());
query
.
eq
(
proTaskWorkunit
.
getOutsourced
()!=
null
,
"ptw.outsourced"
,
proTaskWorkunit
.
getOutsourced
());
query
.
gt
(
"ptw.quantity"
,
0
);
query
.
orderByAsc
(
"schedule_start_date"
);
query
.
orderByAsc
(
"schedule_start_date"
);
List
<
ProTaskWorkunit
>
list
=
proTaskWorkunitService
.
selectTaskWorkUnitJoinTask
(
query
);
List
<
ProTaskWorkunit
>
list
=
proTaskWorkunitService
.
selectTaskWorkUnitJoinTask
(
query
);
return
list
;
return
list
;
...
@@ -521,9 +535,21 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
...
@@ -521,9 +535,21 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
if
(
taskWorkunit
.
getVendorId
()==
null
){
if
(
taskWorkunit
.
getVendorId
()==
null
){
throw
new
ServiceException
(
MessageUtils
.
message
(
"pro.schedule.error.not.null.vendor"
));
throw
new
ServiceException
(
MessageUtils
.
message
(
"pro.schedule.error.not.null.vendor"
));
}
}
taskWorkunit
.
setOutsourced
(
1
);
if
(
ObjectUtil
.
equal
(
taskWorkunit
.
getOutsourced
(),
1
)){
taskWorkunit
.
setStatus
(
TaskStatusEnum
.
BEGINNING
.
getStatus
());
throw
new
ServiceException
(
MessageUtils
.
message
(
"basic.error.repeat.confirm"
));
this
.
updateProTaskWorkunit
(
taskWorkunit
);
}
proTaskWorkunitService
.
outsourceConfirm
(
taskWorkunit
);
});
});
}
}
@MethodExtendedProcesses
(
config
={
@MethodExtendedProcess
(
sysSwitchParam
=
"erp.purchasing.requisition.create.enable"
,
processClz
=
PurchasingRequisitionCreateProcess
.
class
,
newThread
=
true
,
errorCatch
=
true
)
})
@Override
public
void
outsourceConfirm
(
ProTaskWorkunit
taskWorkunit
)
{
taskWorkunit
.
setOutsourced
(
1
);
this
.
updateProTaskWorkunit
(
taskWorkunit
);
this
.
updateProTaskWorkunitState
(
taskWorkunit
,
TaskStatusEnum
.
BEGINNING
);
}
}
}
mes/src/main/java/com/ximai/mes/pro/service/proWorkOrder/IProWorkorderService.java
View file @
6b963db9
...
@@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
...
@@ -16,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -91,6 +92,19 @@ public interface IProWorkorderService {
...
@@ -91,6 +92,19 @@ public interface IProWorkorderService {
*/
*/
int
insertProWorkorderVo
(
ProWorkorderVo
proWorkorderVo
);
int
insertProWorkorderVo
(
ProWorkorderVo
proWorkorderVo
);
/**
* 生产完工,更新工单数量信息
*
* @param proWorkorder 生产工单
* @param qualifyQuantity 完工数量
* @param unQualifyQuantity 不合格数量
* @return 结果
*/
void
reportUpdateProWorkorder
(
ProWorkorder
proWorkorder
,
BigDecimal
qualifyQuantity
,
BigDecimal
unQualifyQuantity
);
void
updateWorkorderState
(
ProWorkorder
workorder
,
WorkorderStatusEnum
workorderStatusEnum
);
/**
/**
* 修改生产工单
* 修改生产工单
*
*
...
@@ -132,15 +146,6 @@ public interface IProWorkorderService {
...
@@ -132,15 +146,6 @@ public interface IProWorkorderService {
*/
*/
int
updateProWorkorderWithBomAndProcess
(
ProWorkorderVo
proWorkorderVo
);
int
updateProWorkorderWithBomAndProcess
(
ProWorkorderVo
proWorkorderVo
);
/**
* 修改生产工单方法
*
* @param workorderId 生产工单主键 status 工单状态
* @return 生产工单
*/
void
updateProWorkorderStatus
(
List
<
Long
>
workorderId
,
WorkorderStatusEnum
workOrderStatusEnum
);
/**
/**
* 工单工装齐套检查
* 工单工装齐套检查
*
*
...
...
mes/src/main/java/com/ximai/mes/pro/service/task/IProTaskWorkunitService.java
View file @
6b963db9
package
com
.
ximai
.
mes
.
pro
.
service
.
task
;
package
com
.
ximai
.
mes
.
pro
.
service
.
task
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.mes.constant.TaskStatusEnum
;
import
com.ximai.mes.pro.domain.ProFeedback
;
import
com.ximai.mes.pro.domain.ProFeedback
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.task.ProTaskWorkunit
;
import
com.ximai.mes.pro.domain.task.ProTaskWorkunit
;
...
@@ -68,6 +69,14 @@ public interface IProTaskWorkunitService {
...
@@ -68,6 +69,14 @@ public interface IProTaskWorkunitService {
*/
*/
int
updateProTaskWorkunit
(
ProTaskWorkunit
proTaskWorkunit
);
int
updateProTaskWorkunit
(
ProTaskWorkunit
proTaskWorkunit
);
/**
* 修改任务工作单元状态
*
* @param proTaskWorkunit 任务工作单元
* @return 结果
*/
void
updateProTaskWorkunitState
(
ProTaskWorkunit
proTaskWorkunit
,
TaskStatusEnum
taskStatusEnum
);
/**
/**
* 修改任务工作单元排产时间、工作单元
* 修改任务工作单元排产时间、工作单元
*
*
...
@@ -154,4 +163,10 @@ public interface IProTaskWorkunitService {
...
@@ -154,4 +163,10 @@ public interface IProTaskWorkunitService {
*/
*/
void
outsourceConfirm
(
List
<
Long
>
taskWorkunitIds
);
void
outsourceConfirm
(
List
<
Long
>
taskWorkunitIds
);
/**
* 委外确认
* @param taskWorkunit
*/
void
outsourceConfirm
(
ProTaskWorkunit
taskWorkunit
);
}
}
mes/src/main/java/com/ximai/mes/remote/ErpService.java
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
;
package
com
.
ximai
.
mes
.
remote
;
import
com.ximai.common.annotation.Log
;
import
com.ximai.common.annotation.
Api
Log
;
import
com.ximai.common.enums.BusinessType
;
import
com.ximai.common.enums.BusinessType
;
import
com.ximai.common.enums.InOutType
;
import
com.ximai.mes.remote.dto.*
;
import
com.ximai.mes.remote.dto.*
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
...
@@ -15,60 +16,60 @@ import java.util.List;
...
@@ -15,60 +16,60 @@ import java.util.List;
@FeignClient
(
value
=
"erp-service"
,
url
=
"${remote.erp.url}"
)
@FeignClient
(
value
=
"erp-service"
,
url
=
"${remote.erp.url}"
)
public
interface
ErpService
{
public
interface
ErpService
{
@
Log
(
businessType
=
BusinessType
.
QUERY
)
@
ApiLog
(
businessType
=
BusinessType
.
QUERY
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"查询ERP供应商"
)
@ApiOperation
(
value
=
"查询ERP供应商"
)
@PostMapping
(
value
=
"/purma/getPurmaList"
)
@PostMapping
(
value
=
"/purma/getPurmaList"
)
ErpResponseResult
<
List
<
MdVendorErpDto
>>
getVendorList
(
MdVendorErpQuery
vendorErpQuery
);
ErpResponseResult
<
List
<
MdVendorErpDto
>>
getVendorList
(
MdVendorErpQuery
vendorErpQuery
);
@
Log
(
businessType
=
BusinessType
.
QUERY
)
@
ApiLog
(
businessType
=
BusinessType
.
QUERY
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"查询ERP客户"
)
@ApiOperation
(
value
=
"查询ERP客户"
)
@PostMapping
(
value
=
"/copma/getCopmaList"
)
@PostMapping
(
value
=
"/copma/getCopmaList"
)
ErpResponseResult
<
List
<
MdClientErpDto
>>
getClientList
(
MdClientErpQuery
clientErpQuery
);
ErpResponseResult
<
List
<
MdClientErpDto
>>
getClientList
(
MdClientErpQuery
clientErpQuery
);
@
Log
(
businessType
=
BusinessType
.
QUERY
)
@
ApiLog
(
businessType
=
BusinessType
.
QUERY
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"查询ERP仓库"
)
@ApiOperation
(
value
=
"查询ERP仓库"
)
@PostMapping
(
value
=
"/cmsmc/getCmsmcList"
)
@PostMapping
(
value
=
"/cmsmc/getCmsmcList"
)
ErpResponseResult
<
List
<
WmWarehouseErpDto
>>
getWarehouseList
(
WmWarehouseErpQuery
warehouseErpQuery
);
ErpResponseResult
<
List
<
WmWarehouseErpDto
>>
getWarehouseList
(
WmWarehouseErpQuery
warehouseErpQuery
);
@
Log
(
businessType
=
BusinessType
.
QUERY
)
@
ApiLog
(
businessType
=
BusinessType
.
QUERY
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"查询ERP物料"
)
@ApiOperation
(
value
=
"查询ERP物料"
)
@PostMapping
(
value
=
"/invmb/getInvmbList"
)
@PostMapping
(
value
=
"/invmb/getInvmbList"
)
ErpResponseResult
<
List
<
MdItemErpDto
>>
getItemList
(
MdItemErpQuery
itemErpQuery
);
ErpResponseResult
<
List
<
MdItemErpDto
>>
getItemList
(
MdItemErpQuery
itemErpQuery
);
@
Log
(
businessType
=
BusinessType
.
QUERY
)
@
ApiLog
(
businessType
=
BusinessType
.
QUERY
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"查询工单"
)
@ApiOperation
(
value
=
"查询工单"
)
@PostMapping
(
value
=
"/mocta/getMoctaList"
)
@PostMapping
(
value
=
"/mocta/getMoctaList"
)
ErpResponseResult
<
List
<
ProWorkorderErpDto
>>
getWorkorderList
(
ProWorkorderErpQuery
workorderErpQuery
);
ErpResponseResult
<
List
<
ProWorkorderErpDto
>>
getWorkorderList
(
ProWorkorderErpQuery
workorderErpQuery
);
@
Log
(
businessType
=
BusinessType
.
UPDATE
)
@
ApiLog
(
businessType
=
BusinessType
.
UPDATE
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"工单同步标识"
)
@ApiOperation
(
value
=
"工单同步标识"
)
@PostMapping
(
value
=
"/mocta/syncMark"
)
@PostMapping
(
value
=
"/mocta/syncMark"
)
ErpResponseResult
<
Object
>
workorderSyncMark
(
ProWorkorderSyncMarkUpdate
syncMarkUpdate
);
ErpResponseResult
<
Object
>
workorderSyncMark
(
ProWorkorderSyncMarkUpdate
syncMarkUpdate
);
@
Log
(
businessType
=
BusinessType
.
UPDATE
)
@
ApiLog
(
businessType
=
BusinessType
.
UPDATE
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"物料同步标识"
)
@ApiOperation
(
value
=
"物料同步标识"
)
@PostMapping
(
value
=
"/invmb/syncMark"
)
@PostMapping
(
value
=
"/invmb/syncMark"
)
ErpResponseResult
<
Object
>
materialSyncMark
(
MdItemSyncMarkUpdate
syncMarkUpdate
);
ErpResponseResult
<
Object
>
materialSyncMark
(
MdItemSyncMarkUpdate
syncMarkUpdate
);
@
Log
(
businessType
=
BusinessType
.
UPDATE
)
@
ApiLog
(
businessType
=
BusinessType
.
UPDATE
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"工单状态更新"
)
@ApiOperation
(
value
=
"工单状态更新"
)
@PostMapping
(
value
=
"/mocta/updateState"
)
@PostMapping
(
value
=
"/mocta/updateState"
)
ErpResponseResult
<
Object
>
update
State
(
ProWorkorderSyncMarkUpdate
syncMark
Update
);
ErpResponseResult
<
Object
>
update
WorkorderState
(
ProWorkorderStateUpdate
state
Update
);
@
Log
(
businessType
=
BusinessType
.
UPDATE
)
@
ApiLog
(
businessType
=
BusinessType
.
UPDATE
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"请购单创建"
)
@ApiOperation
(
value
=
"请购单创建"
)
@PostMapping
(
value
=
"/purta/create"
)
@PostMapping
(
value
=
"/purta/create"
)
ErpResponseResult
<
Object
>
purchasingRequisitionCreate
(
P
roWorkorderSyncMarkUpdate
syncMarkUpd
ate
);
ErpResponseResult
<
Object
>
purchasingRequisitionCreate
(
P
urchasingRequisitionCreate
cre
ate
);
@
Log
(
businessType
=
BusinessType
.
UPDATE
)
@
ApiLog
(
businessType
=
BusinessType
.
UPDATE
,
inOutType
=
InOutType
.
OUT
)
@ApiOperation
(
value
=
"完工入库创建"
)
@ApiOperation
(
value
=
"完工入库创建"
)
@PostMapping
(
value
=
"/moctf/create"
)
@PostMapping
(
value
=
"/moctf/create"
)
ErpResponseResult
<
Object
>
finishStockInCreate
(
ProWorkorderSyncMarkUpdate
syncMarkUpd
ate
);
ErpResponseResult
<
Object
>
finishStockInCreate
(
FinishStockInCreate
cre
ate
);
}
}
mes/src/main/java/com/ximai/mes/remote/config/CustomResponseEntityDecoder.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
config
;
import
com.ximai.common.exception.ServiceException
;
import
com.ximai.mes.remote.dto.ErpResponseResult
;
import
feign.FeignException
;
import
feign.Response
;
import
feign.codec.Decoder
;
import
feign.form.spring.SpringFormEncoder
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.beans.factory.SmartInitializingSingleton
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.http.HttpMessageConverters
;
import
org.springframework.cloud.openfeign.support.ResponseEntityDecoder
;
import
org.springframework.cloud.openfeign.support.SpringDecoder
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.lang.reflect.Type
;
@Component
public
class
CustomResponseEntityDecoder
extends
SpringDecoder
{
public
CustomResponseEntityDecoder
(
ObjectFactory
<
HttpMessageConverters
>
messageConverters
)
{
super
(
messageConverters
);
}
@Override
public
Object
decode
(
Response
response
,
Type
type
)
throws
IOException
,
FeignException
{
Object
obj
=
super
.
decode
(
response
,
type
);
if
(
obj
instanceof
ErpResponseResult
){
ErpResponseResult
result
=
(
ErpResponseResult
)
obj
;
if
(!
result
.
isSuccess
()){
throw
new
ServiceException
(
"api error:"
+
result
.
getErrorMessage
());
}
}
return
obj
;
}
}
mes/src/main/java/com/ximai/mes/remote/dto/FinishStockInCreate.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* 完工入库 FinishStockInCreate
*
* @date 2024-10-25
*/
@Data
public
class
FinishStockInCreate
{
@ApiModelProperty
(
"入库单号"
)
@JsonProperty
(
"tf002"
)
private
String
stockInNo
;
@ApiModelProperty
(
"备注"
)
@JsonProperty
(
"tf005"
)
private
String
remark
;
@ApiModelProperty
(
"明细"
)
private
List
<
FinishStockInCreateDetail
>
details
;
}
mes/src/main/java/com/ximai/mes/remote/dto/FinishStockInCreateDetail.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* 完工入库 FinishStockInCreate
*
* @date 2024-10-25
*/
@Data
public
class
FinishStockInCreateDetail
{
@ApiModelProperty
(
"入库单号"
)
@JsonProperty
(
"tg002"
)
private
String
stockInNo
;
@ApiModelProperty
(
"入库数量"
)
@JsonProperty
(
"tg011"
)
private
BigDecimal
inQuantity
;
@ApiModelProperty
(
"工单单别"
)
@JsonProperty
(
"tg014"
)
private
String
workorderType
;
@ApiModelProperty
(
"工单单号"
)
@JsonProperty
(
"tg015"
)
private
String
workorderCode
;
@ApiModelProperty
(
"验收数量"
)
@JsonProperty
(
"tg013"
)
private
BigDecimal
checkQuantity
;
}
mes/src/main/java/com/ximai/mes/remote/dto/ProWorkorderStateUpdate.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 工单对象 ProWorkorderErpQuery
*
* @date 2024-10-18
*/
@Data
public
class
ProWorkorderStateUpdate
{
@ApiModelProperty
(
"工单单别"
)
@JsonProperty
(
"ta001"
)
private
String
workorderType
;
@ApiModelProperty
(
"工单单号"
)
@JsonProperty
(
"ta002"
)
private
String
workorderCode
;
/**
* 生产中:3
* 关闭:y
*/
@ApiModelProperty
(
"ERP工单状态"
)
@JsonProperty
(
"ta011"
)
private
String
state
;
}
mes/src/main/java/com/ximai/mes/remote/dto/PurchasingRequisitionCreate.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* 物料对象 MdItemErpQuery
*
* @date 2024-10-25
*/
@Data
public
class
PurchasingRequisitionCreate
{
@ApiModelProperty
(
"工单类型"
)
@JsonProperty
(
"workorderType"
)
private
String
workorderType
;
@ApiModelProperty
(
"工单号"
)
@JsonProperty
(
"workorderCode"
)
private
String
workorderCode
;
@ApiModelProperty
(
"请购单号"
)
@JsonProperty
(
"ta002"
)
private
String
requisitionCode
;
@ApiModelProperty
(
"数量合计"
)
@JsonProperty
(
"ta011"
)
private
BigDecimal
totalQuantity
;
@ApiModelProperty
(
"明细"
)
private
List
<
PurchasingRequisitionDetailCreate
>
details
;
}
mes/src/main/java/com/ximai/mes/remote/dto/PurchasingRequisitionDetailCreate.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 物料对象 MdItemErpQuery
*
* @date 2024-10-25
*/
@Data
public
class
PurchasingRequisitionDetailCreate
{
@ApiModelProperty
(
"需求日期"
)
@JsonProperty
(
"tb011"
)
private
String
requestDate
;
@ApiModelProperty
(
"委外加工数量"
)
@JsonProperty
(
"udf11"
)
private
String
quantity
;
@ApiModelProperty
(
"委外工艺"
)
@JsonProperty
(
"udf12"
)
private
String
processName
;
}
mes/src/main/java/com/ximai/mes/remote/process/FinishStockInCreateProcess.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
process
;
import
com.ximai.mes.aspect.IExtendedProcess
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.remote.ErpService
;
import
com.ximai.mes.remote.dto.FinishStockInCreate
;
import
com.ximai.mes.remote.dto.FinishStockInCreateDetail
;
import
com.ximai.system.strategy.AutoCodeUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
@Component
public
class
FinishStockInCreateProcess
implements
IExtendedProcess
{
@Autowired
ErpService
erpService
;
@Autowired
private
AutoCodeUtil
autoCodeUtil
;
@Override
public
void
process
(
Object
[]
args
,
Object
returnResult
)
{
ProWorkorder
workorder
=
(
ProWorkorder
)
args
[
0
];
BigDecimal
qualifyQuantity
=
(
BigDecimal
)
args
[
1
];
String
requestCode
=
autoCodeUtil
.
genSerialCode
(
"ERP_FINISH_STOCK_IN"
,
""
);
FinishStockInCreate
create
=
new
FinishStockInCreate
();
create
.
setStockInNo
(
requestCode
);
List
<
FinishStockInCreateDetail
>
details
=
new
ArrayList
<>();
FinishStockInCreateDetail
detail
=
new
FinishStockInCreateDetail
();
detail
.
setStockInNo
(
requestCode
);
detail
.
setWorkorderType
(
workorder
.
getWorkorderType
());
detail
.
setWorkorderCode
(
workorder
.
getWorkorderCode
());
detail
.
setCheckQuantity
(
qualifyQuantity
);
detail
.
setInQuantity
(
qualifyQuantity
);
details
.
add
(
detail
);
create
.
setDetails
(
details
);
erpService
.
finishStockInCreate
(
create
);
}
}
mes/src/main/java/com/ximai/mes/remote/process/PurchasingRequisitionCreateProcess.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
process
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.ximai.mes.aspect.IExtendedProcess
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.pro.domain.task.ProTask
;
import
com.ximai.mes.pro.domain.task.ProTaskWorkunit
;
import
com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper
;
import
com.ximai.mes.pro.service.task.IProTaskService
;
import
com.ximai.mes.remote.ErpService
;
import
com.ximai.mes.remote.dto.PurchasingRequisitionCreate
;
import
com.ximai.mes.remote.dto.PurchasingRequisitionDetailCreate
;
import
com.ximai.system.strategy.AutoCodeUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
@Component
public
class
PurchasingRequisitionCreateProcess
implements
IExtendedProcess
{
@Autowired
ErpService
erpService
;
@Autowired
IProTaskService
taskService
;
@Autowired
ProWorkorderMapper
proWorkorderMapper
;
@Autowired
private
AutoCodeUtil
autoCodeUtil
;
@Override
public
void
process
(
Object
[]
args
,
Object
returnResult
)
{
ProTaskWorkunit
taskWorkunit
=
(
ProTaskWorkunit
)
args
[
0
];
ProTask
task
=
taskService
.
selectProTaskByTaskId
(
taskWorkunit
.
getTaskId
());
QueryWrapper
<
ProWorkorder
>
workorderQuery
=
new
QueryWrapper
<>();
workorderQuery
.
eq
(
"t2.task_id"
,
task
.
getTaskId
());
List
<
ProWorkorder
>
workorderList
=
proWorkorderMapper
.
selectProWorkorderJoinTask
(
workorderQuery
);
PurchasingRequisitionCreate
create
=
new
PurchasingRequisitionCreate
();
String
requestCode
=
autoCodeUtil
.
genSerialCode
(
"ERP_PURCHASING_REQUISITION"
,
""
);
if
(
workorderList
.
size
()>
0
){
create
.
setWorkorderType
(
workorderList
.
get
(
0
).
getWorkorderType
());
create
.
setWorkorderCode
(
workorderList
.
get
(
0
).
getWorkorderCode
());
}
create
.
setRequisitionCode
(
requestCode
);
create
.
setTotalQuantity
(
taskWorkunit
.
getQuantity
());
List
<
PurchasingRequisitionDetailCreate
>
details
=
new
ArrayList
<>();
PurchasingRequisitionDetailCreate
detailCreate
=
new
PurchasingRequisitionDetailCreate
();
detailCreate
.
setQuantity
(
taskWorkunit
.
getQuantity
()+
""
);
detailCreate
.
setProcessName
(
task
.
getProcessName
());
detailCreate
.
setRequestDate
(
DateUtil
.
format
(
taskWorkunit
.
getScheduleEndDate
(),
"yyyyMMdd"
));
details
.
add
(
detailCreate
);
create
.
setDetails
(
details
);
erpService
.
purchasingRequisitionCreate
(
create
);
}
}
mes/src/main/java/com/ximai/mes/remote/process/WorkorderStateUpdateProcess.java
0 → 100644
View file @
6b963db9
package
com
.
ximai
.
mes
.
remote
.
process
;
import
com.ximai.mes.aspect.IExtendedProcess
;
import
com.ximai.mes.constant.WorkorderStatusEnum
;
import
com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder
;
import
com.ximai.mes.remote.ErpService
;
import
com.ximai.mes.remote.dto.ProWorkorderStateUpdate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
@Component
public
class
WorkorderStateUpdateProcess
implements
IExtendedProcess
{
@Autowired
ErpService
erpService
;
@Override
public
void
process
(
Object
[]
args
,
Object
returnResult
)
{
ProWorkorder
workorder
=
(
ProWorkorder
)
args
[
0
];
WorkorderStatusEnum
workorderStatusEnum
=
(
WorkorderStatusEnum
)
args
[
1
];
ProWorkorderStateUpdate
stateUpdate
=
new
ProWorkorderStateUpdate
();
stateUpdate
.
setWorkorderCode
(
workorder
.
getWorkorderCode
());
stateUpdate
.
setWorkorderType
(
workorder
.
getWorkorderType
());
if
(
workorderStatusEnum
==
WorkorderStatusEnum
.
FINISHED
){
stateUpdate
.
setState
(
"y"
);
erpService
.
updateWorkorderState
(
stateUpdate
);
}
else
if
(
workorderStatusEnum
==
WorkorderStatusEnum
.
PRODUCING
){
stateUpdate
.
setState
(
"3"
);
erpService
.
updateWorkorderState
(
stateUpdate
);
}
}
}
mes/src/main/resources/mapper/pro/task/ProTaskWorkunitMapper.xml
View file @
6b963db9
...
@@ -49,7 +49,8 @@
...
@@ -49,7 +49,8 @@
ptw.status,
ptw.status,
ptw.create_by,
ptw.create_by,
ptw.create_time,
ptw.create_time,
ptw.remark
ptw.remark,
ptw.outsourced
from pro_task_workunit ptw
from pro_task_workunit ptw
left join md_workunit mw
left join md_workunit mw
on mw.workunit_id = ptw.workunit_id
on mw.workunit_id = ptw.workunit_id
...
...
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