Merge remote-tracking branch 'origin/master'

This commit is contained in:
liyawei
2022-05-13 13:48:40 +08:00
11 changed files with 193 additions and 63 deletions
@@ -3,6 +3,7 @@
<mapper namespace="com.jero.modules.project.mapper.NcrTrackMapper">
<resultMap id="NcrTrackVOResultMap" type="com.jero.modules.project.vo.NcrTrackVO">
<id column="id" property="id" />
<id column="project_library_id" property="projectLibraryId" />
<id column="serial_number" property="serialNumber" />
<result column="title" property="title" />
<result column="duty_territory" property="dutyTerritory" />
@@ -27,8 +28,8 @@
<select id="getInfoList" resultMap="NcrTrackVOResultMap">
SELECT
pni.project_name,plb.target_market,
pli.id,pli.serial_number,pli.title,pli.duty_territory,pli.create_time,
pti.design_flow_task_status,pti.prehomo_flow_task_status,pti.verify_flow_task_status,pti.design_p_id,pti.prehomo_p_id,pti.verify_p_id,
pli.serial_number,pli.title,pli.duty_territory,pli.create_time,pli.project_library_id,
pti.design_flow_task_status,pti.prehomo_flow_task_status,pti.verify_flow_task_status,pti.design_p_id,pti.prehomo_p_id,pti.verify_p_id,pti.id,pti.project_laws_inventory_id,
pli.design_initiator_id,pli.design_duty_id,pli.prehomo_initiator_id,pli.prehomo_duty_id,pli.verify_initiator_id,pli.verify_duty_id
FROM project_task_inventory pti
@@ -1,9 +1,12 @@
package com.jero.modules.project.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO;
import com.jero.modules.project.enums.ReviewResultEnum;
import com.jero.modules.project.mapper.NcrTrackMapper;
import com.jero.modules.project.service.INcrTrackService;
@@ -11,6 +14,7 @@ import com.jero.modules.project.vo.NcrTrackInfoVO;
import com.jero.modules.project.vo.NcrTrackVO;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.wkflow.enums.FlowTypeEnum;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
@@ -45,8 +49,8 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
private NcrTrackMapper ncrTrackMapper;
@Autowired
private ISysUserService sysUserService;
@Value(value = "${jero.path.upload}")
private String uploadpath;
@Autowired
private ProjectTaskInventoryDetailEOServiceImpl projectTaskInventoryDetailEOService;
@Override
public List<NcrTrackVO> getPageInfo(NcrTrackVO ncrTrackVO) {
@@ -76,11 +80,11 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
for (NcrTrackVO trackVO : infoList) {
//设计符合性确认
String designPId = trackVO.getDesignPId();
String designPId = trackVO.getDesignPId();//流程实例id
//PreHomo确认
String prehomoPId = trackVO.getPrehomoPId();
String prehomoPId = trackVO.getPrehomoPId();//流程实例id
//验证符合性确认
String verifyPId = trackVO.getVerifyPId();
String verifyPId = trackVO.getVerifyPId();//流程实例id
//设计问题类型
String designFlowTaskStatus = trackVO.getDesignFlowTaskStatus();
@@ -116,7 +120,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
designName,
sysUserList,
trackVO.getId(),
trackVO.getCreateTime());
trackVO.getCreateTime(),
trackVO.getProjectLibraryId(),
trackVO.getProjectLawsInventoryId(),
FlowTypeEnum.SJFHXSHLC.getValue());
trackVOList.add(ncrTrackVOTemp);
}
//PreHomo确认
@@ -132,7 +139,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
prehomoName,
sysUserList,
trackVO.getId(),
trackVO.getCreateTime());
trackVO.getCreateTime(),
trackVO.getProjectLibraryId(),
trackVO.getProjectLawsInventoryId(),
FlowTypeEnum.PREHOMOQRLC.getValue());
trackVOList.add(ncrTrackVOTemp);
}
//验证符合性确认
@@ -148,7 +158,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
verifyName,
sysUserList,
trackVO.getId(),
trackVO.getCreateTime());
trackVO.getCreateTime(),
trackVO.getProjectLibraryId(),
trackVO.getProjectLawsInventoryId(),
FlowTypeEnum.YZFHXSCLC.getValue());
trackVOList.add(ncrTrackVOTemp);
}
}
@@ -160,20 +173,43 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
if(StringUtils.isNotBlank(ncrTrackVO.getProblemType())){
trackVOList = trackVOList.stream().filter(e->ncrTrackVO.getProblemType().equals(e.getProblemType())).collect(Collectors.toList());
}
List<NcrTrackVO> trackVOListTemp = new ArrayList<>();
List<NcrTrackVO> ncrTrackVOList = ncrTrackVO.getNcrTrackVOList();
//导出数据过滤(列表中选取多条进行导出的时候,用id和流程类型作为条件进行数据过滤)
if(ObjectUtils.allNotNull(ncrTrackVOList)){
for (NcrTrackVO trackVO : ncrTrackVOList) {
List<NcrTrackVO> collect = trackVOList.stream()
.filter(e -> trackVO.getId().equals(e.getId()) && trackVO.getFlowType().equals(e.getFlowType()))
.collect(Collectors.toList());
if(collect.size() != 0){
trackVOListTemp.addAll(collect);
//待办任务id
if(trackVOList.size() != 0){
List<String> projectTaskInventoryIdList = trackVOList.stream().map(NcrTrackVO::getId).distinct().collect(Collectors.toList());
QueryWrapper<ProjectTaskInventoryDetailEO> taskDetailQueryWrapper = new QueryWrapper<>();
taskDetailQueryWrapper.lambda().in(ProjectTaskInventoryDetailEO::getProjectTaskInventoryId,projectTaskInventoryIdList);
List<ProjectTaskInventoryDetailEO> projectTaskInventoryDetailEOList = projectTaskInventoryDetailEOService.list(taskDetailQueryWrapper);
for (NcrTrackVO trackVO : trackVOList) {
String projectTaskInventoryId = trackVO.getId();
String prcType = trackVO.getPrcType();
if(StringUtils.isNotBlank(projectTaskInventoryId) && StringUtils.isNotBlank(prcType)){
List<ProjectTaskInventoryDetailEO> collect = projectTaskInventoryDetailEOList.stream()
.filter(e -> projectTaskInventoryId.equals(e.getProjectTaskInventoryId()) && prcType.equals(e.getFlowType()))
.collect(Collectors.toList());
if(collect.size() != 0){
trackVO.setTaskId(collect.get(0).getTaskId());
}
}
}
}
List<NcrTrackVO> trackVOListTemp = new ArrayList<>();
String idJson = ncrTrackVO.getNcrTrackVOList();
if(StringUtils.isNotBlank(idJson)){
List<NcrTrackVO> ncrTrackVOList = JSONObject.parseArray(idJson, NcrTrackVO.class);
//导出数据过滤(列表中选取多条进行导出的时候,用任务清单id和流程类型作为条件进行数据过滤)
if(ObjectUtils.allNotNull(ncrTrackVOList)){
for (NcrTrackVO trackVO : ncrTrackVOList) {
List<NcrTrackVO> collect = trackVOList.stream()
.filter(e -> trackVO.getId().equals(e.getId()) && trackVO.getFlowType().equals(e.getFlowType()))
.collect(Collectors.toList());
if(collect.size() != 0){
trackVOListTemp.addAll(collect);
}
}
}
}
if(trackVOListTemp.size() != 0){
return trackVOListTemp;
}else{
@@ -238,7 +274,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
String name,
List<SysUser> sysUserList,
String id,
Date createTime){
Date createTime,
String projectLibraryId,
String projectLawsInventoryId,
String flowTypeNumber){
String uuid = UUID.randomUUID().toString().replace("-", "");
String initiatorTemp ="";
String dutyTemp ="";
@@ -255,7 +294,14 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
}
}
NcrTrackVO ncrTrackVO = new NcrTrackVO();
//跳转字段赋值
ncrTrackVO.setPrcId(flowType);//流程实例
ncrTrackVO.setProjectLibraryId(projectLibraryId);//项目库id
ncrTrackVO.setProjectLawsInventoryId(projectLawsInventoryId);//法规清单id
ncrTrackVO.setPrcType(flowTypeNumber);//流程类型
ncrTrackVO.setId(id);
ncrTrackVO.setUuid(uuid);
ncrTrackVO.setCreateTime(createTime);
ncrTrackVO.setSerialNumber(serialNumber);//编号
@@ -289,10 +335,10 @@ public class NcrTrackServiceImpl extends ServiceImpl<NcrTrackMapper, NcrTrackVO>
OutputStream excelOS = response.getOutputStream();;
ExportParams exportParams = new ExportParams();
exportParams.setType(ExcelType.XSSF);
//项目详情中的导出(没有相关项目字段)
if(StringUtils.isBlank(ncrTrackVO.getProjectLibraryId())){
workbook = ExcelExportUtil.exportExcel(exportParams, NcrTrackVO.class, dataList);
}else{
//项目详情中的导出(没有相关项目字段)
for (NcrTrackVO trackVO : dataList) {
NcrTrackInfoVO ncrTrackInfoVO = new NcrTrackInfoVO();
BeanUtils.copyProperties(trackVO,ncrTrackInfoVO);
@@ -45,15 +45,15 @@ public class NcrTrackInfoVO implements Serializable {
@Excel(name = "标题", width = 20)
private String title;
//流程类型
@Excel(name = "流程类型", width = 20)
private String flowType;
//责任领域 duty_territory
@Dict(dicCode ="duty_territory")
@Excel(name = "责任领域", width = 20,dicCode ="duty_territory")
private String dutyTerritory;
//流程类型
@Excel(name = "流程类型", width = 20)
private String flowType;
//目标市场
private String targetMarket;
@@ -25,6 +25,7 @@ import java.util.List;
public class NcrTrackVO implements Serializable {
//任务清单id
private String id;
//用于导出时勾选数据
@@ -46,14 +47,17 @@ public class NcrTrackVO implements Serializable {
@Excel(name = "标题", width = 20)
private String title;
//流程类型
@Excel(name = "流程类型", width = 20)
private String flowType;
//责任领域 duty_territory
@Dict(dicCode ="duty_territory")
@Excel(name = "责任领域", width = 20,dicCode ="duty_territory")
private String dutyTerritory;
//流程类型
@Excel(name = "流程类型", width = 20)
private String flowType;
//流程类型标识(枚举)
private String flowTypeNumber;
//相关项目
@Excel(name = "相关项目", width = 20)
@@ -74,11 +78,11 @@ public class NcrTrackVO implements Serializable {
@Excel(name = "责任人", width = 20)
private String duty;
//项目id
//项目id
private String projectLibraryId;
//项目id
//不符合
private String inconformity;
//项目id
//待追踪
private String track;
//设计符合性确认 design_p_id
@@ -113,7 +117,18 @@ public class NcrTrackVO implements Serializable {
//验证问题类型 verify_flow_task_status
private String verifyFlowTaskStatus;
private List<NcrTrackVO> ncrTrackVOList;
private String ncrTrackVOList;
//以下字段跳转适用(还有项目库id)
//待办任务id
private String taskId;
//法规清单id
private String projectLawsInventoryId;
//流程实例id
private String prcId;
//流程类型
private String prcType;
@@ -9,11 +9,13 @@
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('parameterTemplate')">{{$t('parameterTemplate')}}</span>
</div>
@@ -28,6 +30,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('status')">{{$t('status')}}</span>
</div>
<a-form-model-item class="itemModel" prop="state">
@@ -44,6 +47,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
</div>
<a-form-model-item class="itemModel" prop="region">
@@ -74,6 +78,7 @@
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
@@ -104,6 +109,12 @@ export default {
],
description:[
{ min:1, max: 300, message: this.$t('cantExeed')+'300'+this.$t('characters'), trigger: 'blur' },
],
state: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('status'), trigger: 'change' },
],
region: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('zoneOfApplication'), trigger: 'change' },
]
},
disabled: false,
@@ -92,14 +92,18 @@
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('templateName')">{{$t('templateName')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsTemplateName">
<span class="title-text-text"
:title="$t('templateName')">{{$t('templateName')}}
</span>
<a-input class="box-input add-input"
v-model="paramsTemplateName"
v-model="formInline.paramsTemplateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
@@ -131,7 +135,11 @@ export default {
selectedRowKeys: [],
selectedRowKeysArray: '',
formInline: {},
rules: {},
rules: {
paramsTemplateName:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('templateName'), trigger: 'change' },
],
},
visible: false,
dataSource: [],
confirmLoading: false,
@@ -203,20 +211,20 @@ export default {
this.areaVisible=false
},
handleSubmit() {
if(this.paramsTemplateName.trim() === '') {
this.$message.warning(this.$t('templateName') + this.$t('cannotEmpty'))
} else {
getAction(this.url.copy + `?id=${this.selectedRowKeys[0]}&paramsTemplateName=${this.paramsTemplateName}`, {}).then((res) => {
if (res.success) {
this.areaVisible=false
this.$message.success(res.message)
this.getList()
} else {
this.$message.warning(res.message)
}
})
}
console.log(this.paramsTemplateName,'this.paramsTemplateName')
this.$refs.ruleForm.validate(valid => {
if (valid) {
getAction(this.url.copy + `?id=${this.selectedRowKeys[0]}&paramsTemplateName=${this.formInline.paramsTemplateName}`, {}).then((res) => {
if (res.success) {
this.areaVisible = false
this.$message.success(res.message)
this.selectedRowKeys = []
this.getList()
} else {
this.$message.warning(res.message)
}
})
}
})
},
handleToggleSearch() {
this.toggleSearchStatus = !this.toggleSearchStatus
@@ -237,6 +245,7 @@ export default {
this.$message.warning(this.$t('pleaseSelectData'))
} else {
this.areaVisible=true
this.formInline = {}
}
},
hideModal(){
@@ -15,6 +15,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('NiONumber')">{{$t('NiONumber')}}</span>
</div>
@@ -29,6 +30,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('Required')">{{$t('Required')}}</span>
</div>
<a-form-model-item class="itemModel" prop="isMust">
@@ -46,6 +48,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('ParameterName')">{{$t('ParameterName')}}</span>
</div>
@@ -60,6 +63,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('technicalField')">{{$t('technicalField')}}</span>
</div>
<a-form-model-item class="itemModel" prop="technologyTerritory">
@@ -81,6 +85,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('parameterBatch')">{{$t('parameterBatch')}}</span>
</div>
@@ -96,6 +101,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('areaOfResponsibility')">{{$t('areaOfResponsibility')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dutyTerritory">
@@ -147,6 +153,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('controlType')">{{$t('controlType')}}</span>
</div>
@@ -182,6 +189,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('controlAlternatives')">{{$t('controlAlternatives')}}</span>
</div>
@@ -219,6 +227,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('standard')">{{$t('standard')}}</span>
</div>
@@ -233,6 +242,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('ParameterName')">{{$t('ParameterName')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsName">
@@ -77,9 +77,8 @@
:columns="columns"
@customHeaderRow='customHeaderRow'
>
<!-- @change="tableOnChange"-->
<span slot="projectName" slot-scope="text,record">
<a @click="entryNameClick(record)">{{text}}</a>
<span slot="titleName" slot-scope="text,record" :title="text">
{{ text && text.length > 10 ? text.slice(0, 9) + '...' : text }}
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
@@ -159,6 +158,7 @@ export default {
title: this.$t('ParameterDescription'),
align: 'center',
dataIndex: 'description',
scopedSlots: { customRender: 'titleName' }
},
{
title: this.$t('areaOfResponsibility'),
@@ -393,6 +393,14 @@
})
},
distributionEngineer() {
let msgType = ''
if (this.$route.query.flowType == 2) {
msgType = 'designIssueDreMsg'
} else if (this.$route.query.flowType == 3) {
msgType = 'prehomoIssueDreMsg'
} else if (this.$route.query.flowType == 4) {
msgType = 'verifyIssueDreMsg'
}
let query = {
status: 'NotDone',
actiProcInstId: this.$route.query.actiProcInstId,
@@ -400,7 +408,7 @@
flowType: this.$route.query.flowType,
userIds: this.formInline.userId,
taskDefinitionKey: 'dreDispose',
msgType: 'designIssueDreMsg'
msgType: msgType
}
postAction(this.url.DetailEOAdd, query).then((res) => {
if (res.success) {
@@ -468,15 +476,25 @@
})
},
reminderClick(val) {
let msgType = ''
if (this.$route.query.flowType == 2) {
msgType = 'designRemindMsg'
} else if (this.$route.query.flowType == 3) {
msgType = 'prehomoRemindMsg'
} else if (this.$route.query.flowType == 4) {
msgType = 'verifyRemindMsg'
}
let query = {
msgType: 'designRemindMsg',
msgType: msgType,
projectLibraryId: this.$route.query.projectLibraryId,
dreUserIds: val.userId,
serialNumber: this.$route.query.serialNumber
}
postAction(this.url.remindDispose, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
@@ -50,8 +50,10 @@
ref="table"
size="middle"
:loading="loading"
rowKey="uuid"
:pagination="false"
:scroll="{x: true}"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:data-source="dataSource"
:columns="columns"
>
@@ -81,6 +83,7 @@
queryParam: {},
loading: false,
dataSource: [],
selectedRowKeys:[],
columns: [
{
title: this.$t('standard'),
@@ -149,10 +152,27 @@
this.pageSize = pageSize
this.getList()
},
onSelectChange(value) {
this.content = []
this.selectedRowKeys = value
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.dataSource.forEach(res => {
this.selectedRowKeys.forEach(val => {
if (res.uuid == val) {
this.content.push({
id: res.id,
flowType: res.flowType
})
}
})
})
}
},
handleExport() {
let query = {
...this.queryParam,
projectLibraryId: this.$route.query.id
projectLibraryId: this.$route.query.id,
ncrTrackVOList: JSON.stringify(this.content)
}
downloadFile(this.url.exportData, this.$t('NonConformance') + '.xls', query, this.Deselect)
},
@@ -149,7 +149,7 @@
<a-table
ref="table"
size="middle"
rowKey="id"
rowKey="uuid"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
@@ -275,7 +275,7 @@
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.dataSource.forEach(res => {
this.selectedRowKeys.forEach(val => {
if (res.id == val) {
if (res.uuid == val) {
this.content.push({
id: res.id,
flowType: res.flowType
@@ -320,7 +320,7 @@
handleExport() {
let query = {
...this.queryParam,
ncrTrackVOList: this.content
ncrTrackVOList: JSON.stringify(this.content)
}
downloadFile(this.url.exportData, this.$t('NonConformance') + '.xls', query, this.Deselect)
},