Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

# Conflicts:
#	jero-web/src/common/lang/en-us.js
This commit is contained in:
刘彦泽
2023-03-21 11:02:35 +08:00
11 changed files with 225 additions and 51 deletions
@@ -13,7 +13,12 @@ public enum ReviewResultEnum {
INCONFORMITY("不符合","Non-Compliance"),
TO_TRACK("待追踪","To be tracked"),
UNINVOLVED("不涉及","NA"),
TERMINATION_OF_TASK("任务终止","Termination of task")
TERMINATION_OF_TASK("任务终止","Termination of task"),
ACCEPTED("接受","Accepted"),
REJECTED("拒绝","Rejected"),
TRANSFER("转办","Transfer"),
RETURNED("退回","Returned"),
ADOPT("通过","Adopt"),
;
@@ -7,12 +7,12 @@ import org.apache.commons.lang3.StringUtils;
* 待办中心-设计符合性流程节点key枚举类
*/
public enum DesignComplianceFlowNodeKeyEnum {
fqlc("发起流程","Initiate the process","fqlc"),
zrrqr("任务责任确认","Confirmation of mission responsibility","zrrqr"), // 责任人确认
dezrrqr("任务责任确认","Confirmation of mission responsibility","dezrrqr"),// 第二责任人确认
zrrtjjfw("设计符合性确认","Design compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
dezrrtjjfw("设计符合性确认","Design compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
fggcssh("设计符合性审查","Design compliance review","fggcssh"), // 法规工程师审核
FQLC("发起流程","Initiate the process","fqlc"),
ZRRQR("任务责任确认","Confirmation of mission responsibility","zrrqr"), // 责任人确认
DEZRRQR("任务责任确认","Confirmation of mission responsibility","dezrrqr"),// 第二责任人确认
ZRRTJJFW("设计符合性确认","Design compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
DEZRRTJJFW("设计符合性确认","Design compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
FGGCSSH("设计符合性审查","Design compliance review","fggcssh"), // 法规工程师审核
;
String cnName;
@@ -51,12 +51,12 @@ public enum DesignComplianceFlowNodeKeyEnum {
public static String getTextByValue(String value,String cut) {
DesignComplianceFlowNodeKeyEnum[] values = values();
for (DesignComplianceFlowNodeKeyEnum todoCenterStatusEnum : values) {
if (todoCenterStatusEnum.value.equals(value)) {
for (DesignComplianceFlowNodeKeyEnum designComplianceFlowNodeKeyEnum : values) {
if (designComplianceFlowNodeKeyEnum.value.equals(value)) {
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
return todoCenterStatusEnum.cnName;
return designComplianceFlowNodeKeyEnum.cnName;
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
return todoCenterStatusEnum.enName;
return designComplianceFlowNodeKeyEnum.enName;
}
}
}
@@ -7,12 +7,12 @@ import org.apache.commons.lang3.StringUtils;
* 待办中心-验证符合性流程节点key枚举类
*/
public enum VerifyComplianceFlowNodeKeyEnum {
fqlc("发起流程","Initiate the process","fqlc"),
zrrqr("任务责任确认","Confirmation of mission responsibility","zrrqr"), // 责任人确认
dezrrqr("任务责任确认","Confirmation of mission responsibility","dezrrqr"),// 第二责任人确认
zrrtjjfw("验证符合性确认","Verify compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
dezrrtjjfw("验证符合性确认","Verify compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
fggcssh("验证符合性审查","Verify compliance review","fggcssh"), // 法规工程师审核
FQLC("发起流程","Initiate the process","fqlc"),
ZRRQR("任务责任确认","Confirmation of mission responsibility","zrrqr"), // 责任人确认
DEZRRQR("任务责任确认","Confirmation of mission responsibility","dezrrqr"),// 第二责任人确认
ZRRTJJFW("验证符合性确认","Verify compliance confirmation","zrrtjjfw"),// "责任人提交交付物"
DEZRRTJJFW("验证符合性确认","Verify compliance confirmation","dezrrtjjfw"),// 第二责任人提交交付物
FGGCSSH("验证符合性审查","Verify compliance review","fggcssh"), // 法规工程师审核
;
String cnName;
@@ -51,12 +51,12 @@ public enum VerifyComplianceFlowNodeKeyEnum {
public static String getTextByValue(String value,String cut) {
VerifyComplianceFlowNodeKeyEnum[] values = values();
for (VerifyComplianceFlowNodeKeyEnum todoCenterStatusEnum : values) {
if (todoCenterStatusEnum.value.equals(value)) {
for (VerifyComplianceFlowNodeKeyEnum verifyComplianceFlowNodeKeyEnum : values) {
if (verifyComplianceFlowNodeKeyEnum.value.equals(value)) {
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
return todoCenterStatusEnum.cnName;
return verifyComplianceFlowNodeKeyEnum.cnName;
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
return todoCenterStatusEnum.enName;
return verifyComplianceFlowNodeKeyEnum.enName;
}
}
}
@@ -5,13 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.RequestSourceEnum;
import com.jero.modules.project.enums.ReviewResultEnum;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.todoCenter.entity.ProcessInfoEO;
import com.jero.modules.todoCenter.enums.DesignComplianceFlowNodeKeyEnum;
import com.jero.modules.todoCenter.enums.VerifyComplianceFlowNodeKeyEnum;
import com.jero.modules.todoCenter.service.IProcessInfoEOService;
import com.jero.modules.wkflow.entity.ProcessHistoryEO;
import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum;
import com.jero.modules.wkflow.enums.FlowTypeEnum;
import com.jero.modules.wkflow.mapper.ProcessHistoryEOMapper;
import com.jero.modules.wkflow.service.IProcessHistoryEOService;
import org.apache.commons.collections4.CollectionUtils;
@@ -38,6 +45,10 @@ public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMap
@Autowired
private ISysUserService sysUserService;
@Autowired
private IProcessInfoEOService processInfoEOService;
@Autowired
private IOSSFileService ossFileService;
/**
* 保存
@@ -141,6 +152,14 @@ public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMap
sysUserList = sysUserService.querySysUserListByIdList(userIdList);
}
List<String> actiProcInstIdList = datas.stream().map(ProcessHistoryEO::getActiProcInstId).distinct().collect(Collectors.toList());
QueryWrapper<ProcessInfoEO> processInfoEOQueryWrap = new QueryWrapper<>();
processInfoEOQueryWrap.lambda().in(ProcessInfoEO::getActiProcInstId,actiProcInstIdList);
List<ProcessInfoEO> processInfoList = this.processInfoEOService.list(processInfoEOQueryWrap);
String approvalFiles = datas.stream().map(ProcessHistoryEO::getApprovalFile).distinct().collect(Collectors.joining(","));
List<OSSFile> approvalFileList = this.ossFileService.getFileInfos(approvalFiles);
for (ProcessHistoryEO data : datas) {
if(StringUtils.isNotEmpty(data.getOperatorResult())){
data.setReviewResult(ReviewResultEnum.getTextByValue(data.getOperatorResult(),cut));
@@ -149,9 +168,40 @@ public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMap
SysUser userInfo = sysUserList.stream().filter(sysUser -> sysUser.getId().equals(data.getOperatorPersonId())).collect(Collectors.toList()).get(0);
data.setAssignee(userInfo.getUsername());
}
if(StringUtils.isNotEmpty(data.getTaskDefinitionKey())){
List<ProcessInfoEO> processInfoListTemp = processInfoList.stream().filter(processInfo -> {
boolean flag = false;
if (StringUtils.equals(processInfo.getActiProcInstId(), data.getActiProcInstId())) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(processInfoListTemp)){
String flowType = processInfoListTemp.get(0).getFlowType();
if(StringUtils.equals(flowType, FlowTypeEnum.SJFHXSHLC.getValue())){
data.setName(DesignComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}else if(StringUtils.equals(flowType, FlowTypeEnum.YZFHXSCLC.getValue())){
data.setName(VerifyComplianceFlowNodeKeyEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}else if(StringUtils.isNotEmpty(data.getTaskDefinitionKey())){
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}
}else if(StringUtils.isNotEmpty(data.getTaskDefinitionKey())){
data.setName(DesignComplianceNodeEnum.getTextByValue(data.getTaskDefinitionKey(),cut));
}
if(StringUtils.isNotEmpty(data.getApprovalFile())){
if(CollectionUtils.isNotEmpty(approvalFileList)){
String approvalFileNames = approvalFileList.stream().filter(file -> {
boolean flag = false;
if (StringUtils.contains(data.getApprovalFile(), file.getId())) {
flag = true;
}
return flag;
}).map(OSSFile::getFileName).collect(Collectors.joining(","));
data.setApprovalFileName(approvalFileNames);
}
}
}
}
}
+3
View File
@@ -1679,4 +1679,7 @@ module.exports = {
pleaseStateTheDistribution:'Please describe the integration and distribution of the management system and electronic controller',
next:'Next',
last:'Last',
designComplianceReviewAdmin:'Design Compliance Review',
missionAccomplished:'Mission Accomplished',
}
+2
View File
@@ -1779,4 +1779,6 @@ module.exports = {
last:'上一步',
recordmaintenance:'备案维护',
module:'模块',
designComplianceReviewAdmin:'设计符合性审查',
missionAccomplished:'任务完成',
}
@@ -5,6 +5,28 @@
{{title}}
</div>
</div>
<div class="process-content">
<div class="process-content-top">
<div class="process-content-content" v-for="(item,index) in regulatoryCertificationTaskPlanList" :key="index">
<img v-if="item.status == 1" src="../../../../assets/wancheng.png" class="process-content-left" alt="">
<span v-else-if="item.status == 2" class="process-content-left">
<span class="process-content-left-yuan">
4
</span>
</span>
<span v-else-if="item.status == 3" class="process-content-left">
<span class="process-content-left-last">
5
</span>
</span>
<div class="process-content-right">
<div class="process-content-right-top" :title="item.name">{{item.name}}</div>
</div>
</div>
</div>
<div class="process-content-right-xian"></div>
</div>
<div style="width: 100%">
<a-table
ref="table"
@@ -38,19 +60,10 @@
export default {
name: 'circulationHistory',
components:{
components: {
viewFileModel
},
props: {
// 需要参数urlFrom,获取数据去显示内容
url: {
type: Object,
default: {}
},
projectInformationId: {
type: String,
default: ''
},
queryProject: {
type: Object,
default: {}
@@ -64,24 +77,49 @@
return {
loading: false,
dataSource: [],
regulatoryCertificationTaskPlanList: [
{
status: '1',
name: this.$t('initiatingProcess')
},
{
status: '1',
name: this.$t('Taskresponsibilityrecognition')
},
{
status: '1',
name: this.$t('designComplianceReview')
},
{
status: '2',
name: this.$t('designComplianceReviewAdmin')
},
{
status: '3',
name: this.$t('missionAccomplished')
}
],
columns: [
{
title: this.$t('Operator'),
dataIndex: 'assignee',
align: 'left',
width: 200
width: 200,
ellipsis: true
},
{
title: this.$t('Tasknode'),
dataIndex: 'name',
align: 'left',
width: 180
width: 180,
ellipsis: true
},
{
title: this.$t('OperationTime'),
dataIndex: 'createTime',
align: 'left',
width: 200,
ellipsis: true,
customRender: function(t, r, index) {
return moment(t).format('YYYY-MM-DD HH:mm:ss')
}
@@ -91,19 +129,22 @@
dataIndex: 'approvalResult',
align: 'left',
width: 200,
ellipsis: true,
scopedSlots: { customRender: 'approvalResult' }
},
{
title: this.$t('feedback'),
dataIndex: 'approvalOpinion',
align: 'left',
width: 200
width: 200,
ellipsis: true
},
{
title: this.$t('enclosure'),
dataIndex: 'approvalFile',
align: 'left',
width: 100,
ellipsis: true,
scopedSlots: { customRender: 'approvalFile' }
}
]
@@ -115,11 +156,17 @@
methods: {
getList() {
let query = {
prcNum: this.$route.query.prcNum,
prcType: this.$route.query.prcType
actiProcInstId: this.queryProject.actiProcInstId || this.queryProject.prcId
}
getAction('/workFlow/get_list_by_instance', query).then((res) => {
this.dataSource = res
this.loading = true
getAction('/wkflow/processHistoryEO/list', query).then((res) => {
if (res.success) {
this.dataSource = res.result || []
this.loading = false
} else {
this.dataSource = []
this.loading = false
}
})
},
viewFileClick(item) {
@@ -131,7 +178,7 @@
<style scoped lang="less">
.box {
padding: 0 24px 24px 24px;
padding: 0 0 24px 0;
box-sizing: border-box;
}
@@ -152,4 +199,71 @@
color: #00B3BE;
cursor: pointer;
}
.process-content {
margin-top: 8px;
position: relative;
margin-bottom: 26px;
.process-content-top{
display: flex;
justify-content: space-between;
}
.process-content-content {
background: #fff;
z-index: 1000;
padding: 0;
.process-content-left {
float: left;
display: inline-block;
.process-content-left-yuan {
width: 32px;
height: 32px;
border-radius: 50%;
background: #00B3BE;
color: #fff;
display: inline-block;
font-size: 14px;
line-height: 32px;
text-align: center;
}
.process-content-left-last{
width: 32px;
height: 32px;
border-radius: 50%;
border: 1px solid #E6E7EC;
color: #040B29;
display: inline-block;
font-size: 14px;
line-height: 32px;
text-align: center;
}
}
.process-content-right {
float: left;
margin-left: 7px;
margin-top: 7px;
.process-content-right-top {
font-size: 14px;
font-weight: lighter;
color: #040B29;
max-width: 155px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
}
}
.process-content-right-xian {
height: 2px;
width: calc(100% - 27px);
background: #E6E6E9;
position: absolute;
top: 16px;
}
}
</style>
@@ -3,7 +3,7 @@
<a-drawer
:title="title"
:maskClosable="false"
:width="1000"
:width="1100"
placement="right"
:closable="true"
@close="handleCancel"
@@ -29,6 +29,7 @@
<div style="margin-bottom: 436px">
<circulationHistory
:title="$t('Processhistory')"
:queryProject="queryData"
/>
</div>
@@ -267,7 +268,7 @@
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index: 100;
z-index: 1002;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
@@ -280,11 +281,10 @@
.drawer-review {
position: absolute;
bottom: 40px;
z-index: 100;
height: 384px;
z-index: 1001;
height: 404px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
@@ -100,7 +100,7 @@
<style scoped lang="less">
.box {
padding: 0 24px 24px 24px;
padding: 0 0 24px 0;
box-sizing: border-box;
}
@@ -27,7 +27,7 @@
<a-radio value="Rejected" v-if="query.TaskKey == 'zrrqr'">
{{$t('refuse')}}
</a-radio>
<a-radio value="adopt" v-if="query.TaskKey == 'fggcssh'">
<a-radio value="Adopt" v-if="query.TaskKey == 'fggcssh'">
{{$t('adopt')}}
</a-radio>
<a-radio value="Returned" v-if="query.TaskKey == 'dezrrqr' || query.TaskKey == 'dezrrtjjfw' ||
@@ -245,7 +245,7 @@
<style scoped lang="less">
.box {
padding: 0 24px 24px 24px;
padding: 24px 24px 24px 24px;
box-sizing: border-box;
}
@@ -269,7 +269,7 @@
}
.title-text {
width: 88px;
/*width: 88px;*/
text-align: left;
display: inline-block;
font-weight: 500;
@@ -284,7 +284,7 @@
}
.title-text-fq {
width: 130px;
/*width: 130px;*/
text-align: left;
display: inline-block;
font-weight: 500;
@@ -106,7 +106,7 @@
<style scoped lang="less">
.box {
padding: 0 24px 24px 24px;
padding: 0 0 24px 0;
box-sizing: border-box;
}