From a38556706eb4308abba2085904d783345297d291 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Fri, 13 May 2022 13:55:36 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AF=A6=E6=83=85--?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=BD=B4=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectTaskPlanningController.java | 10 +- .../mapper/ProjectTaskPlanningMapper.java | 6 +- .../mapper/xml/ProjectTaskPlanningMapper.xml | 14 +- .../service/IProjectTaskPlanningService.java | 4 +- .../impl/ProjectTaskPlanningServiceImpl.java | 297 +++++++++--------- 5 files changed, 175 insertions(+), 156 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskPlanningController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskPlanningController.java index 48d0b509a..c689e44d1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskPlanningController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectTaskPlanningController.java @@ -69,8 +69,8 @@ public class ProjectTaskPlanningController extends JeroController queryList(@RequestParam(name="projectId",required=true) String projectId) { - ProjectTaskPlanning projectTaskPlanning = projectTaskPlanningService.queryList(projectId); - return Result.OK(projectTaskPlanning); + List projectTaskPlanning = projectTaskPlanningService.queryList(projectId); + return Result.OK(projectTaskPlanning.get(0)); } /** @@ -140,11 +140,11 @@ public class ProjectTaskPlanningController extends JeroController queryByProjectId(@RequestParam(name="projectId",required=true) String projectId, @RequestParam(name="cut",required=true) String cut) { - List projectTaskPlanning = projectTaskPlanningService.queryByProjectId(projectId,cut); - if(projectTaskPlanning==null) { + List> result = projectTaskPlanningService.queryByProjectId(projectId,cut); + if(result.size() == 0) { return Result.error("未找到对应数据"); } - return Result.OK(projectTaskPlanning); + return Result.OK(result.get(0)); } /** diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskPlanningMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskPlanningMapper.java index 5bcc74c21..b9658b687 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskPlanningMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectTaskPlanningMapper.java @@ -2,6 +2,7 @@ package com.jero.modules.project.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.modules.project.entity.ProjectTaskPlanning; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -13,7 +14,8 @@ import java.util.List; * @Version: V1.0 */ public interface ProjectTaskPlanningMapper extends BaseMapper { - @Select("SELECT * FROM project_task_planning where project_id=#{projectId}") - ProjectTaskPlanning getByProjectId(String projectId); + +// @Select("SELECT * FROM project_task_planning where project_id=#{projectId}") + List getByProjectId(@Param("projectId") String projectId); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskPlanningMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskPlanningMapper.xml index c5f5cd18d..a883441db 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskPlanningMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectTaskPlanningMapper.xml @@ -12,4 +12,16 @@ - \ No newline at end of file + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskPlanningService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskPlanningService.java index 8cc1ff17f..441d49700 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskPlanningService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectTaskPlanningService.java @@ -52,12 +52,12 @@ public interface IProjectTaskPlanningService extends IService queryByProjectId(String projectId,String cut); + List> queryByProjectId(String projectId,String cut); /** * 列表查询 * * @return */ - ProjectTaskPlanning queryList(String projectId); + List queryList(String projectId); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java index 4b3ecf542..cea55c4c0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java @@ -90,8 +90,9 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl queryByProjectId(String projectId,String cut) { - ProjectTaskPlanning projectTaskPlanning = projectTaskPlanningMapper.getByProjectId(projectId); + public List> queryByProjectId(String projectId,String cut) { + List projectTaskPlanningList = projectTaskPlanningMapper.getByProjectId(projectId); + List> result = new ArrayList<>(); List timeNodeVOS = new ArrayList<>(); TimeNodeVO listConfirmationVO=null; @@ -104,156 +105,160 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl queryList(String projectId) { + List projectTaskPlanning = projectTaskPlanningMapper.getByProjectId(projectId); return projectTaskPlanning; } From a1805564f55b1d386c5c2effd2c8e0983135672e Mon Sep 17 00:00:00 2001 From: zhaomeijing Date: Fri, 13 May 2022 14:20:58 +0800 Subject: [PATCH 02/11] =?UTF-8?q?[add]=20=E5=8F=82=E6=95=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=97=E8=A1=A8=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parameterlist/components/addModel.vue | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/jero-web/src/views/parameter/parameterlist/components/addModel.vue b/jero-web/src/views/parameter/parameterlist/components/addModel.vue index 82b6f9a8e..9421a935f 100644 --- a/jero-web/src/views/parameter/parameterlist/components/addModel.vue +++ b/jero-web/src/views/parameter/parameterlist/components/addModel.vue @@ -122,7 +122,9 @@ :title="$t('ParameterDescription')">{{$t('ParameterDescription')}} - @@ -329,11 +331,12 @@ export default { rules: { nioNumber:[ { required: true, message: this.$t('PleaseEnter')+this.$t('NiONumber'), trigger: 'change' }, - // { - // pattern: /(?!^\d+$)(?!^[a-zA-Z]+$)[0-9a-zA-Z]{1,15}/, - // message: this.$t('onlyThree'), - // trigger: 'change' - // } + { min:1, max: 15, message: this.$t('cantExeed')+'15'+this.$t('characters'), trigger: 'blur' }, + { + pattern: /^[0-9a-zA-Z-]{1,}$/, + message: this.$t('onlyThree'), + trigger: 'change' + } ], isMust: [ { required: true, message: this.$t('pleaseSelect')+this.$t('Required'), trigger: 'change' }, @@ -439,6 +442,7 @@ export default { this.visible = true this.title = '新增' this.formInline = {} + this.formInline.isMust = '0' }, editModel(value) { this.visible = true @@ -518,7 +522,9 @@ export default { .formAdd .ant-form-item-label { width: 130px; } - +/deep/.add-input{ + min-height: 135px!important; +} .formAdd .ant-form-item-control-wrapper { display: inline-block; width: calc(100% - 130px); From 70b21c9c84855105fcf1dcc066e05ddc0c48346a Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Fri, 13 May 2022 14:35:19 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E6=9C=AA=E7=AC=A6=E5=90=88=E9=A1=B9--?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/NcrTrackServiceImpl.java | 20 +++++++++++-------- .../jero/modules/project/vo/NcrTrackVO.java | 6 ++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java index eda632bb0..b31df7887 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/NcrTrackServiceImpl.java @@ -24,7 +24,6 @@ import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -175,24 +174,29 @@ public class NcrTrackServiceImpl extends ServiceImpl } //待办任务id if(trackVOList.size() != 0){ - List projectTaskInventoryIdList = trackVOList.stream().map(NcrTrackVO::getId).distinct().collect(Collectors.toList()); + List projectLawsInventoryIdList = trackVOList.stream().map(NcrTrackVO::getProjectLawsInventoryId).distinct().collect(Collectors.toList()); QueryWrapper taskDetailQueryWrapper = new QueryWrapper<>(); - taskDetailQueryWrapper.lambda().in(ProjectTaskInventoryDetailEO::getProjectTaskInventoryId,projectTaskInventoryIdList); + taskDetailQueryWrapper.lambda().in(ProjectTaskInventoryDetailEO::getProjectTaskInventoryId,projectLawsInventoryIdList); + //任务清单数据 List projectTaskInventoryDetailEOList = projectTaskInventoryDetailEOService.list(taskDetailQueryWrapper); for (NcrTrackVO trackVO : trackVOList) { - String projectTaskInventoryId = trackVO.getId(); - String prcType = trackVO.getPrcType(); - if(StringUtils.isNotBlank(projectTaskInventoryId) && StringUtils.isNotBlank(prcType)){ + String projectLawsInventoryId = trackVO.getProjectLawsInventoryId();//任务清单id + String prcType = trackVO.getPrcType();//流程类型 + if(StringUtils.isNotBlank(projectLawsInventoryId) && StringUtils.isNotBlank(prcType)){ List collect = projectTaskInventoryDetailEOList.stream() - .filter(e -> projectTaskInventoryId.equals(e.getProjectTaskInventoryId()) && prcType.equals(e.getFlowType())) + .filter(e -> projectLawsInventoryId.equals(e.getProjectTaskInventoryId()) && prcType.equals(e.getFlowType())) .collect(Collectors.toList()); if(collect.size() != 0){ - trackVO.setTaskId(collect.get(0).getTaskId()); + trackVO.setTaskId(collect.get(0).getTaskId());//待办任务id + trackVO.setStatus(collect.get(0).getStatus()); + trackVO.setProjectTaskInventoryDetailId(collect.get(0).getId()); + trackVO.setTaskDefinitionKey(collect.get(0).getTaskDefinitionKey()); } } } } + List trackVOListTemp = new ArrayList<>(); String idJson = ncrTrackVO.getNcrTrackVOList(); if(StringUtils.isNotBlank(idJson)){ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java index 16338d3a5..6b463b8f0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/NcrTrackVO.java @@ -129,6 +129,12 @@ public class NcrTrackVO implements Serializable { private String prcId; //流程类型 private String prcType; + //状态:待办 、已办 + private String status; + //任务清单详情id + private String projectTaskInventoryDetailId; + //任务节点定义key + private String taskDefinitionKey; From b0edd802b438742e72484981682f9f0e2b3edfe7 Mon Sep 17 00:00:00 2001 From: zhaomeijing Date: Fri, 13 May 2022 15:11:41 +0800 Subject: [PATCH 04/11] =?UTF-8?q?[add]=20=E5=8F=82=E6=95=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=97=E8=A1=A8=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parameterlist/components/addModel.vue | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/jero-web/src/views/parameter/parameterlist/components/addModel.vue b/jero-web/src/views/parameter/parameterlist/components/addModel.vue index 9421a935f..c764336b1 100644 --- a/jero-web/src/views/parameter/parameterlist/components/addModel.vue +++ b/jero-web/src/views/parameter/parameterlist/components/addModel.vue @@ -123,7 +123,7 @@ - + +
{{$t('controlVerification')}} @@ -187,7 +188,8 @@
- + +
@@ -196,15 +198,18 @@ :title="$t('controlAlternatives')">{{$t('controlAlternatives')}}
-
- + +
From 5e14b5a892c42505c5d9ca08cd1b6cdeec0fbca9 Mon Sep 17 00:00:00 2001 From: zhaomeijing Date: Fri, 13 May 2022 15:55:21 +0800 Subject: [PATCH 05/11] =?UTF-8?q?[add]=20=E9=A1=B9=E7=9B=AE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A1=B9=E7=9B=AEid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projectManagement/components/TaskParameterCollection.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue b/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue index ec75a13e5..0f42d2479 100644 --- a/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue +++ b/jero-web/src/views/projectManagement/components/TaskParameterCollection.vue @@ -284,6 +284,7 @@ }, getlist() { let query = { + projectId: this.$route.query.id, pageSize: this.pageSize, pageNo: this.pageNo, ...this.queryParam From 7524634bfd56c6d8d42ba9fee65962e23cfe91cd Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Fri, 13 May 2022 16:04:54 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF--=E6=97=B6=E9=97=B4=E8=BD=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/common/aspect/DictAspect.java | 11 +++- .../ProjectStatusBoardController.java | 53 +++++++++++++++++++ .../mapper/ProjectStatusBoardMapper.java | 9 ++++ .../mapper/xml/ProjectStatusBoardMapper.xml | 25 +++++++++ .../service/IProjectStatusBoardService.java | 17 ++++++ .../impl/ProjectStatusBoardServiceImpl.java | 49 +++++++++++++++++ .../impl/ProjectTaskPlanningServiceImpl.java | 29 +++++----- .../project/vo/ProjectStatusBoardVO.java | 13 +++++ 8 files changed, 192 insertions(+), 14 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectStatusBoardMapper.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectStatusBoardMapper.xml create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/vo/ProjectStatusBoardVO.java diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/aspect/DictAspect.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/aspect/DictAspect.java index e45e1a2c0..43d7c2bac 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/aspect/DictAspect.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/aspect/DictAspect.java @@ -98,8 +98,15 @@ public class DictAspect { if(!"java.util.LinkedHashMap".equals(name) && !"java.util.HashMap".equals(name) && !"java.lang.String".equals(name)){ List items = new ArrayList<>(); for (Object record : (List)((Result) result).getResult()) { - JSONObject item = getJsonObject(record,cut); - items.add(item); + if("java.util.ArrayList".equals(record.getClass().getName())){ + for (Object o : (List) record) { + JSONObject item = getJsonObject(o,cut); + items.add(item); + } + }else{ + JSONObject item = getJsonObject(record,cut); + items.add(item); + } } ((Result) result).setResult(items); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java new file mode 100644 index 000000000..4ae4878e1 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectStatusBoardController.java @@ -0,0 +1,53 @@ +package com.jero.modules.project.controller; + +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.service.IProjectStatusBoardService; +import com.jero.modules.project.vo.TimeNodeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @description + * @date 2022/5/13 9:56 + * @auth zhn + */ +@Api(tags="项目状态看板") +@RestController +@RequestMapping("/project/ProjectStatusBoardController") +@Slf4j +public class ProjectStatusBoardController { + + @Autowired + private IProjectStatusBoardService iProjectStatusBoardService; + + /** + * 时间轴列表 + * + * @param projectLibraryBase + * @return + */ + @AutoLog(value = "时间轴列表") + @ApiOperation(value="时间轴列表", notes="时间轴列表") + @GetMapping(value = "/timelineList") + public Result timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + List> result = iProjectStatusBoardService.timelineList(projectLibraryBase, req); + if(result==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(result); + } + + + + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectStatusBoardMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectStatusBoardMapper.java new file mode 100644 index 000000000..287d10015 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectStatusBoardMapper.java @@ -0,0 +1,9 @@ +package com.jero.modules.project.mapper; + +/** + * @description + * @date 2022/5/13 10:00 + * @auth zhn + */ +public interface ProjectStatusBoardMapper { +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectStatusBoardMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectStatusBoardMapper.xml new file mode 100644 index 000000000..f10e92cfc --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectStatusBoardMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java new file mode 100644 index 000000000..660c0e001 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectStatusBoardService.java @@ -0,0 +1,17 @@ +package com.jero.modules.project.service; + +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.vo.TimeNodeVO; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @description + * @date 2022/5/13 9:59 + * @auth zhn + */ +public interface IProjectStatusBoardService { + + List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java new file mode 100644 index 000000000..1f8aafef7 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectStatusBoardServiceImpl.java @@ -0,0 +1,49 @@ +package com.jero.modules.project.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.dummy.entity.DummyInventoryBaseEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.service.IProjectStatusBoardService; +import com.jero.modules.project.vo.TimeNodeVO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @description + * @date 2022/5/13 9:59 + * @auth zhn + */ +@Service +public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService { + @Autowired + private ProjectTaskPlanningServiceImpl projectTaskPlanningService; + @Autowired + private ProjectLibraryBaseServiceImpl projectLibraryBaseService; + + + @Override + public List> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) { + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap()); + + //项目库信息 + List projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper); + List> result = new ArrayList<>(); + if(projectLibraryBaseList.size() != 0){ + //项目库id + List projectLibraryBaseIdList = projectLibraryBaseList.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList()); + + //时间轴数据 + result = projectTaskPlanningService.queryByProjectId(StringUtils.join(projectLibraryBaseIdList, ","), projectLibraryBase.getCut()); + } + return result; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java index cea55c4c0..16ecab092 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java @@ -10,6 +10,7 @@ import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum; import com.jero.modules.project.mapper.ProjectTaskPlanningMapper; import com.jero.modules.project.service.IProjectTaskPlanningService; import com.jero.modules.project.vo.TimeNodeVO; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -93,7 +94,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl> queryByProjectId(String projectId,String cut) { List projectTaskPlanningList = projectTaskPlanningMapper.getByProjectId(projectId); List> result = new ArrayList<>(); - List timeNodeVOS = new ArrayList<>(); + TimeNodeVO listConfirmationVO=null; Date now=new Date(); @@ -106,7 +107,8 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl timeNodeVOS = new ArrayList<>(); + if(ObjectUtils.isNotEmpty(projectTaskPlanning.getListConfirmation())) { listConfirmationVO = new TimeNodeVO(); if(CutEnum.CN.getValue().equals(cut)){ @@ -126,7 +128,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl Date: Fri, 13 May 2022 16:20:21 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=B8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processForm/taskListProcess/index.vue | 2 +- .../components/nonConformance.vue | 53 +++++++++++++++++-- .../projectNonConformance/index.vue | 51 +++++++++++++++++- 3 files changed, 100 insertions(+), 6 deletions(-) diff --git a/jero-web/src/views/processCenter/processForm/taskListProcess/index.vue b/jero-web/src/views/processCenter/processForm/taskListProcess/index.vue index 6508b8c0f..5deabac2a 100644 --- a/jero-web/src/views/processCenter/processForm/taskListProcess/index.vue +++ b/jero-web/src/views/processCenter/processForm/taskListProcess/index.vue @@ -270,7 +270,7 @@ this.edit() this.$router.push({ path: '/ProjectDetails', - query: this.$route.query.primaryKeyId + query: this.$route.query }) } else { this.loading = false diff --git a/jero-web/src/views/projectManagement/components/nonConformance.vue b/jero-web/src/views/projectManagement/components/nonConformance.vue index 540f23467..d049141bb 100644 --- a/jero-web/src/views/projectManagement/components/nonConformance.vue +++ b/jero-web/src/views/projectManagement/components/nonConformance.vue @@ -57,6 +57,9 @@ :data-source="dataSource" :columns="columns" > + + {{text}} +
@@ -83,17 +86,19 @@ queryParam: {}, loading: false, dataSource: [], - selectedRowKeys:[], + selectedRowKeys: [], columns: [ { title: this.$t('standard'), align: 'center', - dataIndex: 'serialNumber' + dataIndex: 'serialNumber', + scopedSlots: { customRender: 'standard' } }, { title: this.$t('title'), align: 'center', - dataIndex: 'title' + dataIndex: 'title', + scopedSlots: { customRender: 'standard' } }, { title: this.$t('ProcessType'), @@ -194,6 +199,48 @@ this.loading = false } }) + }, + standardClick(val) { + let num = val.prcType + let query = { + taskIds: val.taskId, + projectTaskInventoryId: val.projectLawsInventoryId, + projectLibraryId: val.projectLibraryId, + projectName: val.projectName, + id: val.projectLibraryId, + serialNumber: val.serialNumber, + actiProcInstId: val.prcId, + primaryKeyId: val.projectTaskInventoryDetailId, + TaskKey: val.status == 'NotDone' ? val.taskDefinitionKey : 'hhhhh' + } + switch (num) { + case '2': + query.flowType = 2 + query.Sponsor = 'designInitiatorName' + query.personLiable = 'designDutyName' + query.typeOfDeliverables = 'designDeliverableType_dictText' + query.deliverableTemplate = 'designDeliverableTemplate' + break + case '3': + query.flowType = 3 + query.Sponsor = 'prehomoInitiatorName' + query.personLiable = 'prehomoDutyName' + query.typeOfDeliverables = 'prehomoDeliverableType_dictText' + query.deliverableTemplate = 'prehomoDeliverableTemplate' + break + case '4': + query.flowType = 4 + query.Sponsor = 'verifyInitiatorName' + query.personLiable = 'verifyDutyName' + query.typeOfDeliverables = 'verifyDeliverableType_dictText' + query.deliverableTemplate = 'verifyDeliverableTemplate' + break + } + let newUrl = this.$router.resolve({ + path: '/taskListProcess', + query: query + }) + window.open(newUrl.href, '_blank') } } } diff --git a/jero-web/src/views/projectManagement/projectNonConformance/index.vue b/jero-web/src/views/projectManagement/projectNonConformance/index.vue index a98310442..fb2302804 100644 --- a/jero-web/src/views/projectManagement/projectNonConformance/index.vue +++ b/jero-web/src/views/projectManagement/projectNonConformance/index.vue @@ -157,6 +157,9 @@ :data-source="dataSource" :columns="columns" > + + {{text}} +
@@ -195,13 +198,15 @@ title: this.$t('standard'), align: 'center', dataIndex: 'serialNumber', - ellipsis: true + ellipsis: true, + scopedSlots: { customRender: 'standard' } }, { title: this.$t('title'), align: 'center', dataIndex: 'title', - ellipsis: true + ellipsis: true, + scopedSlots: { customRender: 'standard' } }, { title: this.$t('ProcessType'), @@ -330,6 +335,48 @@ PersonnelSelectionChange(value, id) { this.queryParam[value] = id this.queryParam = { ...this.queryParam } + }, + standardClick(val) { + let num = val.prcType + let query = { + taskIds: val.taskId, + projectTaskInventoryId: val.projectLawsInventoryId, + projectLibraryId: val.projectLibraryId, + projectName: val.projectName, + id: val.projectLibraryId, + serialNumber: val.serialNumber, + actiProcInstId: val.prcId, + primaryKeyId: val.projectTaskInventoryDetailId, + TaskKey: val.status == 'NotDone' ? val.taskDefinitionKey : 'hhhhh' + } + switch (num) { + case '2': + query.flowType = 2 + query.Sponsor = 'designInitiatorName' + query.personLiable = 'designDutyName' + query.typeOfDeliverables = 'designDeliverableType_dictText' + query.deliverableTemplate = 'designDeliverableTemplate' + break + case '3': + query.flowType = 3 + query.Sponsor = 'prehomoInitiatorName' + query.personLiable = 'prehomoDutyName' + query.typeOfDeliverables = 'prehomoDeliverableType_dictText' + query.deliverableTemplate = 'prehomoDeliverableTemplate' + break + case '4': + query.flowType = 4 + query.Sponsor = 'verifyInitiatorName' + query.personLiable = 'verifyDutyName' + query.typeOfDeliverables = 'verifyDeliverableType_dictText' + query.deliverableTemplate = 'verifyDeliverableTemplate' + break + } + let newUrl = this.$router.resolve({ + path: '/taskListProcess', + query: query + }) + window.open(newUrl.href, '_blank') } } } From 48964b9c34d877bd39eaff92641f38872c316a0d Mon Sep 17 00:00:00 2001 From: zhaomeijing Date: Fri, 13 May 2022 16:27:09 +0800 Subject: [PATCH 08/11] =?UTF-8?q?[add]=20=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parameter/parameterlist/components/addModel.vue | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/jero-web/src/views/parameter/parameterlist/components/addModel.vue b/jero-web/src/views/parameter/parameterlist/components/addModel.vue index c764336b1..793f400d1 100644 --- a/jero-web/src/views/parameter/parameterlist/components/addModel.vue +++ b/jero-web/src/views/parameter/parameterlist/components/addModel.vue @@ -370,6 +370,11 @@ export default { { min:1, max: 500, message: this.$t('cantExeed')+'500'+this.$t('characters'), trigger: 'blur' }, ], }, + rulesItem: { + paramsNumber: [ + { required: true, message: this.$t('PleaseEnter')+this.$t('standard'), trigger: 'change' } + ] + }, disabled: false, projectNameList: [], title: '', @@ -406,8 +411,6 @@ export default { }, Onchangelabel(val) { let _tt = [] - console.log(val,'val,,,,') - // this.formInline.certCategoryParamsInfoEOList = [] val.forEach((item) => { _tt.push({ textVal: item.text, // tab @@ -455,11 +458,6 @@ export default { this.$nextTick(() => { this.formInline = value }) - // if(value.certCategoryParamsInfoEOList.length > 0 ) { - // this.contentList = value.certCategoryParamsInfoEOList - // } - console.log(this.contentList,'this.contentList') - console.log(value.certCategoryParamsInfoEOList,'lllll') }, handleCancel() { this.visible = false From bacc0494edd2d5f9f184872309bd18365c0d65d8 Mon Sep 17 00:00:00 2001 From: xiejunyu Date: Fri, 13 May 2022 16:59:40 +0800 Subject: [PATCH 09/11] =?UTF-8?q?bug51965=20=E5=8F=91=E5=B8=83=E6=9C=AA?= =?UTF-8?q?=E8=A2=AB=E8=AE=A2=E9=98=85=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectRelatedPersonnelController.java | 14 +- .../IProjectRelatedPersonnelService.java | 8 +- .../ProjectRelatedPersonnelServiceImpl.java | 544 +++++++++++------- 3 files changed, 337 insertions(+), 229 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java index 2d4e90fec..b01a8aebc 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectRelatedPersonnelController.java @@ -9,13 +9,16 @@ import com.jero.modules.system.entity.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -158,17 +161,16 @@ public class ProjectRelatedPersonnelController extends JeroController importExcel(HttpServletRequest request, HttpServletResponse response, - @RequestParam(name="projectId",required=true) String projectId, - @RequestParam(name="cut",required=true) String cut) { - return projectRelatedPersonnelService.importExcel(request, response, ProjectRelatedPersonnel.class,projectId,cut); + public Result importExcel(MultipartFile file, + @RequestParam(name="projectId",required=true) String projectId, + @RequestParam(name="cut",required=true) String cut) throws IOException, InvalidFormatException { + String message = projectRelatedPersonnelService.importExcel(file, ProjectRelatedPersonnel.class, projectId, cut); + return Result.OK(message); } /** diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java index 450fbb3f0..b1961c559 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectRelatedPersonnelService.java @@ -1,12 +1,14 @@ package com.jero.modules.project.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.jero.common.api.vo.Result; import com.jero.modules.project.entity.ProjectRelatedPersonnel; import com.jero.modules.system.entity.SysUser; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -78,10 +80,10 @@ public interface IProjectRelatedPersonnelService extends IService importExcel(HttpServletRequest request, HttpServletResponse response, Class clazz, String projectId,String cut); + String importExcel(MultipartFile file, Class clazz, String projectId, String cut) throws IOException, InvalidFormatException; - List oppositeDisposeData(List records,String projectId,String cut); + String oppositeDisposeData(List records, String projectId, String cut); ProjectRelatedPersonnel queryByProjectIdAndDutyTerritory(String projectId, String dutyTerritory); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java index 655369505..4466cbb53 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectRelatedPersonnelServiceImpl.java @@ -1,14 +1,12 @@ package com.jero.modules.project.service.impl; -import cn.afterturn.easypoi.excel.ExcelImportUtil; -import cn.afterturn.easypoi.excel.entity.ImportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.api.vo.Result; import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; +import com.jero.modules.dummy.service.impl.DummyInventoryInfoEOServiceImpl; import com.jero.modules.enums.DictCodeEnum; import com.jero.modules.project.entity.ProjectRelatedPersonnel; import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper; @@ -27,17 +25,14 @@ import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.HorizontalAlignment; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -75,6 +70,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl importExcel(HttpServletRequest request, HttpServletResponse response, - Class clazz,String projectId,String cut) { - Result result=new Result<>(); - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - Map fileMap = multipartRequest.getFileMap(); - for (Map.Entry entity : fileMap.entrySet()) { - MultipartFile file = entity.getValue();// 获取上传文件对象 - ImportParams params = new ImportParams(); - params.setTitleRows(1); - params.setHeadRows(1); - params.setNeedSave(true); - try { - //接收导入数据 - List records = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params); - if(CollectionUtils.isNotEmpty(records)) { - oppositeDisposeData(records,projectId,cut); + public String importExcel(MultipartFile file, + Class clazz, String projectId, String cut) throws IOException, InvalidFormatException { - //中英切换提示语 - if(CutEnum.CN.getValue().equals(cut)) { - result.success("文件导入成功!数据行数:" + records.size()); + String explainInfo= null; + String titleOne = ""; + + if(CutEnum.CN.getValue().equals(cut)){ + titleOne = "*责任领域,*法规工程师,*工程接口人,*认证工程师,备注"; + explainInfo = "填写说明\n" + + "1.导入数据从第三行开始\n" + + "2.所有带*号的字段必须填写\n"+ + "3.认证类型,认证级别,实施类别,交付物类型,发起人,责任人,字段是单选属性,必须和系统中的对应字段选项相匹配\n" + + "4.责任领域,字段是多选属性,必须和系统中的对应字段选项相匹配,填写多个时采用英文或中文逗号分割\n" + + "5.编号,子标题,WVTA ID,备注,填写文本内容\n" + + "6.交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx"; + }else{ + titleOne = "*Responsible Field,*Regulation Engineer,*Engineering Interface,*Homologation Engineer,Comments"; + explainInfo = "filling explanation\n" + + "1.import data starts at the third line\n" + + "2.all fields marked with * must be filled in\n"+ + "3.certification type,certification level,implementation category,type of deliverables,initiator,person liable,Fields are radio attributes that must match the corresponding field option in the system\n" + + "4.area of responsibility, field is a multi-select attribute and must match the corresponding field in the system. If multiple fields are filled in, separate them by commas (,)\n" + + "5.serial number,subtitle,WVTA ID,remarks,Fill in the text\n" + + "6.deliverable template,When filling in the field, you need to create a folder in the directory of the same level as the file with the name of the standard number and place the file in the folder. If b. diocx is stored under the AAA standard number, enter AAA/B. diocx"; + } + List titleOneList = Arrays.asList(titleOne.split(",")); + + + // 获取文件名 + String fileName = file.getOriginalFilename(); + // 获取文件后缀 + String prefix = fileName.substring(fileName.lastIndexOf(".")); + File excelFile = File.createTempFile(fileName, prefix); + file.transferTo(excelFile); + + Workbook workbook = WorkbookFactory.create(excelFile); + List list = new ArrayList<>(); + if (workbook != null) { + Sheet sheet = workbook.getSheetAt(0); + if (sheet != null) { + int rowNos = sheet.getPhysicalNumberOfRows();// 得到excel的总记录条数 + + for (int i = 0; i < rowNos ; i++) { + Row row = sheet.getRow(i); + Row headerRow = sheet.getRow(i); + boolean isBlank = dummyInventoryInfoEOService.isRowEmpty(row); + + if (row != null && !isBlank) { + int columNos = headerRow.getLastCellNum();// 表头总共的列数 + if (columNos == 5) {//列数对 + for (int j = 0; j < columNos; j++) { + Cell cell = row.getCell(j,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK); + if (i == 0){ + if (i == 0 && !cell.getStringCellValue().equals(titleOneList.get(j))) {//检查表头 + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("读取失败.请检查第 " + (i+1) + " 行表头,请严格按照模板文件导入数据"); + } else { + throw new JeroBootException("The data fails to be read.Please check header in line " + (i+1) + " .Import data strictly according to the template file."); + } + } + } + } + }else if((i!=1 && columNos != 5) || (i==2 && columNos !=1)){ + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("导入的列数不对,请检查"); + } else { + throw new JeroBootException("The number of imported columns is wrong. Please check!"); + } + } }else{ - result.success("File import succeeded! Number of data rows:" + records.size()); + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("导入的数据不能为空,请检查"); + } else { + throw new JeroBootException("The imported data of cannot be empty. Please check!"); + } } - }else{ - //中英切换提示语 - if(CutEnum.CN.getValue().equals(cut)) { - result.error500("数据为空,请检查"); - }else { - result.error500("The data is empty, please check!"); + if (i == 1) {//校验填写说明 + row = sheet.getRow(i); + int columNos = row.getLastCellNum(); + if(columNos != 1 /*|| (!row.getCell(0).getStringCellValue().equals(explainInfo))*/){ + if (CutEnum.CN.getValue().equals(cut)) { + throw new JeroBootException("填写说明列数不对,请严格按照模板文件导入数据"); + }else{ + throw new JeroBootException("The number of columns of filling explanation is wrong. Please import data strictly according to the template file."); + } + } + + } + if (i > 1) {//读取数据 + //获取每一行数据 + row = sheet.getRow(i); + ProjectRelatedPersonnel projectRelatedPersonnel = new ProjectRelatedPersonnel(); + + //责任领域不能为空 + String dutyTerritory = row.getCell(0).toString(); + if(StringUtils.isNotBlank(dutyTerritory)) { + projectRelatedPersonnel.setDutyTerritory(row.getCell(0).toString()); + }else{//责任领域不能为空,报错 + if(CutEnum.CN.getValue().equals(cut)){ + throw new JeroBootException("请填写责任领域,带*的为必填.请检查第 "+ (i+1) + "行"); + }else{ + throw new JeroBootException("Please fill in the Responsible Field and those marked with * are required. .Please check line" + (i+1)); + } + } + + String lawEngineerName = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).toString(); + String engineeringInterfacePersonName = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).toString(); + String certificationEngineerName = row.getCell(3,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).toString(); + + //除了责任领域全有值->可以 + if(StringUtils.isNotBlank(lawEngineerName) && StringUtils.isNotBlank(engineeringInterfacePersonName) && StringUtils.isNotBlank(certificationEngineerName)) { + projectRelatedPersonnel.setLawEngineerName(lawEngineerName); + projectRelatedPersonnel.setEngineeringInterfacePersonName(engineeringInterfacePersonName); + projectRelatedPersonnel.setCertificationEngineerName(certificationEngineerName); + }else if(StringUtils.isBlank(lawEngineerName) && StringUtils.isBlank(engineeringInterfacePersonName) && StringUtils.isBlank(certificationEngineerName)) { + //除了责任领域,带*的全为空->可以 + projectRelatedPersonnel.setLawEngineerName(""); + projectRelatedPersonnel.setEngineeringInterfacePersonName(""); + projectRelatedPersonnel.setCertificationEngineerName(""); + }else {//除了责任领域,备注,有一个为空都报错 + if(CutEnum.CN.getValue().equals(cut)){ + throw new JeroBootException("请填写必填字段内容,带*的为必填.请检查第 "+ (i+1) + "行"); + }else{ + throw new JeroBootException("Please fill in the required fields marked with * .Please check line" + (i+1)); + } + } + + String remark = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).toString(); + if(StringUtils.isNotEmpty(row.getCell(4).toString())) { + projectRelatedPersonnel.setRemark(remark); + } + + list.add(projectRelatedPersonnel); } } - } catch (Exception e) { - log.error(e.getMessage(), e); - result.error500(e.getMessage()); - } finally { - try { - file.getInputStream().close(); - } catch (IOException e) { - e.printStackTrace(); - } + } } - return result; + workbook.close(); + //把数据翻译成id,并保存 + String message = oppositeDisposeData(list, projectId, cut); + return message; } /** - * 把导入的数据翻译成对应的id,并校验 + * 把导入的数据翻译成对应的id,校验,不存 * 若除责任领域外的导入数据不能为空 * @return */ @Override - public List oppositeDisposeData(List records,String projectId,String cut) { - int row=1; - + public String oppositeDisposeData(List records, String projectId, String cut) { + int row=3; + StringBuilder message = new StringBuilder(); for (ProjectRelatedPersonnel projectRelatedPersonnel:records) { //查标签内容里的责任领域数据 - List sysDictItemValueList = sysDictItemMapper.selectItemValueByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue()); - if(!sysDictItemValueList.contains(projectRelatedPersonnel.getDutyTerritory())){ - if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("该责任领域不存在.请检查第" + row + "行"); - }else{ - throw new JeroBootException("The area of responsibility does not exist. Please check line " + row); - } + List sysDictItemList = sysDictItemMapper.selectItemsByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue()); + List dutyTerritoryValueList = new ArrayList<>(); + //按照责任领域名,查value + if (CutEnum.CN.getValue().equals(cut)) { + dutyTerritoryValueList = sysDictItemList.stream().filter(f -> f.getItemText().equals(projectRelatedPersonnel.getDutyTerritory())).map(e -> e.getItemValue()).collect(Collectors.toList()); + } else { + dutyTerritoryValueList = sysDictItemList.stream().filter(f -> f.getEnName().equals(projectRelatedPersonnel.getDutyTerritory())).map(e -> e.getItemValue()).collect(Collectors.toList()); } + //责任领域 if(!projectRelatedPersonnel.getDutyTerritory().isEmpty()) { //导入的一条数据,只能有一个责任领域 if (projectRelatedPersonnel.getDutyTerritory().contains(",")) { //中英切换提示语 if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("导入的责任领域只能填一个.请检查第" + row + "行"); + message.append("导入的责任领域只能填一个.请检查第" + row + "行. "); } else { - throw new JeroBootException("Only one duty territory can be filled in for import. Please check line " + row); + message.append("Only one duty territory can be filled in for import. Please check line " + row); } } else { - String dictItemValue = sysDictService.queryDictItemByValue(DictCodeEnum.DUTY_TERRITORY.getValue(), projectRelatedPersonnel.getDutyTerritory(), cut); - - if (StringUtils.isBlank(dictItemValue)) { + if (CollectionUtils.isEmpty(dutyTerritoryValueList)) {//导入的责任领域不对 //中英切换提示语 if (CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("导入的责任领域不存在.请检查第" + row + "行"); + message.append("导入的责任领域不存在.请检查第" + row + "行"); } else { - throw new JeroBootException("The imported duty territory does not exist. Please check line " + row); + message.append("The imported duty territory does not exist. Please check line " + row); } }else { - + projectRelatedPersonnel.setDutyTerritory(dutyTerritoryValueList.get(0)); QueryWrapper queryWrapper = new QueryWrapper<>(); - List idList = list(queryWrapper.select("id").eq("duty_territory", projectRelatedPersonnel.getDutyTerritory()).eq("project_id",projectId)); + List idList = list(queryWrapper.select("id").eq("duty_territory", dutyTerritoryValueList.get(0)).eq("project_id",projectId)); projectRelatedPersonnel.setId(idList.get(0).getId()); } } }else{ //中英切换提示语 if(CutEnum.CN.getValue().equals(cut)) { - throw new JeroBootException("导入的责任领域不能为空.请检查第" + row + "行"); + message.append("导入的责任领域不能为空.请检查第" + row + "行"); }else{ - throw new JeroBootException("The imported duty territory cannot be empty.Please check line " + row ); + message.append("The imported duty territory cannot be empty.Please check line " + row ); } } @@ -755,9 +859,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl records = projectRelatedPersonnelMapper.queryById(projectRelatedPersonnel.getId()); - for (ProjectRelatedPersonnel data : records) { - //法规工程师 - String lawString = projectRelatedPersonnel.getLawEngineer(); - //去重 - if(StringUtils.isNotBlank(lawString)) { - List lawList = Arrays.asList(lawString.split(",")); - String lawDistinct = lawList.stream().distinct().collect(Collectors.joining(",")); - projectRelatedPersonnel.setLawEngineer(lawDistinct); - } - - //工程接口人 - String interfaceString = projectRelatedPersonnel.getEngineeringInterfacePerson(); - //去重 - if(StringUtils.isNotBlank(interfaceString)) { - List interfaceList = Arrays.asList(interfaceString.split(",")); - String interfaceDistinct = interfaceList.stream().distinct().collect(Collectors.joining(",")); - projectRelatedPersonnel.setEngineeringInterfacePerson(interfaceDistinct); - } - -// 工程接口人 - String certificationString = projectRelatedPersonnel.getCertificationEngineer(); - //去重 - if(StringUtils.isNotBlank(certificationString)) { - List certificationList = Arrays.asList(certificationString.split(",")); - String certificationDistinct = certificationList.stream().distinct().collect(Collectors.joining(",")); - projectRelatedPersonnel.setCertificationEngineer(certificationDistinct); - } - - if (StringUtils.isBlank(data.getRemark())) {//数据库里备注是空的 - projectRelatedPersonnel.setRemark(projectRelatedPersonnel.getRemark()); - } else { - projectRelatedPersonnel.setRemark(""); - } - - Date now = new Date(); - projectRelatedPersonnel.setUpdateTime(now); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - projectRelatedPersonnel.setUpdateBy(sysUser.getUsername()); - updateById(projectRelatedPersonnel); - } - } +// //导入-更新数据 +// private void updateDataById(List records) { +//// List records = projectRelatedPersonnelMapper.queryById(projectRelatedPersonnel.getId()); +// for (ProjectRelatedPersonnel projectRelatedPersonnel : records) { +//// //法规工程师 +//// String lawString = projectRelatedPersonnel.getLawEngineer(); +//// //去重 +//// if(StringUtils.isNotBlank(lawString)) { +//// List lawList = Arrays.asList(lawString.split(",")); +//// String lawDistinct = lawList.stream().distinct().collect(Collectors.joining(",")); +//// projectRelatedPersonnel.setLawEngineer(lawDistinct); +//// } +//// +//// //工程接口人 +//// String interfaceString = projectRelatedPersonnel.getEngineeringInterfacePerson(); +//// //去重 +//// if(StringUtils.isNotBlank(interfaceString)) { +//// List interfaceList = Arrays.asList(interfaceString.split(",")); +//// String interfaceDistinct = interfaceList.stream().distinct().collect(Collectors.joining(",")); +//// projectRelatedPersonnel.setEngineeringInterfacePerson(interfaceDistinct); +//// } +//// +////// 工程接口人 +//// String certificationString = projectRelatedPersonnel.getCertificationEngineer(); +//// //去重 +//// if(StringUtils.isNotBlank(certificationString)) { +//// List certificationList = Arrays.asList(certificationString.split(",")); +//// String certificationDistinct = certificationList.stream().distinct().collect(Collectors.joining(",")); +//// projectRelatedPersonnel.setCertificationEngineer(certificationDistinct); +//// } +//// +//// if (StringUtils.isBlank(data.getRemark())) {//数据库里备注是空的 +//// projectRelatedPersonnel.setRemark(projectRelatedPersonnel.getRemark()); +//// } else { +//// projectRelatedPersonnel.setRemark(""); +//// } +// +// Date now = new Date(); +// projectRelatedPersonnel.setUpdateTime(now); +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// projectRelatedPersonnel.setUpdateBy(sysUser.getUsername()); +// updateById(projectRelatedPersonnel); +// } +// } @Override public List queryCertificationEngineer(String projectId) { From 4e885dad1e3f835cccbb15bc3bd2b1882dfa91d9 Mon Sep 17 00:00:00 2001 From: qq787203167 <787203167@qq.com> Date: Fri, 13 May 2022 17:03:22 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=B8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processForm/handshakeProcess/index.vue | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue b/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue index 32b50142d..8ec29c682 100644 --- a/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue +++ b/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue @@ -51,6 +51,7 @@ import circulationHistory from '../../components/circulationHistory' import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage' import { mapGetters } from 'vuex' + import moment from 'moment' export default { name: 'handshakeProcess', @@ -229,11 +230,56 @@ if (res.success) { this.$message.success(this.$t('OperationSuccessful')) this.loading = false + if (value.flag == 0) { + if (this.queryProject.verifyDeliverableType) { + this.startProcessDesign(this.queryBy, 2) + } + if (this.queryProject.prehomoDeliverableType) { + this.startProcessDesign(this.queryBy, 3) + } + if (this.queryProject.designDeliverableType) { + this.startProcessDesign(this.queryBy, 4) + } + } else { + this.$router.push({ + path: '/ProcessCenter' + }) + } + } else { + this.loading = false + this.$message.warning(this.$t('operationFailed')) + } + }) + }, + startProcessDesign(value, num) { + let query = { + type: num, + msg: JSON.stringify(value).replace(/\"/g, '\'') + } + postAction('/workFlow/startProcess', query).then((res) => { + if (res.success) { + this.completeTaskDesign(value, res.result) + } + }) + }, + + completeTaskDesign(value, taskId) { + value.reviewResult = 'launch' + let operatorTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') + value.operatorTime = operatorTime + let query = { + userid: this.userInfo().id, + taskId: taskId, + json: JSON.stringify(value).replace(/\"/g, '\'') + } + postAction('/workFlow/completeTask', query).then((res) => { + if (res.success) { + this.visible = false + this.$message.success(this.$t('OperationSuccessful')) this.$router.push({ path: '/ProcessCenter' }) } else { - this.loading = false this.$message.warning(this.$t('operationFailed')) } }) From 627d2738b737768a255f778017c7d9e9d565b7c9 Mon Sep 17 00:00:00 2001 From: qq787203167 <787203167@qq.com> Date: Fri, 13 May 2022 17:25:39 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/projectManagement/components/listOfRegulations.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jero-web/src/views/projectManagement/components/listOfRegulations.vue b/jero-web/src/views/projectManagement/components/listOfRegulations.vue index ef69b9cca..af94e41c7 100644 --- a/jero-web/src/views/projectManagement/components/listOfRegulations.vue +++ b/jero-web/src/views/projectManagement/components/listOfRegulations.vue @@ -146,7 +146,7 @@ {{ $t('deleteLib') }} - 发起 + {{ text && text.length > 10 ? text.slice(0, 9) + '...' : text }}