Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
T
topsun-bpm
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
鲁鑫
topsun-bpm
Commits
e441a8db
Commit
e441a8db
authored
Aug 30, 2024
by
鲁鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MES质量评审功能
parent
61e13dad
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1177 additions
and
2 deletions
+1177
-2
数据库变更记录
topsun-xt/src/main/resources/数据库变更记录
+6
-2
attachment.jsp
...webapp/biz/topsun/mes/unqualifiedMaterials/attachment.jsp
+10
-0
unqualifiedMaterialsDetail.js
...un/mes/unqualifiedMaterials/unqualifiedMaterialsDetail.js
+76
-0
unqualifiedMaterialsDetail.jsp
...n/mes/unqualifiedMaterials/unqualifiedMaterialsDetail.jsp
+61
-0
unqualifiedMaterialsList.js
...psun/mes/unqualifiedMaterials/unqualifiedMaterialsList.js
+91
-0
unqualifiedMaterialsList.jsp
...sun/mes/unqualifiedMaterials/unqualifiedMaterialsList.jsp
+28
-0
UnqualifiedMaterialsApplication.java
...aterials/application/UnqualifiedMaterialsApplication.java
+26
-0
UnqualifiedMaterialsApplicationImpl.java
...application/impl/UnqualifiedMaterialsApplicationImpl.java
+293
-0
UnqualifiedMaterialsController.java
...dMaterials/controller/UnqualifiedMaterialsController.java
+99
-0
UnqualifiedMaterials.java
...mes/unqualifiedMaterials/domain/UnqualifiedMaterials.java
+127
-0
UnqualifiedMaterialsItem.java
...unqualifiedMaterials/domain/UnqualifiedMaterialsItem.java
+30
-0
UnqualifiedMaterialsQueryRequest.java
...erials/domain/query/UnqualifiedMaterialsQueryRequest.java
+14
-0
UnqualifiedMaterialsFeedBack.java
...fiedMaterials/domain/vo/UnqualifiedMaterialsFeedBack.java
+45
-0
UnqualifiedMaterialsVo.java
...nqualifiedMaterials/domain/vo/UnqualifiedMaterialsVo.java
+103
-0
UnqualifiedMaterialsItemRepository.java
...erials/repository/UnqualifiedMaterialsItemRepository.java
+18
-0
UnqualifiedMaterialsRepository.java
...dMaterials/repository/UnqualifiedMaterialsRepository.java
+12
-0
MesResult.java
...n/java/com/huigou/topsun/sap/common/domain/MesResult.java
+17
-0
unqualifiedMaterialsProc.bpmn
...un/mes/unqualifiedMaterials/unqualifiedMaterialsProc.bpmn
+111
-0
unqualifiedMaterials.xml
.../topsun/mes/unqualifiedMaterials/unqualifiedMaterials.xml
+10
-0
No files found.
topsun-xt/src/main/resources/数据库变更记录
View file @
e441a8db
...
...
@@ -29,4 +29,8 @@ DROP COLUMN `measure_date`,
DROP COLUMN `review_comments`;
ALTER TABLE `topsun`.`mes_unqualified_materials`
ADD COLUMN `result` varchar(10) NULL COMMENT '评审结果' AFTER `msg`;
\ No newline at end of file
ADD COLUMN `result` varchar(10) NULL COMMENT '评审结果' AFTER `msg`;
ALTER TABLE `topsun_dev`.`mes_unqualified_materials_item`
ADD COLUMN `explain` varchar(255) NULL COMMENT '说明' AFTER `version`;
\ No newline at end of file
topsun-xt/src/main/webapp/biz/topsun/mes/unqualifiedMaterials/attachment.jsp
0 → 100644
View file @
e441a8db
<%@ page
contentType=
"text/html; charset=utf-8"
language=
"java"
%>
<%@ taglib
uri=
"/WEB-INF/taglib.tld"
prefix=
"x"
%>
<%@ taglib
uri=
"http://java.sun.com/jsp/jstl/core"
prefix=
"c"
%>
<x:base
include=
"dialog,combox,attachment"
/>
<div
class=
"container-fluid"
style=
"padding: 10px;"
>
<form
class=
"hg-form"
method=
"post"
action=
""
id=
"submitForm"
>
<x:hidden
name=
"bizId"
/>
<x:fileList
id=
"fileList"
bizCode=
"unqualifiedMaterials"
title=
"附件"
bizId=
"bizId"
/>
</form>
</div>
topsun-xt/src/main/webapp/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsDetail.js
0 → 100644
View file @
e441a8db
$
(
document
).
ready
(
function
()
{
initialize
();
bindEvent
();
});
function
initialize
(){
UICtrl
.
layout
(
"#layout"
,
{
leftWidth
:
3
});
$
(
'#fileList'
).
fileList
({
bizId
:
$
(
"#id"
).
val
()});
}
function
bindEvent
(){
// $("#result").combox({onChange:function(data){
// var handleOpinion = $("#handleOpinion").val();
// $("#handleOpinion").val(data.text + "-" + handleOpinion)
// }
// })
}
function
getExtendedData
(
processAction
)
{
var
handleResult
=
getHandleResult
();
//回退、打回、转交时,不需要验证必填项是否已经填写;
if
(
processAction
==
ProcessAction
.
BACK
||
processAction
==
ProcessAction
.
REPLENISH
||
processAction
==
ProcessAction
.
TRANSMIT
||
"2"
==
handleResult
)
{
//不验证
$
(
'#submitForm'
).
attr
(
'check'
,
false
);
}
return
true
;
}
function
checkConstraints
(){
var
handleOpinion
=
$
(
"#handleOpinion"
).
val
();
$
(
"#handleOpinion"
).
val
(
$
(
"#result_text"
).
val
()
+
"-"
+
handleOpinion
)
return
true
;
}
/**
* 流程引擎回调设置打样的id
* @param value
*/
function
setId
(
id
)
{
$
(
"#id"
).
val
(
id
);
}
/**
* 流程引擎获取打样申请id的回掉方法。
* @return
*/
function
getId
()
{
return
$
(
"#id"
).
val
()
||
""
;
}
//UICtrl中校验是否允许编辑
function
businessJudgmentUnit
()
{
var
isApply
=
isApplyProcUnit
();
let
approveProcUnit
=
isApproveProcUnit
();
if
(
isApply
)
{
UICtrl
.
setElHideOrShow
(
"#result"
,
true
)
return
true
;
}
else
{
UICtrl
.
setDisable
(
$
(
"#submitForm"
));
}
if
(
approveProcUnit
){
UICtrl
.
enable
(
$
(
"#result"
));
UICtrl
.
setElRequiredFlag
(
"#result"
,
true
);
}
return
true
;
}
function
print
(){
if
(
$
(
"#statusId"
).
val
()
!=
3
){
Public
.
tip
(
"请审批完成再打印!"
);
return
;
}
var
url
=
'/epChangeForm/print.load'
;
Public
.
openPostWindow
(
web_app
.
name
+
url
,{
id
:
$
(
"#id"
).
val
()});
}
topsun-xt/src/main/webapp/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsDetail.jsp
0 → 100644
View file @
e441a8db
<%@ page
language=
"java"
contentType=
"text/html; charset=utf-8"
%>
<%@taglib
uri=
"/WEB-INF/taglib.tld"
prefix=
"x"
%>
<%@ taglib
uri=
"http://java.sun.com/jsp/jstl/core"
prefix=
"c"
%>
<html>
<head>
<x:base
include=
"layout,dialog,grid,tree,dateTime,combox,attachment,commonTree,comboDialog"
/>
<x:script
src=
'/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsDetail.js'
/>
</head>
<body>
<div
class=
"container-fluid"
>
<x:billTitle
title=
"质量异常评审表"
needStatus=
"false"
needPerson=
"true"
/>
<form
class=
"hg-form"
method=
"post"
action=
""
id=
"submitForm"
>
<x:hidden
name=
"id"
/>
<x:hidden
name=
"billCode"
/>
<x:hidden
name=
"fillinDate"
type=
"datetime"
/>
<x:hidden
name=
"fullId"
/>
<x:hidden
name=
"organId"
/>
<x:hidden
name=
"organName"
/>
<x:hidden
name=
"deptId"
/>
<x:hidden
name=
"deptName"
/>
<x:hidden
name=
"positionId"
/>
<x:hidden
name=
"positionName"
/>
<x:hidden
name=
"personMemberId"
/>
<x:hidden
name=
"personMemberName"
/>
<x:hidden
name=
"statusId"
/>
<div
class=
"hg-form-cols"
>
<div
class=
"hg-form-row"
>
<x:inputC
name=
"mblnr"
required=
"false"
readonly=
"true"
label=
"物料凭证号"
labelCol=
"2"
fieldCol=
"2"
/>
<x:inputC
name=
"zeile"
required=
"false"
readonly=
"true"
label=
"凭证项次"
labelCol=
"2"
fieldCol=
"2"
/>
<x:inputC
name=
"mjahr"
required=
"false"
readonly=
"true"
label=
"凭证年份"
labelCol=
"2"
fieldCol=
"2"
/>
</div>
<div
class=
"hg-form-row"
>
<x:inputC
name=
"productName"
required=
"false"
readonly=
"true"
label=
"产品名称"
labelCol=
"2"
fieldCol=
"2"
/>
<x:inputC
name=
"type"
required=
"false"
readonly=
"true"
label=
"类别"
labelCol=
"2"
fieldCol=
"2"
/>
<x:inputC
name=
"batchNo"
required=
"false"
readonly=
"true"
label=
"生产批次"
labelCol=
"2"
fieldCol=
"2"
/>
</div>
<div
class=
"hg-form-row"
>
<x:inputC
name=
"pd"
required=
"false"
readonly=
"true"
label=
"PD/YL编码"
labelCol=
"2"
fieldCol=
"2"
/>
<x:inputC
name=
"process"
required=
"false"
readonly=
"true"
label=
"部门/工序"
labelCol=
"2"
maxLength=
"64"
fieldCol=
"2"
/>
<x:inputC
name=
"exceptionNum"
required=
"false"
readonly=
"true"
label=
"异常数量"
labelCol=
"2"
maxLength=
"64"
fieldCol=
"2"
/>
</div>
<div
class=
"hg-form-row"
>
<x:textareaC
name=
"exceptionDesc"
required=
"false"
label=
"异常描述"
labelCol=
"2"
fieldCol=
"10"
rows=
"3"
readonly=
"true"
/>
</div>
<div
class=
"hg-form-row"
>
<x:hidden
name=
"dutyDept"
/>
<x:inputC
name=
"dutyDeptName"
required=
"false"
readonly=
"true"
label=
"责任部门"
labelCol=
"2"
fieldCol=
"2"
/>
<x:hidden
name=
"submitter"
/>
<x:inputC
name=
"submitterName"
required=
"false"
readonly=
"true"
label=
"提报人"
labelCol=
"2"
fieldCol=
"2"
/>
</div>
<div
class=
"hg-form-row"
>
<x:selectC
name=
"result"
required=
"false"
label=
"评审结果"
labelCol=
"2"
fieldCol=
"2"
dictionary=
"result"
/>
</div>
</div>
<div
style=
"padding-top: 15px;"
>
<x:fileList
bizCode=
"unqualifiedMaterials"
bizId=
"id"
id=
"fileList"
title=
"相关资料"
/>
</div>
</form>
</div>
</body>
</html>
topsun-xt/src/main/webapp/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsList.js
0 → 100644
View file @
e441a8db
var
gridManager
=
null
;
$
(
document
).
ready
(
function
()
{
initUI
();
loadGrid
();
})
function
initUI
()
{
UICtrl
.
initDefaultLayout
();
}
function
loadGrid
()
{
var
toolbarOptions
=
UICtrl
.
getDefaultToolbarOptions
({
addHandler
:
addHandler
,
uploadFileHandler
:
{
id
:
'uploadFileHandler'
,
text
:
'上传附件'
,
img
:
'fa-clipboard'
,
click
:
function
(){
uploadFile
();
}
},
});
gridManager
=
UICtrl
.
grid
(
"#maingrid"
,
{
columns
:
[
{
display
:
"单据编号"
,
name
:
"billCode"
,
width
:
150
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"创建日期"
,
name
:
"fillinDate"
,
width
:
120
,
minWidth
:
60
,
type
:
"date"
,
align
:
"left"
},
{
display
:
"申请人"
,
name
:
"personMemberName"
,
width
:
120
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"申请部门"
,
name
:
"deptName"
,
width
:
120
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"产品代号"
,
name
:
"pd"
,
width
:
200
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"产品名称"
,
name
:
"productName"
,
width
:
200
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"审批状态"
,
name
:
"statusTextView"
,
width
:
100
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"状态码"
,
name
:
"code"
,
width
:
100
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
{
display
:
"消息"
,
name
:
"msg"
,
width
:
300
,
minWidth
:
60
,
type
:
"string"
,
align
:
"left"
},
],
dataAction
:
"server"
,
url
:
web_app
.
name
+
'/unqualifiedMaterials/slicedUnqualifiedMaterialsList.ajax'
,
pageSize
:
20
,
usePager
:
true
,
toolbar
:
toolbarOptions
,
width
:
"100%"
,
height
:
"100%"
,
heightDiff
:
-
8
,
checkbox
:
true
,
fixedCellHeight
:
true
,
selectRowButtonOnly
:
true
,
onDblClickRow
:
function
(
data
,
rowindex
,
rowobj
)
{
doView
(
data
.
id
);
},
});
UICtrl
.
setSearchAreaToggle
(
gridManager
);
}
function
query
(
obj
)
{
var
param
=
$
(
obj
).
formToJSON
();
UICtrl
.
gridSearch
(
gridManager
,
param
);
}
function
reloadGrid
()
{
gridManager
.
loadData
();
}
function
resetForm
(
obj
)
{
$
(
obj
).
formClean
();
}
function
addHandler
()
{
UICtrl
.
addTabItem
({
tabid
:
'unqualifiedMaterials'
,
text
:
"新增质量异常评审表"
,
url
:
web_app
.
name
+
'/unqualifiedMaterials/forwardUnqualifiedMaterialsDetail.job'
});
}
function
doView
(
id
)
{
UICtrl
.
addTabItem
({
tabid
:
'unqualifiedMaterials'
+
id
,
text
:
"查看质量异常评审表"
,
url
:
web_app
.
name
+
'/unqualifiedMaterials/showUnqualifiedMaterialsDetail.job?bizId='
+
id
+
"&isReadOnly=true"
});
}
function
uploadFile
(){
var
row
=
gridManager
.
getSelectedRow
();
UICtrl
.
showAjaxDialog
({
title
:
$
.
i18nProp
(
'相关附件'
),
width
:
600
,
url
:
web_app
.
name
+
'/unqualifiedMaterials/uploadFile.load?id='
+
row
.
id
,
init
:
function
(
div
)
{
$
(
'#fileList'
).
fileList
({
bizId
:
row
.
id
});
},
okVal
:
'common.button.ok'
,
ok
:
function
(
div
)
{
}
});
}
\ No newline at end of file
topsun-xt/src/main/webapp/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsList.jsp
0 → 100644
View file @
e441a8db
<%@ page
contentType=
"text/html; charset=utf-8"
language=
"java"
%>
<%@ taglib
uri=
"/WEB-INF/taglib.tld"
prefix=
"x"
%>
<%@ taglib
uri=
"http://java.sun.com/jsp/jstl/core"
prefix=
"c"
%>
<html>
<head>
<x:base
include=
"layout,dialog,grid,tree,combox,commonTree"
/>
<x:script
src=
'/biz/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsList.js'
/>
</head>
<body>
<div
class=
"container-fluid"
>
<div
class=
"ui-hide"
>
</div>
<div
id=
"layout"
>
<div
position=
"center"
title=
"质量异常评审表"
>
<x:title
title=
"common.button.search"
hideTable=
"queryMainForm"
isHide=
"true"
/>
<form
class=
"hg-form ui-hide"
method=
"post"
action=
""
id=
"queryMainForm"
>
<x:inputC
name=
"billCode"
required=
"false"
label=
"申请单号"
labelCol=
"1"
/>
<x:searchButtons/>
</form>
<div
class=
"blank_div clearfix"
></div>
<div
id=
"maingrid"
style=
"margin: 2px;"
></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/application/UnqualifiedMaterialsApplication.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
application
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterials
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.query.UnqualifiedMaterialsQueryRequest
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.vo.UnqualifiedMaterialsVo
;
import
java.util.Map
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:29
* @Description:
*/
public
interface
UnqualifiedMaterialsApplication
{
public
static
final
String
QUERY_XML_FILE_PATH
=
"config/topsun/mes/unqualifiedMaterials/unqualifiedMaterials.xml"
;
String
PROCESS_DEFINITION_KEY
=
"unqualifiedMaterialsProc"
;
UnqualifiedMaterials
findUnqualifiedMaterialsById
(
String
id
);
UnqualifiedMaterials
saveUnqualifiedMaterials
(
UnqualifiedMaterials
unqualifiedMaterials
);
Map
<
String
,
Object
>
slicedUnqualifiedMaterialsList
(
UnqualifiedMaterialsQueryRequest
queryRequest
);
void
saveMesUnqualifiedMaterialsVo
(
UnqualifiedMaterialsVo
unqualifiedMaterialsVo
);
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/application/impl/UnqualifiedMaterialsApplicationImpl.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
application
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.huigou.context.Operator
;
import
com.huigou.context.OrgUnit
;
import
com.huigou.context.ThreadLocalUtil
;
import
com.huigou.data.domain.model.CommonDomainConstants
;
import
com.huigou.data.query.model.QueryDescriptor
;
import
com.huigou.data.query.model.QueryModel
;
import
com.huigou.topsun.mes.unqualifiedMaterials.application.UnqualifiedMaterialsApplication
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterials
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterialsItem
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.query.UnqualifiedMaterialsQueryRequest
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.vo.UnqualifiedMaterialsFeedBack
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.vo.UnqualifiedMaterialsVo
;
import
com.huigou.topsun.mes.unqualifiedMaterials.repository.UnqualifiedMaterialsItemRepository
;
import
com.huigou.topsun.mes.unqualifiedMaterials.repository.UnqualifiedMaterialsRepository
;
import
com.huigou.topsun.sap.common.HttpClient
;
import
com.huigou.topsun.sap.common.application.SapMutualEpLogApplication
;
import
com.huigou.topsun.sap.common.domain.MesResult
;
import
com.huigou.uasp.bmp.common.BizBillStatus
;
import
com.huigou.uasp.bmp.operator.OperatorApplication
;
import
com.huigou.uasp.bmp.opm.domain.model.org.Org
;
import
com.huigou.uasp.bpm.FlowBroker
;
import
com.huigou.uasp.bpm.ProcessAction
;
import
com.huigou.uasp.bpm.ProcessStartModel
;
import
com.huigou.uasp.bpm.engine.application.WorkflowApplication
;
import
com.huigou.uasp.bpm.engine.domain.model.ProcUnitHandler
;
import
com.huigou.uasp.bpm.engine.domain.model.TaskExtension
;
import
com.huigou.util.*
;
import
org.activiti.engine.delegate.DelegateExecution
;
import
org.activiti.engine.delegate.DelegateTask
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.Assert
;
import
java.io.IOException
;
import
java.util.*
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:29
* @Description:
*/
@Service
(
"unqualifiedMaterialsApplication"
)
public
class
UnqualifiedMaterialsApplicationImpl
extends
FlowBroker
implements
UnqualifiedMaterialsApplication
{
@Autowired
private
UnqualifiedMaterialsRepository
unqualifiedMaterialsRepository
;
@Autowired
private
WorkflowApplication
workflowApplication
;
@Autowired
private
OperatorApplication
operatorApplication
;
@Autowired
private
HttpClient
httpClient
;
@Autowired
SapMutualEpLogApplication
sapMutualEpLogApplication
;
@Autowired
private
UnqualifiedMaterialsItemRepository
unqualifiedMaterialsItemRepository
;
@Override
protected
String
saveBizAndApprovalData
()
{
super
.
saveBizAndApprovalData
();
UnqualifiedMaterials
unqualifiedMaterials
=
getBizEntity
(
UnqualifiedMaterials
.
class
);
if
(
unqualifiedMaterials
.
isNew
())
{
unqualifiedMaterials
.
setStatusId
(
BizBillStatus
.
APPLYING
.
getId
());
}
else
{
unqualifiedMaterials
=
(
UnqualifiedMaterials
)
commonDomainService
.
loadAndFillinProperties
(
unqualifiedMaterials
);
}
unqualifiedMaterials
=
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
return
unqualifiedMaterials
.
getId
();
}
@Override
protected
Map
<
String
,
Object
>
getProcessBizParams
(
String
bizId
)
{
// 返回业务数据给流程实例,
return
ClassHelper
.
toMap
(
unqualifiedMaterialsRepository
.
getOne
(
bizId
));
}
/**
* 流程撤销事件
**/
@Override
protected
void
onRecallProcessInstance
(
DelegateExecution
delegateExecution
)
{
String
bizId
=
delegateExecution
.
getProcessBusinessKey
();
// 修改单据状态为申请
updateStatus
(
bizId
,
BizBillStatus
.
APPLYING
);
}
/**
* 任务完成前执行
*/
@Override
protected
void
onBeforeComplete
(
DelegateTask
delegateTask
)
{
super
.
onBeforeComplete
(
delegateTask
);
String
bizId
=
delegateTask
.
getExecution
().
getProcessBusinessKey
();
UnqualifiedMaterials
unqualifiedMaterials
=
this
.
unqualifiedMaterialsRepository
.
findOne
(
bizId
);
if
(
this
.
isApplyProcUnit
(
delegateTask
)
&&
this
.
getApprovalParameter
().
isAdvanceProcessAction
())
{
updateStatus
(
bizId
,
BizBillStatus
.
APPROVING
);
}
if
(
this
.
isApprovalProcUnit
(
delegateTask
)
&&
this
.
getApprovalParameter
().
isAdvanceProcessAction
()){
TaskExtension
te
=
actApplication
.
loadRuntimeTaskExtension
(
delegateTask
.
getId
());
cn
.
hutool
.
core
.
lang
.
Assert
.
notNull
(
te
,
String
.
format
(
"未查询到流程任务【%s】的扩展信息"
,
delegateTask
.
getId
()));
// 获取流程任务对应的审批环节信息
ProcUnitHandler
procUnitHandler
=
procUnitHandlerApplication
.
loadProcUnitHandler
(
te
.
getProcUnitHandlerId
());
String
subProcUnitName
=
procUnitHandler
.
getSubProcUnitName
();
//把本次节点的审批结果记录下来
UnqualifiedMaterialsItem
materialsItem
=
unqualifiedMaterialsItemRepository
.
findByUnqualifiedMaterialsIdAndDept
(
bizId
,
subProcUnitName
);
//如果之前审批过,填写了意见,打回或者回退后再次审批时,覆盖之前的意见
if
(
Objects
.
isNull
(
materialsItem
)){
UnqualifiedMaterialsItem
unqualifiedMaterialsItem
=
new
UnqualifiedMaterialsItem
();
unqualifiedMaterialsItem
.
setUnqualifiedMaterialsId
(
bizId
);
unqualifiedMaterialsItem
.
setDept
(
subProcUnitName
);
unqualifiedMaterialsItem
.
setResult
(
unqualifiedMaterials
.
getResult
());
unqualifiedMaterialsItem
.
setOpinion
(
procUnitHandler
.
getOpinion
());
unqualifiedMaterialsItemRepository
.
save
(
unqualifiedMaterialsItem
);
}
else
{
materialsItem
.
setOpinion
(
procUnitHandler
.
getOpinion
());
materialsItem
.
setResult
(
unqualifiedMaterials
.
getResult
());
unqualifiedMaterialsItemRepository
.
save
(
materialsItem
);
}
//清空,下次赋值
//unqualifiedMaterials.setResult(null);
this
.
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
}
}
/**
* 回收事件
**/
@Override
protected
void
onWithdraw
(
DelegateTask
delegateTask
,
String
destActivityId
)
{
super
.
onWithdraw
(
delegateTask
,
destActivityId
);
String
bizId
=
delegateTask
.
getExecution
().
getProcessBusinessKey
();
if
(
destActivityId
.
equalsIgnoreCase
(
"apply"
))
{
updateStatus
(
bizId
,
BizBillStatus
.
APPLYING
);
}
}
@Transactional
private
void
updateStatus
(
String
bizId
,
BizBillStatus
status
)
{
Assert
.
hasText
(
bizId
,
CommonDomainConstants
.
ID_NOT_BLANK
);
this
.
commonDomainService
.
updateStatus
(
UnqualifiedMaterials
.
class
,
bizId
,
status
.
getId
());
}
@Override
protected
void
onEnd
(
DelegateExecution
delegateExecution
)
{
super
.
onEnd
(
delegateExecution
);
String
bizId
=
delegateExecution
.
getProcessBusinessKey
();
BizBillStatus
status
=
approvePassed
()
?
BizBillStatus
.
COMPLETED
:
BizBillStatus
.
ABORTED
;
UnqualifiedMaterials
unqualifiedMaterials
=
unqualifiedMaterialsRepository
.
findOne
(
bizId
);
unqualifiedMaterials
.
setStatusId
(
status
.
getId
());
//发送审批结果到MES
this
.
feedBackSaleOrder
(
unqualifiedMaterials
);
}
public
void
feedBackSaleOrder
(
UnqualifiedMaterials
unqualifiedMaterials
){
//日志记录
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<>();
UnqualifiedMaterialsFeedBack
unqualifiedMaterialsFeedBack
=
new
UnqualifiedMaterialsFeedBack
();
ClassHelper
.
copyProperties
(
unqualifiedMaterials
,
unqualifiedMaterialsFeedBack
);
unqualifiedMaterialsFeedBack
.
setActionType
(
"checkIqcResult"
);
try
{
String
execute
=
httpClient
.
executeForEp
(
unqualifiedMaterialsFeedBack
,
"v1/iqc/bpmapi"
);
MesResult
mesResult
=
JSONObject
.
parseObject
(
execute
,
MesResult
.
class
);
resultMap
.
put
(
"TYPE"
,
mesResult
.
getCode
());
resultMap
.
put
(
"message"
,
mesResult
.
getMsg
());
if
(!
"200"
.
equals
(
mesResult
.
getCode
())){
throw
new
RuntimeException
(
"数据传输失败,"
+
mesResult
.
getMsg
());
}
unqualifiedMaterials
.
setCode
(
mesResult
.
getCode
());
unqualifiedMaterials
.
setMsg
(
mesResult
.
getMsg
());
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
finally
{
resultMap
.
put
(
"businessType"
,
"IQC"
);
resultMap
.
put
(
"businessId"
,
unqualifiedMaterials
.
getBillCode
());
resultMap
.
put
(
"parameter"
,
JSON
.
toJSONString
(
resultMap
));
resultMap
.
put
(
"sequence"
,
resultMap
.
get
(
"row"
));
sapMutualEpLogApplication
.
saveSapMutualEpLog
(
resultMap
);
}
}
@Override
protected
void
onAbortProcessInstance
(
DelegateExecution
delegateExecution
)
{
super
.
onAbortProcessInstance
(
delegateExecution
);
String
bizId
=
delegateExecution
.
getProcessBusinessKey
();
UnqualifiedMaterials
unqualifiedMaterials
=
unqualifiedMaterialsRepository
.
findOne
(
bizId
);
unqualifiedMaterials
.
setStatusId
(
BizBillStatus
.
ABORTED
.
getId
());
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
}
/**
* @param delegateTask
* @param destActivityId 回退到的目标节点id
*/
@Override
protected
void
onBack
(
DelegateTask
delegateTask
,
String
destActivityId
)
{
super
.
onBack
(
delegateTask
,
destActivityId
);
if
(
"Apply"
.
equalsIgnoreCase
(
destActivityId
))
{
String
bizId
=
delegateTask
.
getExecution
().
getProcessBusinessKey
();
UnqualifiedMaterials
unqualifiedMaterials
=
unqualifiedMaterialsRepository
.
findOne
(
bizId
);
unqualifiedMaterials
.
setStatusId
(
BizBillStatus
.
APPLYING
.
getId
());
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
}
}
/**
* 设置任务名称
*/
@Override
protected
void
setTaskDescription
(
DelegateTask
delegateTask
)
{
String
bizId
=
delegateTask
.
getExecution
().
getProcessBusinessKey
();
delegateTask
.
setDescription
(
this
.
getApprovalSubjectName
(
bizId
));
}
/**
* 获取任务标题
*
* @param bizId
* @return
*/
private
String
getApprovalSubjectName
(
String
bizId
)
{
UnqualifiedMaterials
unqualifiedMaterials
=
this
.
unqualifiedMaterialsRepository
.
findOne
(
bizId
);
//查询 单据日期
String
fillinDateStr
=
DateUtil
.
getDateFormat
(
"yyyy-MM-dd HH:mm:ss"
,
unqualifiedMaterials
.
getFillinDate
());
//设置标题
return
String
.
format
(
"%s-%s(%s)"
,
"质量异常评审表"
,
unqualifiedMaterials
.
getBillCode
(),
fillinDateStr
);
}
@Override
public
UnqualifiedMaterials
findUnqualifiedMaterialsById
(
String
id
)
{
return
unqualifiedMaterialsRepository
.
findOne
(
id
);
}
@Override
public
UnqualifiedMaterials
saveUnqualifiedMaterials
(
UnqualifiedMaterials
unqualifiedMaterials
)
{
return
unqualifiedMaterialsRepository
.
save
(
unqualifiedMaterials
);
}
@Override
public
Map
<
String
,
Object
>
slicedUnqualifiedMaterialsList
(
UnqualifiedMaterialsQueryRequest
queryRequest
)
{
QueryDescriptor
queryDescriptor
=
this
.
sqlExecutorDao
.
getQuery
(
QUERY_XML_FILE_PATH
,
"unqualifiedMaterials"
);
QueryModel
queryModel
=
this
.
sqlExecutorDao
.
getQueryModel
(
queryDescriptor
,
queryRequest
);
queryModel
.
putDictionary
(
"status"
,
BizBillStatus
.
getMap
());
Map
<
String
,
Object
>
map
=
this
.
sqlExecutorDao
.
executeSlicedQuery
(
queryModel
);
return
map
;
}
@Override
public
void
saveMesUnqualifiedMaterialsVo
(
UnqualifiedMaterialsVo
unqualifiedMaterialsVo
)
{
UnqualifiedMaterials
unqualifiedMaterials
=
new
UnqualifiedMaterials
();
BeanUtil
.
copyProperties
(
unqualifiedMaterialsVo
,
unqualifiedMaterials
);
//初始化用户信息
String
personCode
=
unqualifiedMaterialsVo
.
getSubmitter
();
QueryDescriptor
queryDescriptor
=
this
.
sqlExecutorDao
.
getQuery
(
"config/topsun/ep/epSaleOrder/epSaleOrder.xml"
,
"loadPersonMemberId"
);
String
personMemberId
=
this
.
sqlExecutorDao
.
queryToString
(
queryDescriptor
.
getSql
(),
personCode
);
if
(
StringUtil
.
isBlank
(
personMemberId
)){
throw
new
RuntimeException
(
"未找到编码为:"
+
personCode
+
" 的人员"
);
}
Operator
operator
=
operatorApplication
.
createOperatorByPersonMemberId
(
personMemberId
);
SDO
localSdo
=
new
SDO
();
localSdo
.
setOperator
(
operator
);
unqualifiedMaterials
.
setDefaultValues
(
new
OrgUnit
(
operator
.
getFullId
(),
operator
.
getFullName
()));
Map
<
String
,
Object
>
formData
=
BeanUtil
.
beanToMap
(
unqualifiedMaterials
);
this
.
startProcessInstance
(
UnqualifiedMaterialsApplication
.
PROCESS_DEFINITION_KEY
,
formData
,
localSdo
);
}
public
String
startProcessInstance
(
String
processDefinitionKey
,
Map
<
String
,
Object
>
formData
,
SDO
localSdo
){
Map
<
String
,
Object
>
variables
=
new
HashMap
();
// 将业务数据传递给工作流
formData
.
forEach
(
localSdo:
:
putProperty
);
// 将业务流程信息传递给工作流
localSdo
.
putProperty
(
"processAction"
,
ProcessAction
.
SAVE
);
localSdo
.
putProperty
(
"procUnitId"
,
"Apply"
);
ThreadLocalUtil
.
putVariable
(
Constants
.
SDO
,
localSdo
);
variables
.
put
(
"startModel"
,
ProcessStartModel
.
MANUAL
.
getId
());
Operator
operator
=
localSdo
.
getOperator
();
variables
.
put
(
"executorFullId"
,
operator
.
getFullId
());
variables
.
put
(
"executorFullName"
,
operator
.
getFullName
());
ThreadLocalUtil
.
putOperator
(
operator
);
ThreadLocalUtil
.
putVariable
(
"client.ip"
,
"127.0.0.1"
);
ProcessInstance
processInstance
=
this
.
workflowApplication
.
startProcessInstanceByKey
(
processDefinitionKey
,
variables
);
String
businessKey
=
processInstance
.
getBusinessKey
();
return
businessKey
;
}
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/controller/UnqualifiedMaterialsController.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
controller
;
import
com.huigou.context.Operator
;
import
com.huigou.context.OrgUnit
;
import
com.huigou.topsun.mes.unqualifiedMaterials.application.UnqualifiedMaterialsApplication
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterials
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.query.UnqualifiedMaterialsQueryRequest
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.vo.UnqualifiedMaterialsVo
;
import
com.huigou.uasp.annotation.ControllerMapping
;
import
com.huigou.uasp.annotation.SkipAuth
;
import
com.huigou.uasp.bmp.common.BizBillStatus
;
import
com.huigou.uasp.client.CommonController
;
import
com.huigou.util.JSONUtil
;
import
com.huigou.util.SDO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:30
* @Description:
*/
@Controller
@ControllerMapping
(
"/unqualifiedMaterials"
)
public
class
UnqualifiedMaterialsController
extends
CommonController
{
private
final
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
UnqualifiedMaterialsController
.
class
);
@Autowired
private
UnqualifiedMaterialsApplication
unqualifiedMaterialsApplication
;
@Override
protected
String
getPagePath
()
{
return
"/biz/topsun/mes/unqualifiedMaterials/"
;
}
public
String
forwardUnqualifiedMaterialsList
(){
return
forward
(
"unqualifiedMaterialsList"
);
}
@SkipAuth
@RequestMapping
(
value
=
"/getMesUnqualifiedMaterials"
)
@ResponseBody
public
HashMap
<
String
,
Object
>
getMesUnqualifiedMaterials
(
@RequestBody
UnqualifiedMaterialsVo
unqualifiedMaterialsVo
){
//SDO sdo = this.getSDO();
HashMap
<
String
,
Object
>
messageMap
=
new
HashMap
<>();
messageMap
.
put
(
"Message_Status"
,
"S"
);
messageMap
.
put
(
"Message_Text"
,
"成功"
);
LOG
.
info
(
"MES质量异常评审表审批数据=={}"
,
JSONUtil
.
toString
(
unqualifiedMaterialsVo
));
try
{
this
.
unqualifiedMaterialsApplication
.
saveMesUnqualifiedMaterialsVo
(
unqualifiedMaterialsVo
);
}
catch
(
RuntimeException
e
){
messageMap
.
put
(
"Message_Status"
,
"E"
);
messageMap
.
put
(
"Message_Text"
,
e
.
getMessage
());
}
return
messageMap
;
}
public
String
slicedUnqualifiedMaterialsList
(){
SDO
sdo
=
this
.
getSDO
();
UnqualifiedMaterialsQueryRequest
queryRequest
=
sdo
.
toQueryRequest
(
UnqualifiedMaterialsQueryRequest
.
class
);
Map
<
String
,
Object
>
map
=
unqualifiedMaterialsApplication
.
slicedUnqualifiedMaterialsList
(
queryRequest
);
return
toResult
(
map
);
}
public
String
forwardUnqualifiedMaterialsDetail
(){
this
.
putAttribute
(
"processDefinitionKey"
,
UnqualifiedMaterialsApplication
.
PROCESS_DEFINITION_KEY
);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this
.
putAttribute
(
"procUnitId"
,
"Apply"
);
UnqualifiedMaterials
unqualifiedMaterials
=
new
UnqualifiedMaterials
();
unqualifiedMaterials
.
setStatusId
(
BizBillStatus
.
APPLYING
.
getId
());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator
operator
=
getOperator
();
unqualifiedMaterials
.
setDefaultValues
(
new
OrgUnit
(
operator
.
getFullId
(),
operator
.
getFullName
()));
return
forward
(
"unqualifiedMaterialsDetail"
,
unqualifiedMaterials
);
}
public
String
showUnqualifiedMaterialsDetail
(){
SDO
sdo
=
this
.
getSDO
();
String
id
=
sdo
.
getBizId
();
UnqualifiedMaterials
unqualifiedMaterials
=
unqualifiedMaterialsApplication
.
findUnqualifiedMaterialsById
(
id
);
return
forward
(
"unqualifiedMaterialsDetail"
,
unqualifiedMaterials
);
}
public
String
uploadFile
(){
SDO
sdo
=
this
.
getSDO
();
String
id
=
sdo
.
getId
();
this
.
putAttribute
(
"bizId"
,
id
);
return
forward
(
"attachment"
);
}
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/domain/UnqualifiedMaterials.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
domain
;
import
com.huigou.data.domain.model.FlowBillAbstractEntity
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:25
* @Description: 质量异常评审表
*/
@Entity
@Data
@Table
(
name
=
"mes_unqualified_materials"
)
public
class
UnqualifiedMaterials
extends
FlowBillAbstractEntity
{
/**
* 物料凭证号
*/
@Column
(
name
=
"MBLNR"
)
private
String
mblnr
;
/**
* 凭证项次
*/
@Column
(
name
=
"ZEILE"
)
private
String
zeile
;
/**
* 凭证年份
*/
@Column
(
name
=
"MJAHR"
)
private
String
mjahr
;
/**
* 产品名称
*/
@Column
(
name
=
"product_name"
)
private
String
productName
;
/**
* 类别
*/
@Column
(
name
=
"type"
)
private
String
type
;
/**
* 生产批次
*/
@Column
(
name
=
"batch_no"
)
private
String
batchNo
;
/**
* PD/YL编码
*/
@Column
(
name
=
"pd"
)
private
String
pd
;
/**
* 部门/工序
*/
@Column
(
name
=
"process"
)
private
String
process
;
/**
* 异常数量
*/
@Column
(
name
=
"exception_num"
)
private
BigDecimal
exceptionNum
;
/**
* 异常描述
*/
@Column
(
name
=
"exception_desc"
)
private
String
exceptionDesc
;
/**
* 责任部门
*/
@Column
(
name
=
"duty_dept"
)
private
String
dutyDept
;
/**
* 责任部门
*/
@Column
(
name
=
"duty_dept_name"
)
private
String
dutyDeptName
;
/**
* 提报人
*/
@Column
(
name
=
"submitter"
)
private
String
submitter
;
/**
* 提报人
*/
@Column
(
name
=
"submitter_name"
)
private
String
submitterName
;
/**
* 处理结果
*/
@Column
(
name
=
"result"
)
private
String
result
;
/**
* MES返回状态码
*/
@Column
(
name
=
"code"
)
private
String
code
;
/**
* MES返回消息
*/
@Column
(
name
=
"msg"
)
private
String
msg
;
@Override
protected
String
getCodeRuleId
()
{
return
"unqualifiedMaterials"
;
}
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/domain/UnqualifiedMaterialsItem.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
domain
;
import
com.huigou.data.domain.model.AbstractEntity
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @Auther: xin.lu
* @Date: 2024/08/28/14:38
* @Description: 质量异常评审表明细
*/
@Entity
@Data
@Table
(
name
=
"mes_unqualified_materials_item"
)
public
class
UnqualifiedMaterialsItem
extends
AbstractEntity
{
@Column
(
name
=
"unqualified_materials_id"
)
private
String
unqualifiedMaterialsId
;
@Column
(
name
=
"dept"
)
private
String
dept
;
@Column
(
name
=
"result"
)
private
String
result
;
@Column
(
name
=
"opinion"
)
private
String
opinion
;
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/domain/query/UnqualifiedMaterialsQueryRequest.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
domain
.
query
;
import
com.huigou.data.domain.query.QueryAbstractRequest
;
import
lombok.Data
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:26
* @Description:
*/
@Data
public
class
UnqualifiedMaterialsQueryRequest
extends
QueryAbstractRequest
{
private
String
billCode
;
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/domain/vo/UnqualifiedMaterialsFeedBack.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Auther: xin.lu
* @Date: 2024/08/27/17:16
* @Description:
*/
@Data
public
class
UnqualifiedMaterialsFeedBack
implements
Serializable
{
/**
* 物料凭证号
*/
@JsonProperty
(
"MBLNR"
)
private
String
mblnr
;
/**
* 凭证项次
*/
@JsonProperty
(
"ZEILE"
)
private
String
zeile
;
/**
* 凭证年份
*/
@JsonProperty
(
"MJAHR"
)
private
String
mjahr
;
/**
* 固定值:checkIqcResult
*/
@JsonProperty
(
"actionType"
)
private
String
actionType
;
/**
* ng/pass/back/sort
*/
@JsonProperty
(
"result"
)
private
String
result
;
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/domain/vo/UnqualifiedMaterialsVo.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
domain
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.huigou.data.domain.model.FlowBillAbstractEntity
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:25
* @Description: 质量异常评审表
*/
@Data
public
class
UnqualifiedMaterialsVo
implements
Serializable
{
/**
* 物料凭证号
*/
@JsonProperty
(
"MBLNR"
)
private
String
mblnr
;
/**
* 凭证项次
*/
@JsonProperty
(
"ZEILE"
)
private
String
zeile
;
/**
* 凭证年份
*/
@JsonProperty
(
"MJAHR"
)
private
String
mjahr
;
/**
* 产品名称
*/
@JsonProperty
(
"productName"
)
private
String
productName
;
/**
* 类别
*/
@JsonProperty
(
"type"
)
private
String
type
;
/**
* 生产批次
*/
@JsonProperty
(
"batchNo"
)
private
String
batchNo
;
/**
* PD/YL编码
*/
@JsonProperty
(
"pd"
)
private
String
pd
;
/**
* 部门/工序
*/
@JsonProperty
(
"process"
)
private
String
process
;
/**
* 异常数量
*/
@JsonProperty
(
"exceptionNum"
)
private
BigDecimal
exceptionNum
;
/**
* 异常描述
*/
@JsonProperty
(
"exceptionDesc"
)
private
String
exceptionDesc
;
/**
* 责任部门
*/
@JsonProperty
(
"dutyDept"
)
private
String
dutyDept
;
/**
* 责任部门
*/
@JsonProperty
(
"dutyDeptName"
)
private
String
dutyDeptName
;
/**
* 提报人
*/
@JsonProperty
(
"submitter"
)
private
String
submitter
;
/**
* 提报人
*/
@JsonProperty
(
"submitterName"
)
private
String
submitterName
;
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/repository/UnqualifiedMaterialsItemRepository.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
repository
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterialsItem
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
/**
* @Auther: xin.lu
* @Date: 2024/08/28/14:41
* @Description:
*/
public
interface
UnqualifiedMaterialsItemRepository
extends
JpaRepository
<
UnqualifiedMaterialsItem
,
String
>
{
UnqualifiedMaterialsItem
findByUnqualifiedMaterialsIdAndDept
(
String
unqualifiedMaterialsId
,
String
dept
);
List
<
UnqualifiedMaterialsItem
>
findByUnqualifiedMaterialsId
(
String
unqualifiedMaterialsId
);
}
topsun/src/main/java/com/huigou/topsun/mes/unqualifiedMaterials/repository/UnqualifiedMaterialsRepository.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
mes
.
unqualifiedMaterials
.
repository
;
import
com.huigou.topsun.mes.unqualifiedMaterials.domain.UnqualifiedMaterials
;
import
org.springframework.data.jpa.repository.JpaRepository
;
/**
* @Auther: xin.lu
* @Date: 2024/08/12/10:29
* @Description:
*/
public
interface
UnqualifiedMaterialsRepository
extends
JpaRepository
<
UnqualifiedMaterials
,
String
>
{
}
topsun/src/main/java/com/huigou/topsun/sap/common/domain/MesResult.java
0 → 100644
View file @
e441a8db
package
com
.
huigou
.
topsun
.
sap
.
common
.
domain
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @Auther: xin.lu
* @Date: 2024/03/16/10:06
* @Description:
*/
@Data
public
class
MesResult
implements
Serializable
{
private
String
code
;
private
String
msg
;
private
EpResultValue
data
;
}
topsun/src/main/resources/config/bpm/topsun/mes/unqualifiedMaterials/unqualifiedMaterialsProc.bpmn
0 → 100644
View file @
e441a8db
<?xml version="1.0" encoding="UTF-8"?>
<definitions
xmlns=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti=
"http://activiti.org/bpmn"
xmlns:bpmndi=
"http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc=
"http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi=
"http://www.omg.org/spec/DD/20100524/DI"
xmlns:xsd=
"http://www.w3.org/2001/XMLSchema"
typeLanguage=
"http://www.w3.org/2001/XMLSchema"
expressionLanguage=
"http://www.w3.org/1999/XPath"
targetNamespace=
"http://www.activiti.org/test"
>
<process
id=
"unqualifiedMaterialsProc"
name=
"质量异常评审表"
isExecutable=
"true"
>
<extensionElements>
<activiti:executionListener
event=
"start"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:executionListener>
<activiti:executionListener
event=
"end"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:executionListener>
</extensionElements>
<startEvent
id=
"startevent1"
name=
"Start"
></startEvent>
<endEvent
id=
"endevent1"
name=
"End"
></endEvent>
<userTask
id=
"Apply"
name=
"质量异常评审表"
activiti:formKey=
"unqualifiedMaterials/showUnqualifiedMaterialsDetail.job"
>
<extensionElements>
<activiti:taskListener
event=
"all"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:taskListener>
<activiti:taskListener
event=
"saveBizData"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:taskListener>
</extensionElements>
</userTask>
<userTask
id=
"Approve"
name=
"质量异常评审表审批"
activiti:assignee=
"${assignee} "
activiti:formKey=
"unqualifiedMaterials/showUnqualifiedMaterialsDetail.job"
>
<extensionElements>
<activiti:taskListener
event=
"all"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:taskListener>
<activiti:taskListener
event=
"saveBizData"
delegateExpression=
"#{unqualifiedMaterialsApplication}"
></activiti:taskListener>
</extensionElements>
<multiInstanceLoopCharacteristics
isSequential=
"false"
activiti:collection=
"handlerList"
activiti:elementVariable=
"assignee"
>
<completionCondition>
${chiefApprovePassed}
</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<sequenceFlow
id=
"flow1"
sourceRef=
"startevent1"
targetRef=
"Apply"
></sequenceFlow>
<sequenceFlow
id=
"flow2"
sourceRef=
"Apply"
targetRef=
"Approve"
></sequenceFlow>
<exclusiveGateway
id=
"ApproveFinished"
name=
"审批结束"
></exclusiveGateway>
<sequenceFlow
id=
"flow3"
name=
"审批通过"
sourceRef=
"ApprovePassed"
targetRef=
"ApproveFinished"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${approvePassed}]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow
id=
"flow4"
name=
"审批结束"
sourceRef=
"ApproveFinished"
targetRef=
"endevent1"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${approveFinished}]]>
</conditionExpression>
</sequenceFlow>
<sequenceFlow
id=
"flow5"
name=
"审批未结束"
sourceRef=
"ApproveFinished"
targetRef=
"Approve"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${!approveFinished}]]>
</conditionExpression>
</sequenceFlow>
<exclusiveGateway
id=
"ApprovePassed"
name=
"审批通过"
></exclusiveGateway>
<sequenceFlow
id=
"flow6"
sourceRef=
"Approve"
targetRef=
"ApprovePassed"
></sequenceFlow>
<sequenceFlow
id=
"flow9"
name=
"审批未通过"
sourceRef=
"ApprovePassed"
targetRef=
"Apply"
>
<conditionExpression
xsi:type=
"tFormalExpression"
>
<![CDATA[${!approvePassed}]]>
</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram
id=
"BPMNDiagram_unqualifiedMaterialsProc"
>
<bpmndi:BPMNPlane
bpmnElement=
"unqualifiedMaterialsProc"
id=
"BPMNPlane_unqualifiedMaterialsProc"
>
<bpmndi:BPMNShape
bpmnElement=
"startevent1"
id=
"BPMNShape_startevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"355.0"
y=
"50.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"endevent1"
id=
"BPMNShape_endevent1"
>
<omgdc:Bounds
height=
"35.0"
width=
"35.0"
x=
"355.0"
y=
"550.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"Apply"
id=
"BPMNShape_Apply"
>
<omgdc:Bounds
height=
"55.0"
width=
"161.0"
x=
"292.0"
y=
"140.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"Approve"
id=
"BPMNShape_Approve"
>
<omgdc:Bounds
height=
"55.0"
width=
"161.0"
x=
"292.0"
y=
"240.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"ApproveFinished"
id=
"BPMNShape_ApproveFinished"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"352.0"
y=
"440.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape
bpmnElement=
"ApprovePassed"
id=
"BPMNShape_ApprovePassed"
>
<omgdc:Bounds
height=
"40.0"
width=
"40.0"
x=
"352.0"
y=
"349.0"
></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge
bpmnElement=
"flow1"
id=
"BPMNEdge_flow1"
>
<omgdi:waypoint
x=
"372.0"
y=
"85.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"372.0"
y=
"140.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow2"
id=
"BPMNEdge_flow2"
>
<omgdi:waypoint
x=
"372.0"
y=
"195.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"372.0"
y=
"240.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow3"
id=
"BPMNEdge_flow3"
>
<omgdi:waypoint
x=
"372.0"
y=
"389.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"372.0"
y=
"440.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"48.0"
x=
"320.0"
y=
"396.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow4"
id=
"BPMNEdge_flow4"
>
<omgdi:waypoint
x=
"372.0"
y=
"480.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"372.0"
y=
"550.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"48.0"
x=
"382.0"
y=
"489.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow5"
id=
"BPMNEdge_flow5"
>
<omgdi:waypoint
x=
"392.0"
y=
"460.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"519.0"
y=
"459.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"519.0"
y=
"317.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"519.0"
y=
"267.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"489.0"
y=
"267.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"453.0"
y=
"267.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"60.0"
x=
"459.0"
y=
"411.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow6"
id=
"BPMNEdge_flow6"
>
<omgdi:waypoint
x=
"372.0"
y=
"295.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"372.0"
y=
"349.0"
></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge
bpmnElement=
"flow9"
id=
"BPMNEdge_flow9"
>
<omgdi:waypoint
x=
"352.0"
y=
"369.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"231.0"
y=
"369.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"231.0"
y=
"167.0"
></omgdi:waypoint>
<omgdi:waypoint
x=
"292.0"
y=
"167.0"
></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds
height=
"14.0"
width=
"60.0"
x=
"257.0"
y=
"376.0"
></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
topsun/src/main/resources/config/topsun/mes/unqualifiedMaterials/unqualifiedMaterials.xml
0 → 100644
View file @
e441a8db
<?xml version="1.0" encoding="UTF-8" ?>
<query-mappings>
<query
name=
"unqualifiedMaterials"
label=
"质量异常评审表"
table=
"mes_unqualified_materials"
>
<sql-query>
select t.* from mes_unqualified_materials t
</sql-query>
<condition
column=
"bill_code"
name=
"billCode"
type=
"java.lang.String"
symbol=
"like"
alias=
"t"
/>
<condition
column=
"id"
name=
"id"
type=
"java.lang.String"
symbol=
"="
alias=
"t"
/>
</query>
</query-mappings>
\ No newline at end of file
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