diff --git a/jero-boot/db/蔚来标准sql/first_bug_fix_record.sql b/jero-boot/db/蔚来标准sql/first_bug_fix_record.sql index 22b43150c..8cd569344 100644 --- a/jero-boot/db/蔚来标准sql/first_bug_fix_record.sql +++ b/jero-boot/db/蔚来标准sql/first_bug_fix_record.sql @@ -8,3 +8,5 @@ ALTER TABLE `dummy_inventory_info` ADD COLUMN `verify_remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '验证备注' AFTER `applicable_supplement`, ADD COLUMN `prehomo_remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'pre备注' AFTER `verify_remark`, ADD COLUMN `design_remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设计备注' AFTER `prehomo_remark`; + +-- 2022年7月2日部署到正式环境 diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java index e34041afb..8f4b0c151 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/ProjectRoleEnum.java @@ -7,7 +7,7 @@ public enum ProjectRoleEnum { STUDIO_ENGINEER("studio工程师","0","R&H Studio"), REGULATI_ENGINEER("法规工程师","1","studio"), HOMOLOGATION_ENGINEER("认证工程师","2","homo"), - REGULATI_AND_HOMOLOGATION_ENGINEER("法规工程师/认证工程师","4",""), + REGULATI_AND_HOMOLOGATION_ENGINEER("法规工程师/认证工程师","4","Regulatory Engineer/Certification Engineer"), MANAGER("领导角色","11","R&H Manager"), ADMIN("系统管理员","12","admin"), ; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java index e6344e7f8..704c077f0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLawsInventoryEOController.java @@ -443,9 +443,9 @@ public class ProjectLawsInventoryEOController extends JeroController> getRoleByUserId(String projectLibraryId) { + public Result> getRoleByUserId(String projectLibraryId,String cut) { Result> result = new Result<>(); - List list = projectLawsInventoryEOService.getRoleByUserId(projectLibraryId); + List list = projectLawsInventoryEOService.getRoleByUserId(projectLibraryId,cut); if(list==null||list.size()<=0) { result.error500("未找到角色信息"); }else { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java index a7d172da4..9b90ffa39 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java @@ -107,4 +107,5 @@ public class ProjectTaskInventoryFeedbackEO implements Serializable { @ApiModelProperty(value = "序号") private String serialNumber; + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/InventoryAffirmStatusEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/InventoryAffirmStatusEnum.java index b44f8662c..3978f6c87 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/InventoryAffirmStatusEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/InventoryAffirmStatusEnum.java @@ -16,6 +16,11 @@ public enum InventoryAffirmStatusEnum { LIST_TO_CONFIRM("待确认","List to confirm"), ACCEPTED("接受","Accepted"), REJECTED("拒绝","Rejected"), + + REG_ENG_TO_CONFIRM("法规工程师待确认","To be confirmed by Reg Eng."), + HOMO_ENG_TO_CONFIRM("认证工程师待确认","To be confirmed by Homo Eng."), + REG_ENG_REJECTED("法规工程师拒绝 ","Reg Eng. rejected"), + HOMO_ENG_REJECTED("认证工程师拒绝 ","Homo Eng. rejected"), ; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectRoleEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectRoleEnum.java index 4f6ee04d2..e51aac31f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectRoleEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectRoleEnum.java @@ -1,30 +1,35 @@ package com.jero.modules.project.enums; +import com.jero.common.constant.enums.CutEnum; +import com.jero.modules.system.util.StringUtils; + /** * 项目角色枚举类 */ public enum ProjectRoleEnum { - STUDIO_ENGINEER("studio工程师","0"), - REGULATI_ENGINEER("法规工程师","1"), - HOMOLOGATION_ENGINEER("认证工程师","2"), - ENGINEERING_INTERFACE_PERSON("工程接口人","3"), - REGULATI_AND_HOMOLOGATION_ENGINEER("法规与认证工程师","4"), - DESIGNINITIATOR("设计符合性确认-发起人","5"), - DESIGNDUTY("设计符合性确认-责任人","6"), - PREHOMOINITIATOR("prehomo确认-发起人","7"), - PREHOMODUTY("prehomo确认-责任人","8"), - VERIFYINITIATOR("验证符合性确认-发起人","9"), - VERIFYDUTY("验证符合性确认-责任人","10"), - MANAGER("验证符合性确认-责任人","11"), - ADMIN("系统管理员","12"), + STUDIO_ENGINEER("studio工程师","0","R&H Studio"), + REGULATI_ENGINEER("法规工程师","1","Regulatory Engineer"), + HOMOLOGATION_ENGINEER("认证工程师","2","Certification Engineer"), + ENGINEERING_INTERFACE_PERSON("工程接口人","3","Engineering interface person"), + REGULATI_AND_HOMOLOGATION_ENGINEER("法规与认证工程师","4","Regulatory and certification engineer"), + DESIGNINITIATOR("设计符合性确认-发起人","5",""), + DESIGNDUTY("设计符合性确认-责任人","6",""), + PREHOMOINITIATOR("prehomo确认-发起人","7",""), + PREHOMODUTY("prehomo确认-责任人","8",""), + VERIFYINITIATOR("验证符合性确认-发起人","9",""), + VERIFYDUTY("验证符合性确认-责任人","10",""), + MANAGER("验证符合性确认-责任人","11",""), + ADMIN("系统管理员","12",""), ; String name; String value; + String enName; - private ProjectRoleEnum(String name, String value) { + private ProjectRoleEnum(String name, String value,String enName) { this.name = name; this.value = value; + this.enName = enName; } public String getName() { @@ -43,11 +48,23 @@ public enum ProjectRoleEnum { this.value = value; } - public static String getTextByValue(String value) { + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public static String getTextByValue(String value,String cut) { ProjectRoleEnum[] values = values(); for (ProjectRoleEnum projectRoleEnum : values) { if (projectRoleEnum.value.equals(value)) { - return projectRoleEnum.name; + if(StringUtils.equals(cut, CutEnum.CN.getValue())){ + return projectRoleEnum.name; + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + return projectRoleEnum.enName; + } } } return null; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java index 61e4e02af..5d5161245 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/IProjectLawsInventoryEOService.java @@ -148,5 +148,5 @@ public interface IProjectLawsInventoryEOService extends IService expediting(JSONObject json); - List getRoleByUserId(String projectLibraryId); + List getRoleByUserId(String projectLibraryId,String cut); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index b352000fd..dca30e633 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -1015,15 +1015,78 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl() + .lambda().eq(ProjectLibraryBase::getId, projectLibraryId)); + + QueryWrapper projectNameInfoEOQueryWrapper = new QueryWrapper<>(); + projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId()); + ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper); + + QueryWrapper projectYearInfoEOQueryWrapper = new QueryWrapper<>(); + projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId()); + ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper); //TODO 切换成枚举,不要在代码里出现魔数 if(StringUtils.equals(operatorType, OperatorTypeEnum.INVENTORY_AFFIRM.getValue())){ String ids = json.getString("ids"); @@ -1224,8 +1297,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectLawsInventoryEOS = this.baseMapper.selectList(queryWrapper); - ProjectLibraryBase projectLibraryBase = projectLibraryBaseMapper.selectOne(new QueryWrapper() - .lambda().eq(ProjectLibraryBase::getId, projectLibraryId)); + List userIdList = new ArrayList<>(); for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOS) { @@ -1254,13 +1326,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectNameInfoEOQueryWrapper = new QueryWrapper<>(); - projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId()); - ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper); - QueryWrapper projectYearInfoEOQueryWrapper = new QueryWrapper<>(); - projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId()); - ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper); //消息内容 String msgContentEN = currentUser.getUsername() + " initiated the regulation list confirmation for " @@ -1378,9 +1444,94 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl" + "Jump link" + ""; + String contentInfo = msgContentEN + " " + href; + Map sendMessageMap = new HashMap<>(); + sendMessageMap.put("hrefFeishu",hrefFeishu); + sendMessageMap.put("contentInfo",contentInfo); + + //发送消息 + List userIdList = new ArrayList<>(); + userIdList.add(projectLibraryBase.getStudioEngineer()); + sendMessage(msgContentEN,userIdList,projectLibraryId,sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK); + + } + if(isProjectRole == Integer.parseInt(ProjectRoleEnum.HOMOLOGATION_ENGINEER.getValue()) || isProjectRole == Integer.parseInt(ProjectRoleEnum.REGULATI_AND_HOMOLOGATION_ENGINEER.getValue())){ + msgContentEN = "The regulation list confirmation of "+projectLawsInventoryEO.getSerialNumber() + " for " + + projectNameInfoEO.getProjectName() +" is rejected by " + currentUser.getUsername() +". Please check and address it in a timely manner."; + + // 飞书消息封装 + FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); + feishuMsgVo.setContent("Hello! This task is rejected by "+currentUser.getUsername()+". Please check and address it in a timely manner."); + feishuMsgVo.setTaskType("Regulation List Confirmation"); + feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber()); + feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); + feishuMsgVo.setInitiator(currentUser.getUsername()); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate())); + + //飞书跳转链接 + String hrefFeishu = backUrl + + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + + projectLibraryId + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType() + + "&projectName=" + projectNameInfoEO.getProjectName() + "-" + + projectYearNameInfoEO.getYearName() + + "&targetMarket=" + projectLibraryBase.getTargetMarket(); + //系统内部跳转链接 + String href = "" + "Jump link" + ""; + String contentInfo = msgContentEN + " " + href; + Map sendMessageMap = new HashMap<>(); + sendMessageMap.put("hrefFeishu",hrefFeishu); + sendMessageMap.put("contentInfo",contentInfo); + + //发送消息 + List userIdList = new ArrayList<>(); + userIdList.add(projectLibraryBase.getStudioEngineer()); + sendMessage(msgContentEN,userIdList,projectLibraryId,sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK); } } @@ -1388,6 +1539,48 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl" + "Jump link" + ""; + String contentInfo = msgContentEN + " " + href; + Map sendMessageMap = new HashMap<>(); + sendMessageMap.put("hrefFeishu",hrefFeishu); + sendMessageMap.put("contentInfo",contentInfo); + + //发送消息 + List userIdList = new ArrayList<>(); + userIdList.add(projectLibraryBase.getStudioEngineer()); + sendMessage(msgContentEN,userIdList,projectLibraryId,sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK); + } } } }else { @@ -2176,8 +2369,13 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl attestationRank = sysDictItemMapper.selectItemsByDictCode(ProjectInventoryFieldEnum.ATTESTATION_RANK.getValue()); - String attestationRankName = attestationRank.stream().filter(e -> e.getItemValue().equals(projectLawsInventoryEO.getAttestationRank())).map(f -> f.getItemText()).collect(Collectors.joining(",")); - projectLawsInventoryEO.setAttestationRank(attestationRankName); + List attestationRankList = Arrays.asList(projectLawsInventoryEO.getAttestationRank().split(",")); + StringBuilder attestationRankBuilder = new StringBuilder(); + for (String midAttestationRank : attestationRankList) { + String dutyTerritoryName = attestationRank.stream().filter(e -> e.getItemValue().equals(midAttestationRank)).map(f -> f.getItemText()).collect(Collectors.joining(",")); + attestationRankBuilder.append(dutyTerritoryName).append(","); + } + projectLawsInventoryEO.setAttestationRank(attestationRankBuilder.substring(0, attestationRankBuilder.toString().length() - 1)); } else { projectLawsInventoryEO.setAttestationRank("空"); } @@ -2538,13 +2736,17 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl attestationRank = sysDictItemMapper.selectItemsByDictCode(ProjectInventoryFieldEnum.ATTESTATION_RANK.getValue()); - String attestationRankName = attestationRank.stream().filter(e -> e.getItemValue().equals(projectLawsInventoryEO.getAttestationRank())).map(f -> f.getItemText()).collect(Collectors.joining(",")); - projectLawsInventoryEO.setAttestationRank(attestationRankName); + List attestationRankList = Arrays.asList(projectLawsInventoryEO.getAttestationRank().split(",")); + StringBuilder attestationRankBuilder = new StringBuilder(); + for (String midAttestationRank : attestationRankList) { + String dutyTerritoryName = attestationRank.stream().filter(e -> e.getItemValue().equals(midAttestationRank)).map(f -> f.getItemText()).collect(Collectors.joining(",")); + attestationRankBuilder.append(dutyTerritoryName).append(","); + } + projectLawsInventoryEO.setAttestationRank(attestationRankBuilder.substring(0, attestationRankBuilder.toString().length() - 1)); } else { projectLawsInventoryEO.setAttestationRank("null"); } - //责任领域 if (StringUtils.isNotBlank(projectLawsInventoryEO.getDutyTerritory())) { List dutyTerritory = sysDictItemMapper.selectItemsByDictCode(ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); @@ -3117,8 +3319,14 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl getRoleByUserId(String projectLibraryId) { + public List getRoleByUserId(String projectLibraryId,String cut) { List sysRoles = new LinkedList<>(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); //项目详情中取R&H Studio和认证工程师 @@ -6095,7 +6314,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl manager = roleList.stream().filter(e -> com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getCode().equals(e.getRoleCode())).collect(Collectors.toList()); List admin = roleList.stream().filter(e -> com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getCode().equals(e.getRoleCode())).collect(Collectors.toList()); - if (manager.size() != 0) { - manager.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getValue()); - sysRoles.addAll(manager); - } - if (admin.size() != 0) { - admin.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getValue()); - sysRoles.addAll(admin); + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + if (manager.size() != 0) { + manager.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getValue()); + sysRoles.addAll(manager); + } + if (admin.size() != 0) { + admin.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getValue()); + sysRoles.addAll(admin); + } + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + if (manager.size() != 0) { + manager.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getCode()); + manager.get(0).setRoleName(com.jero.modules.system.enums.ProjectRoleEnum.MANAGER.getCode()); + sysRoles.addAll(manager); + } + if (admin.size() != 0) { + admin.get(0).setRoleCode(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getCode()); + admin.get(0).setRoleName(com.jero.modules.system.enums.ProjectRoleEnum.ADMIN.getCode()); + sysRoles.addAll(admin); + } } + } return sysRoles; } 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 b9108ffba..455dd593e 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 @@ -845,23 +845,38 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl可以 - 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)) { - //除了责任领域,其他的可以全为空->可以 + if(StringUtils.isBlank(lawEngineerName)){ projectRelatedPersonnel.setLawEngineerName(""); - projectRelatedPersonnel.setEngineeringInterfacePersonName(""); - projectRelatedPersonnel.setCertificationEngineerName(""); - }else {//除了责任领域,备注,有一个为空都报错 - if(CutEnum.CN.getValue().equals(cut)){ - throw new JeroBootException("法规工程师、工程接口人、认证工程师三个为必填字段.请检查第 "+ (i+1) + "行"); - }else{ - throw new JeroBootException("Regulation Engineer,Engineering Interface and Homologation Engineer are required fields..Please check line" + (i+1)); - } + }else{ + projectRelatedPersonnel.setLawEngineerName(lawEngineerName); } + if(StringUtils.isBlank(engineeringInterfacePersonName)){ + projectRelatedPersonnel.setEngineeringInterfacePersonName(""); + }else{ + projectRelatedPersonnel.setEngineeringInterfacePersonName(engineeringInterfacePersonName); + } + if(StringUtils.isBlank(certificationEngineerName)){ + projectRelatedPersonnel.setCertificationEngineerName(""); + }else{ + projectRelatedPersonnel.setCertificationEngineerName(certificationEngineerName); + } +// //除了责任领域全有值->可以 +// 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("Regulation Engineer,Engineering Interface and Homologation Engineer are required fields..Please check line" + (i+1)); +// } +// } //导入的备注为数字,被识别成小数点后一位 Cell remarkCell = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryFeedbackEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryFeedbackEOServiceImpl.java index 57113bcd0..6041bbcbf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryFeedbackEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryFeedbackEOServiceImpl.java @@ -1,27 +1,31 @@ package com.jero.modules.project.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.system.vo.LoginUser; -import com.jero.modules.project.entity.FeedbackHistory; -import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; -import com.jero.modules.project.entity.ProjectTaskInventoryFeedbackEO; +import com.jero.modules.feishu.vo.FeishuMsgVo; +import com.jero.modules.project.entity.*; import com.jero.modules.project.enums.FeedBackHistoryDataStatusEnum; +import com.jero.modules.project.enums.JumpLinkEnum; import com.jero.modules.project.mapper.FeedbackHistoryMapper; import com.jero.modules.project.mapper.ProjectTaskInventoryDetailEOMapper; import com.jero.modules.project.mapper.ProjectTaskInventoryFeedbackEOMapper; -import com.jero.modules.project.service.IProjectTaskInventoryFeedbackEOService; +import com.jero.modules.project.service.*; +import com.jero.modules.project.util.SendMessageUtils; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum; +import com.jero.modules.wkflow.enums.FlowTypeEnum; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; 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 java.text.SimpleDateFormat; -import java.util.List; -import java.util.Date; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -41,6 +45,24 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl sysUserQueryWrapper = new QueryWrapper<>(); + sysUserQueryWrapper.lambda().eq(SysUser::getUsername,projectTaskInventoryFeedbackEO.getCreateBy()); + List sysUserList = this.sysUserService.list(sysUserQueryWrapper); + if (CollectionUtils.isNotEmpty(sysUserList)) { + List userIdList = sysUserList.stream().map(SysUser::getId).distinct().collect(Collectors.toList()); + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO = this.projectTaskInventoryDetailEOMapper.selectOne( + new QueryWrapper().lambda().eq(ProjectTaskInventoryDetailEO::getId, projectTaskInventoryFeedbackEO.getProjectTaskInventoryId()) + ); + + ProjectLawsInventoryEO projectLawsInventoryEO = this.projectLawsInventoryEOService.getOne( + new QueryWrapper().lambda().eq(ProjectLawsInventoryEO::getId, projectTaskInventoryDetailEO.getProjectTaskInventoryId()) + ); + + ProjectLibraryBase projectLibraryBaseInfo = this.projectLibraryBaseService.getOne( + new QueryWrapper().lambda().eq(ProjectLibraryBase::getId, projectLawsInventoryEO.getProjectLibraryId()) + ); + + ProjectNameInfoEO projectNameInfoEO = this.projectNameInfoEOService.getOne( + new QueryWrapper().lambda().eq(ProjectNameInfoEO::getId, projectLibraryBaseInfo.getProjectNameId()) + ); + + QueryWrapper projectYearInfoEOQueryWrapper = new QueryWrapper<>(); + projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBaseInfo.getYearNameId()); + ProjectYearNameInfoEO projectYearNameInfoEO = this.projectYearNameInfoEOService.getOne(projectYearInfoEOQueryWrapper); + + // 飞书消息封装 + FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); + + feishuMsgVo.setContent("Hello! " + currentUser.getUsername() + " has reply to your engineering deliverable information. Please check and address it in a timely manner."); + feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber()); + feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBaseInfo.getTargetMarket()); + feishuMsgVo.setInitiator(currentUser.getUsername()); + + //消息内容 + String msgContentEN = ""; + String flowType = projectTaskInventoryFeedbackEO.getFlowType(); + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has reply to your engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + " for design compliance confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Design Compliance Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getDesignDueDate())); + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has reply to your engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + " for Pre-Homo compliance confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Pre-Homo Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getPrehomoDueDate())); + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has reply to your engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + " for validation compliance confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Validation Compliance Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getVerifyDueDate())); + } + + //飞书跳转链接 + String hrefFeishu = backUrl + + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType() + + "&projectName=" + projectNameInfoEO.getProjectName() + "-" + + projectYearNameInfoEO.getYearName() + + "&targetMarket=" + projectLibraryBaseInfo.getTargetMarket(); + //系统内部跳转链接 + String href = "" + "Jump link" + ""; + String contentInfo = msgContentEN + " " + href; + Map sendMessageMap = new HashMap<>(); + sendMessageMap.put("hrefFeishu",hrefFeishu); + sendMessageMap.put("contentInfo",contentInfo); + + //发送消息 + SendMessageUtils.sendMessage(msgContentEN,userIdList,projectLibraryBaseInfo.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK); + } } /** @@ -193,6 +302,94 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProjectTaskInventoryDetailEO::getActiProcInstId,projectTaskInventoryFeedbackEO.getActiProcInstId()); + queryWrapper.lambda().eq(ProjectTaskInventoryDetailEO::getFlowType,projectTaskInventoryFeedbackEO.getFlowType()); + queryWrapper.lambda().eq(ProjectTaskInventoryDetailEO::getTaskDefinitionKey, DesignComplianceNodeEnum.THE_RESPONSIBLE_PERSON_HANDLES_THE_TASK.getKey()); + List projectTaskInventoryDetailEOS = this.projectTaskInventoryDetailEOMapper.selectList(queryWrapper); + if(CollectionUtils.isNotEmpty(projectTaskInventoryDetailEOS)){ + List userIdList = projectTaskInventoryDetailEOS.stream().map(ProjectTaskInventoryDetailEO::getUserId).distinct().collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(userIdList)){ + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + + ProjectLawsInventoryEO projectLawsInventoryEO = this.projectLawsInventoryEOService.getOne( + new QueryWrapper().lambda().eq(ProjectLawsInventoryEO::getId, projectTaskInventoryDetailEOS.get(0).getProjectTaskInventoryId()) + ); + + ProjectLibraryBase projectLibraryBaseInfo = this.projectLibraryBaseService.getOne( + new QueryWrapper().lambda().eq(ProjectLibraryBase::getId, projectLawsInventoryEO.getProjectLibraryId()) + ); + + ProjectNameInfoEO projectNameInfoEO = this.projectNameInfoEOService.getOne( + new QueryWrapper().lambda().eq(ProjectNameInfoEO::getId, projectLibraryBaseInfo.getProjectNameId()) + ); + + QueryWrapper projectYearInfoEOQueryWrapper = new QueryWrapper<>(); + projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBaseInfo.getYearNameId()); + ProjectYearNameInfoEO projectYearNameInfoEO = this.projectYearNameInfoEOService.getOne(projectYearInfoEOQueryWrapper); + + // 飞书消息封装 + FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); + + feishuMsgVo.setContent("Hello! " + currentUser.getUsername() + " has submitted the engineering deliverable information. Please check and address it in a timely manner."); + feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber()); + feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBaseInfo.getTargetMarket()); + feishuMsgVo.setInitiator(currentUser.getUsername()); + + //消息内容 + String msgContentEN = ""; + String flowType = projectTaskInventoryFeedbackEO.getFlowType(); + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has submitted the engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + "for design compliance confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Design Compliance Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getDesignDueDate())); + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has submitted the engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + " for Pre-Homo confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Pre-Homo Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getPrehomoDueDate())); + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + msgContentEN = currentUser.getUsername() + " has submitted the engineering deliverable information of " + + projectLawsInventoryEO.getSerialNumber() + " in " + + projectNameInfoEO.getProjectName() + " for validation compliance confirmation. Please check and address it in time."; + + feishuMsgVo.setTaskType("Validation Compliance Confirmation"); + feishuMsgVo.setDueDate(sdf.format(projectLawsInventoryEO.getVerifyDueDate())); + } + + //飞书跳转链接 + String hrefFeishu = backUrl + + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType() + + "&projectName=" + projectNameInfoEO.getProjectName() + "-" + + projectYearNameInfoEO.getYearName() + + "&targetMarket=" + projectLibraryBaseInfo.getTargetMarket(); + //系统内部跳转链接 + String href = "" + "Jump link" + ""; + String contentInfo = msgContentEN + " " + href; + Map sendMessageMap = new HashMap<>(); + sendMessageMap.put("hrefFeishu",hrefFeishu); + sendMessageMap.put("contentInfo",contentInfo); + + //发送消息 + SendMessageUtils.sendMessage(msgContentEN,userIdList,projectLibraryBaseInfo.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK); + } + } } /** diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 3cc0b4441..420faa5b6 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -1068,4 +1068,8 @@ module.exports = { newNiONumber: 'Number', English: 'English', requiredParametersEmpty:'Required parameters cannot be empty', + PleaseTaskConfirmationRejected:'Please select the data whose list confirmation status is accepted and task confirmation status is not initiated or rejected', + theProjectContactEmpty:'The project contact person of cannot be empty', + pleaseSelectinitiatedOrRejected:'Please select the data whose list confirmation status is not initiated or rejected', + TheEngineerAndCertification:'The regulatory engineer and Certification Engineer of cannot be empty', } \ No newline at end of file diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index d477abc5a..451c6f549 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -681,7 +681,11 @@ module.exports = { listConfirmation: '清单确认', ListConfirmationDeadline: '清单确认截止时间', dataConfirmation: '请选择清单确认状态为未发起或拒绝的数据,以及法规工程师、认证工程师不为空', + pleaseSelectinitiatedOrRejected:'请选择清单确认状态为未发起或拒绝的数据', + TheEngineerAndCertification:'的法规工程师、认证工程师不能为空', taskDataConfirmation: '请选择清单确认状态为接受及任务确认状态为未发起或拒绝的数据,以及工程接口人不为空', + theProjectContactEmpty:'的工程接口人不能为空', + PleaseTaskConfirmationRejected:'请选择清单确认状态为接受及任务确认状态为未发起或拒绝的数据', pleaseSelectPersonFirst: '请先选择人员', onlyOnePersonCanBeSelected: '只能选择一个人员', overrule: '驳回', @@ -880,7 +884,8 @@ module.exports = { yellowSchedule: '黄:不符合/待追踪,有可接受的方案和时间表', greenRequirements: '绿:确认符合或满足当前要求', blueUndeterminedState: '蓝:未判断状态', - authenticationMessage: '认证消息', + authenticationMessage: '认证参数任务', + taskRegulationComplianceTask: '法规符合性任务', accept: '接受', refuse: '拒绝', taskTermination: '任务终止', diff --git a/jero-web/src/components/tools/UserMenu.vue b/jero-web/src/components/tools/UserMenu.vue index a52b3a8c9..959556614 100644 --- a/jero-web/src/components/tools/UserMenu.vue +++ b/jero-web/src/components/tools/UserMenu.vue @@ -44,8 +44,8 @@ - - + + welcome,{{ userInfo().username }} @@ -209,7 +209,7 @@ }, /* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ ...mapActions(['Logout']), - ...mapGetters(['nickname', 'avatar', 'userInfo']), + ...mapGetters(['username', 'avatar', 'userInfo']), getAvatar() { return getFileAccessHttpUrl(this.avatar()) }, diff --git a/jero-web/src/views/documentManage/tags/tabs/TagContent.vue b/jero-web/src/views/documentManage/tags/tabs/TagContent.vue index 0df58f3f4..bf0488485 100644 --- a/jero-web/src/views/documentManage/tags/tabs/TagContent.vue +++ b/jero-web/src/views/documentManage/tags/tabs/TagContent.vue @@ -259,7 +259,9 @@ }, hideModal() { this.form.dictName = this.form.dictName.trim() - this.form.description = this.form.description.trim() + if (this.form.description){ + this.form.description = this.form.description.trim() + } let params = { ...this.form } diff --git a/jero-web/src/views/processCenter/components/circulationHistory.vue b/jero-web/src/views/processCenter/components/circulationHistory.vue index d14ddadc7..29856b886 100644 --- a/jero-web/src/views/processCenter/components/circulationHistory.vue +++ b/jero-web/src/views/processCenter/components/circulationHistory.vue @@ -34,10 +34,10 @@ dataSource: [], loading: false, approvalResult: { - 0: this.$t('agree'), + 0: this.$t('accept'), 1: this.$t('disagree'), 2: this.$t('terminationProcess'), - 3: this.$t('issue') + 3: this.$t('inquiry') }, columns: [ { diff --git a/jero-web/src/views/processCenter/components/engineeringConfirmation.vue b/jero-web/src/views/processCenter/components/engineeringConfirmation.vue index b616e146d..5082b874a 100644 --- a/jero-web/src/views/processCenter/components/engineeringConfirmation.vue +++ b/jero-web/src/views/processCenter/components/engineeringConfirmation.vue @@ -509,7 +509,6 @@ distributionEngineerList: this.distributionEngineerList } postAction(this.url.DetailEOAdd, query).then((res) => { - if (res.success) { if (res.success) { this.confirmLoading = false this.getList() @@ -517,9 +516,8 @@ this.$message.success(this.$t('OperationSuccessful')) } else { this.confirmLoading = false - this.$message.warning(this.$t('operationFailed')) + this.$message.warning(res.message) } - } }) }, feedbackData(url, Action) { diff --git a/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue b/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue index acff4364e..fc760921f 100644 --- a/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue +++ b/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue @@ -93,11 +93,12 @@
- * + {{$t('Deliverables')}}
- + + {{ (formInline.fileId === 'null' || formInline.fileId === '' || diff --git a/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue b/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue index 68b7dca7e..f486e8b1c 100644 --- a/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue +++ b/jero-web/src/views/processCenter/processForm/handshakeProcess/index.vue @@ -195,17 +195,17 @@ this.$message.success(this.$t('OperationSuccessful')) if (this.$route.query.taskDefinitionKey == 'zrrjsrw' || this.$route.query.taskDefinitionKey == 'zrrqr') { if (value.flag == 0) { - if (this.queryProject.verifyRemark) { + if (this.queryProject.verifyDeliverableType) { this.startProcessDesign(this.queryBy, 4) } - if (this.queryProject.prehomoRemark) { + if (this.queryProject.prehomoDeliverableType) { this.startProcessDesign(this.queryBy, 3) } - if (this.queryProject.designRemark) { + if (this.queryProject.designDeliverableType) { this.startProcessDesign(this.queryBy, 2) } - if (!this.queryProject.verifyRemark && !this.queryProject.prehomoRemark && - !this.queryProject.designRemark) { + if (!this.queryProject.verifyDeliverableType && !this.queryProject.prehomoDeliverableType && + !this.queryProject.designDeliverableType) { setTimeout(() => { this.loading = false window.close() diff --git a/jero-web/src/views/projectManagement/ProjectDetails/index.vue b/jero-web/src/views/projectManagement/ProjectDetails/index.vue index b60174c35..bbbfdb147 100644 --- a/jero-web/src/views/projectManagement/ProjectDetails/index.vue +++ b/jero-web/src/views/projectManagement/ProjectDetails/index.vue @@ -90,7 +90,8 @@
- + @@ -137,7 +138,7 @@ isTrue: true, loading: false, isDisplay: true, - + areaOfResponsibilityList:{}, url: { logList: '/project/projectLawsInventoryLogEO/page', historicalVersionUrl: '', @@ -216,6 +217,8 @@ } }, textClick(num, name) { + this.areaOfResponsibilityList = {} + this.areaOfResponsibility = {} this.textTitle = name let textColor = document.getElementsByClassName('Virtual-detail-left-text-color') if (textColor && textColor.length > 0) { @@ -286,15 +289,20 @@ }) }, TaskListChange(item) { - this.areaOfResponsibility = item - this.textTitle = this.$t('taskList') + if (item.isListing && item.isListing == '1'){ + this.areaOfResponsibilityList = item + this.textTitle = this.$t('listOfRegulations') + }else{ + this.areaOfResponsibility = item + this.textTitle = this.$t('taskList') + } let textColor = document.getElementsByClassName('Virtual-detail-left-text-color') if (textColor && textColor.length > 0) { textColor[0].classList.remove('Virtual-detail-left-text-color') } let text = document.getElementsByClassName('Virtual-detail-left-text') for (let i = 0; i < text.length; i++) { - if (text[i].title == this.$t('taskList')) { + if (text[i].title == this.textTitle) { text[i].classList.add('Virtual-detail-left-text-color') } } diff --git a/jero-web/src/views/projectManagement/components/TaskList.vue b/jero-web/src/views/projectManagement/components/TaskList.vue index 68f508967..e1f9c7be6 100644 --- a/jero-web/src/views/projectManagement/components/TaskList.vue +++ b/jero-web/src/views/projectManagement/components/TaskList.vue @@ -321,6 +321,7 @@ DueDate: 'designDueDate', remarks: 'designRemark', projectName: this.$route.query.projectName, + targetMarket:this.$route.query.targetMarket, projectNameId: this.$route.query.projectNameId, primaryKeyId: val.designTaskDetailId, PersonChargeFeedback: val.designPersonChargeFeedback @@ -345,6 +346,7 @@ DueDate: 'prehomoDueDate', remarks: 'prehomoRemark', projectName: this.$route.query.projectName, + targetMarket:this.$route.query.targetMarket, projectNameId: this.$route.query.projectNameId, primaryKeyId: val.prehomoTaskDetailId, PersonChargeFeedback: val.prehomoPersonChargeFeedback @@ -369,6 +371,7 @@ DueDate: 'verifyDueDate', remarks: 'verifyRemark', projectName: this.$route.query.projectName, + targetMarket:this.$route.query.targetMarket, projectNameId: this.$route.query.projectNameId, primaryKeyId: val.verifyTaskDetailId, PersonChargeFeedback: val.verifyPersonChargeFeedback diff --git a/jero-web/src/views/projectManagement/components/listEditModel.vue b/jero-web/src/views/projectManagement/components/listEditModel.vue index 95a4009af..3eed26d00 100644 --- a/jero-web/src/views/projectManagement/components/listEditModel.vue +++ b/jero-web/src/views/projectManagement/components/listEditModel.vue @@ -46,7 +46,7 @@
@@ -55,86 +55,100 @@
- WVTA ID + {{$t('applicableSupplement')}}
- + - -
-
- - - -
-
- {{$t('correspondingStandard')}} -
- - - -
-
- -
-
- {{$t('implementationCategory')}} -
- - - -
-
-
- - -
-
- {{$t('vehicleInProductionDate')}} -
- - - -
-
- -
-
- {{$t('ImplementationDate')}} -
- - + :disabled="formInline.roleCodeIndex == 0 ? false : true" + v-model="formInline.applicableSupplement" + :placeholder="$t('PleaseEnter')+$t('applicableSupplement')"/>
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -144,7 +158,8 @@
@@ -154,13 +169,14 @@
- * + * {{$t('certificationLevel')}}
@@ -172,24 +188,24 @@
- * + * {{$t('areaOfResponsibility')}}
- +
- * + * {{$t('regulatoryEngineer')}}
@@ -197,7 +213,7 @@ class="box-input" :getPopupContainer="triggerNode=> triggerNode.parentNode" allowClear - :disabled="formInline.roleCode == 0 ? false : true" + :disabled="formInline.roleCodeIndex == 0 ? false : true" v-model="formInline.regulationOwnerId"> - +
- * + * {{$t('certifiedEngineer')}}
@@ -223,7 +239,7 @@ class="box-input" allowClear :getPopupContainer="triggerNode=> triggerNode.parentNode" - :disabled="formInline.roleCode == 0 ? false : true" + :disabled="formInline.roleCodeIndex == 0 ? false : true" v-model="formInline.homologationEngineerId">
- * + * {{$t('engineeringInterfacePerson')}}
@@ -247,7 +263,7 @@ class="box-input" allowClear :getPopupContainer="triggerNode=> triggerNode.parentNode" - :disabled="formInline.roleCode == 0 ? false : true" + :disabled="formInline.roleCodeIndex == 0 ? false : true" v-model="formInline.engineeringInterfacePerson"> - -
-
- {{$t('zoneOfApplication')}} -
- - - - - - -
-
- -
-
- {{$t('applicableSupplement')}} -
- - - -
-
+ + + + + + + + + + + + + + + + +
- - -
-
- {{$t('remarks')}} -
- - - -
-
-
-
+ + + + + + + + + + + + + + + + +
 {{$t('confirmationOfDesignConformity')}}
- +
@@ -325,7 +335,6 @@ tree-node-filter-prop="title" v-model="formInline.designDeliverableType" :maxTagCount="1" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.designDeliverableType ? true : false" :getPopupContainer="triggerNode=> triggerNode.parentNode" class="box-input" style="width: 100%" @@ -349,7 +358,6 @@
{{ (formInline.designDeliverableTemplate === 'null' || formInline.designDeliverableTemplate === '' || formInline.designDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles') @@ -359,7 +367,11 @@
- +
@@ -368,7 +380,7 @@
- +
@@ -435,13 +450,16 @@ format="YYYY-MM-DD" :getCalendarContainer="(trigger) => trigger.parentNode" v-model="formInline.designDueDate" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.designDueDate ? true : false" style="width: 100%"/>
- +
@@ -452,16 +470,23 @@
-
+
 {{$t('PrehomoConfirmation')}}
- +
@@ -473,7 +498,6 @@ tree-node-filter-prop="title" v-model="formInline.prehomoDeliverableType" :maxTagCount="1" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.prehomoDeliverableType ? true : false" :getPopupContainer="triggerNode=> triggerNode.parentNode" class="box-input" style="width: 100%" @@ -498,7 +522,6 @@
{{ (formInline.prehomoDeliverableTemplate === 'null' || formInline.prehomoDeliverableTemplate === '' || @@ -509,7 +532,11 @@
- +
@@ -518,7 +545,7 @@
- +
@@ -585,13 +615,16 @@ format="YYYY-MM-DD" :getCalendarContainer="(trigger) => trigger.parentNode" v-model="formInline.prehomoDueDate" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.prehomoDueDate ? true : false" style="width: 100%"/>
- +
@@ -602,16 +635,23 @@
-
+
 {{$t('verificationAndConformityconfirmation')}}
- +
@@ -623,7 +663,6 @@ tree-node-filter-prop="title" v-model="formInline.verifyDeliverableType" :maxTagCount="1" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.verifyDeliverableType ? true : false" :getPopupContainer="triggerNode=> triggerNode.parentNode" class="box-input" style="width: 100%" @@ -648,7 +687,6 @@
{{ (formInline.verifyDeliverableTemplate === 'null' || formInline.verifyDeliverableTemplate === '' || formInline.verifyDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles') @@ -658,7 +696,11 @@
- +
@@ -670,7 +712,7 @@ class="box-input" allowClear :getPopupContainer="triggerNode=> triggerNode.parentNode" - :disabled="verifyInitiatorIdDisabled" + :disabled="formInline.roleCodeIndex == 0 ? false : true" v-model="formInline.verifyInitiatorId"> - +
@@ -734,13 +779,16 @@ format="YYYY-MM-DD" :getCalendarContainer="(trigger) => trigger.parentNode" v-model="formInline.verifyDueDate" - :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.verifyDueDate ? true : false" style="width: 100%"/>
- +
@@ -751,7 +799,6 @@
@@ -773,6 +820,7 @@ import { getAction, postAction, putAction } from '@/api/manage' import uploadFile from '@/components/uploadFile/file' import moment from 'moment' + import { mapGetters } from 'vuex' export default { name: 'listEditModel', @@ -855,13 +903,16 @@ prehomoDutyIdDisabled: false, verifyDutyIdDisabled: false, verifyInitiatorIdDisabled: false, - DeliverableTreeList: [] + DeliverableTreeList: [], + userInfoQuery:{}, } }, mounted() { this.getDeliverableTree() + this.userInfoQuery = this.userInfo() }, methods: { + ...mapGetters(['userInfo']), getDeliverableTree() { getAction('/sys/category/getDeliverableTree', {}).then((res) => { if (res.success) { @@ -908,36 +959,22 @@ }) }, getDis(val) { - if (val.taskAffirmStatus != 'Not started' && !val.designInitiatorId) { + if (val.taskAffirmStatus != 'Not started') { this.designInitiatorDisabled = true } else if (val.roleCode == 0) { this.designInitiatorDisabled = false } else { this.designInitiatorDisabled = true } - if (val.taskAffirmStatus != 'Not started' && !val.designDutyId) { - this.designDutyIdDisabled = true - } else if (val.roleCode == 0) { - this.designDutyIdDisabled = false - } else { - this.designDutyIdDisabled = true - } - if (val.taskAffirmStatus != 'Not started' && !val.prehomoInitiatorId) { + if (val.taskAffirmStatus != 'Not started') { this.prehomoInitiatorIdDisabled = true } else if (val.roleCode == 0) { this.prehomoInitiatorIdDisabled = false } else { this.prehomoInitiatorIdDisabled = true } - if (val.taskAffirmStatus != 'Not started' && !val.prehomoDutyId) { - this.prehomoDutyIdDisabled = true - } else if (val.roleCode == 0) { - this.prehomoDutyIdDisabled = false - } else { - this.prehomoDutyIdDisabled = true - } - if (val.taskAffirmStatus != 'Not started' && !val.verifyDutyId) { + if (val.taskAffirmStatus != 'Not started') { this.verifyDutyIdDisabled = true } else if (val.roleCode == 0) { this.verifyDutyIdDisabled = false @@ -945,13 +982,6 @@ this.verifyDutyIdDisabled = true } - if (val.taskAffirmStatus != 'Not started' && !val.verifyInitiatorId) { - this.verifyInitiatorIdDisabled = true - } else if (val.roleCode == 0) { - this.verifyInitiatorIdDisabled = false - } else { - this.verifyInitiatorIdDisabled = true - } }, getProject(row, res, callback) { //设计符合性确认-发起人 diff --git a/jero-web/src/views/projectManagement/components/listOfRegulations.vue b/jero-web/src/views/projectManagement/components/listOfRegulations.vue index b8ad627a7..8d548556f 100644 --- a/jero-web/src/views/projectManagement/components/listOfRegulations.vue +++ b/jero-web/src/views/projectManagement/components/listOfRegulations.vue @@ -161,7 +161,11 @@ > {{ $t('edit') }} @@ -383,6 +387,7 @@ export default { name: 'listOfRegulations', + props:['areaOfResponsibilityList'], components: { ImportFile, listAddModel, @@ -826,7 +831,61 @@ value: 'engineeringInterfacePerson', valueName: 'engineeringInterfacePersonName', text: this.$t('engineeringInterfacePerson') - } + }, + { + type: '', + value: 'inventoryAffirmStatus', + text: this.$t('listConfirmationStatus'), + options:[ + { + value:'Not started', + key:'Not started', + label:this.$t('notLaunch'), + }, + { + value:'List to confirm', + key:'List to confirm', + label:this.$t('toBeConfirmed'), + }, + { + value:'Accepted', + key:'Accepted', + label:this.$t('accept'), + }, + { + value:'Rejected', + key:'Rejected', + label:this.$t('refuse'), + }, + ], + }, + { + type: '', + value: 'taskAffirmStatus', + text: this.$t('taskAffirmStatus'), + options:[ + { + value:'Not started', + key:'Not started', + label:this.$t('notLaunch'), + }, + { + value:'List to confirm', + key:'List to confirm', + label:this.$t('toBeConfirmed'), + }, + { + value:'Accepted', + key:'Accepted', + label:this.$t('accept'), + }, + { + value:'Rejected', + key:'Rejected', + label:this.$t('refuse'), + }, + ], + }, ], visibleRoleSwitching: false, confirmLoadingRoleSwitching: false, @@ -840,7 +899,9 @@ trigger: 'change' } ] - } + }, + detailedSuccessList: [], + detailedWarningList: [] } }, @@ -851,6 +912,9 @@ this.getRoleByUserId(() => { this.getAndUserId() }) + if (this.areaOfResponsibilityList && this.areaOfResponsibilityList.dutyTerritory) { + this.queryParam.dutyTerritory = this.areaOfResponsibilityList.dutyTerritory + } // } else { // this.isDisplay = false // } @@ -1195,6 +1259,16 @@ } }, edit(item) { + let roleCodeIndex + if (this.isDisplay) { + roleCodeIndex = 0 + } else { + roleCodeIndex = 4 + } + if (this.formInlineRoleSwitching.roleSwitchingCode == '11' || this.formInlineRoleSwitching.roleSwitchingCode == '12') { + roleCodeIndex = 0 + } + item.roleCodeIndex = roleCodeIndex this.$refs.editModelRef.editModel(JSON.parse(JSON.stringify(item))) }, deleteLib(val) { @@ -1279,28 +1353,41 @@ if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) let isTrue = true + this.detailedSuccessList = [] + this.detailedWarningList = [] for (let i = 0; i < this.dataSource.length; i++) { for (let j = 0; j < selectedRowKeys.length; j++) { if (this.dataSource[i].id == selectedRowKeys[j]) { if (this.dataSource[i].inventoryAffirmStatus == 'Not started' || this.dataSource[i].inventoryAffirmStatus == 'Rejected') { if (this.dataSource[i].homologationEngineerId && this.dataSource[i].regulationOwnerId) { - isTrue = true + this.detailedSuccessList.push(this.dataSource[i]) } else { - this.$message.warning(this.dataSource[i].serialNumber + this.$t('TheEngineerAndCertification')) - isTrue = false - return + this.detailedWarningList.push( < div > { this.dataSource[i].serialNumber + this.$t('TheEngineerAndCertification') } < /div>) + // this.$message.warning(this.dataSource[i].serialNumber + this.$t('TheEngineerAndCertification')) + // isTrue = false + // return } } else { - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseSelectinitiatedOrRejected')) - isTrue = false - return + this.detailedWarningList.push( < div > {this.dataSource[i].serialNumber + ',' + this.$t('pleaseSelectinitiatedOrRejected')} < /div>) + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseSelectinitiatedOrRejected')) + // isTrue = false + // return } } } } - if (isTrue) { + if (this.detailedSuccessList && this.detailedSuccessList.length > 0) { this.visible = true this.formInline = {} + } else { + let that = this + this.$warning({ + content: ( + < div > + { that.detailedWarningList } + < /div> + ) + }) } } else { this.$message.warning(this.$t('selectLeastOne')) @@ -1313,61 +1400,81 @@ if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) let isTrue = true + this.TaskSuccessList = [] + this.TaskWarningList = [] + let dataList = [] for (let i = 0; i < this.dataSource.length; i++) { for (let j = 0; j < selectedRowKeys.length; j++) { if (this.dataSource[i].id == selectedRowKeys[j]) { - if ((this.dataSource[i].taskAffirmStatus == 'Not started' || this.dataSource[i].taskAffirmStatus == 'Rejected') && - this.dataSource[i].inventoryAffirmStatus == 'Accepted') { - if (this.dataSource[i].engineeringInterfacePerson) { - if (this.dataSource[i].verifyRemark) { - if (this.dataSource[i].verifyDueDate && this.dataSource[i].verifyDutyId - && this.dataSource[i].verifyInitiatorId) { - isTrue = true - } else { - isTrue = false - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseConformityVerification')) - return - } - } - - if (this.dataSource[i].prehomoRemark) { - if (this.dataSource[i].prehomoDueDate && this.dataSource[i].prehomoDutyId - && this.dataSource[i].prehomoInitiatorId) { - isTrue = true - } else { - isTrue = false - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseConfirmedByPrehomo')) - return - } - } - - if (this.dataSource[i].designRemark) { - if (this.dataSource[i].designDueDate && this.dataSource[i].designDutyId - && this.dataSource[i].designInitiatorId) { - isTrue = true - } else { - isTrue = false - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseDesignConformityConfirmation')) - return - } - } - - } else { - isTrue = false - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('theProjectContactEmpty')) - return - } - } else { - isTrue = false - this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('PleaseTaskConfirmationRejected')) - return - } + dataList.push(this.dataSource[i]) } } } - if (isTrue) { + for (let i = 0; i < dataList.length; i++) { + if ((dataList[i].taskAffirmStatus == 'Not started' || dataList.taskAffirmStatus == 'Rejected') && + dataList[i].inventoryAffirmStatus == 'Accepted') { + if (dataList[i].engineeringInterfacePerson) { + if (dataList[i].verifyDeliverableType) { + if (dataList[i].verifyDueDate && dataList[i].verifyDutyId + && dataList[i].verifyInitiatorId) { + } else { + this.TaskWarningList.push( < div > { dataList[i].serialNumber + this.$t('pleaseConformityVerification') } < /div>) + continue + // isTrue = false + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseConformityVerification')) + // return + } + } + + if (dataList[i].prehomoDeliverableType) { + if (dataList[i].prehomoDueDate && dataList[i].prehomoDutyId + && dataList[i].prehomoInitiatorId) { + } else { + this.TaskWarningList.push( < div > { dataList[i].serialNumber + this.$t('pleaseConfirmedByPrehomo') } < /div>) + continue + // isTrue = false + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseConfirmedByPrehomo')) + // return + } + } + + if (dataList[i].designDeliverableType) { + if (dataList[i].designDueDate && dataList[i].designDutyId + && dataList[i].designInitiatorId) { + } else { + this.TaskWarningList.push( < div > { dataList[i].serialNumber + this.$t('pleaseDesignConformityConfirmation') } < /div>) + continue + // isTrue = false + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('pleaseDesignConformityConfirmation')) + // return + } + } + this.TaskSuccessList.push(dataList[i]) + } else { + this.TaskWarningList.push( < div > { dataList[i].serialNumber + this.$t('theProjectContactEmpty') } < /div>) + // isTrue = false + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('theProjectContactEmpty')) + // return + } + } else { + this.TaskWarningList.push( < div > { dataList[i].serialNumber + this.$t('PleaseTaskConfirmationRejected') } < /div>) + // isTrue = false + // this.$message.warning(this.dataSource[i].serialNumber + ',' + this.$t('PleaseTaskConfirmationRejected')) + // return + } + } + if (this.TaskSuccessList && this.TaskSuccessList.length > 0) { this.visible = true this.formInline = {} + } else { + let that = this + this.$warning({ + content: ( + < div > + { that.TaskWarningList } + < /div> + ) + }) } } else { this.$message.warning(this.$t('selectLeastOne')) @@ -1377,8 +1484,11 @@ handleOk() { this.$refs.ruleForm.validate(valid => { if (valid) { - let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) if (this.timeName == '清单') { + let selectedRowKeys = [] + this.detailedSuccessList.forEach(res => { + selectedRowKeys.push(res.id) + }) let query = { operatorType: 0, ids: selectedRowKeys.join(','), @@ -1397,26 +1507,34 @@ this.$message.warning(this.$t('operationFailed')) this.confirmLoading = false } + let that = this + if (this.detailedWarningList.length > 0) { + this.$warning({ + content: ( + < div > + { that.detailedWarningList } + < /div> + ) + }) + } + this.detailedSuccessList = [] + this.detailedWarningList = [] }) } else { - let index = 0 - for (let i = 0; i < this.dataSource.length; i++) { - for (let j = 0; j < selectedRowKeys.length; j++) { - if (this.dataSource[i].id == selectedRowKeys[j]) { - index++ - this.dataSource[i].taskAffirmDueDate = this.formInline.taskAffirmDueDate - Object.keys(this.dataSource[i]).forEach(res => { - if (this.dataSource[i][res] && this.dataSource[i][res] instanceof String) { - this.dataSource[i][res] = this.dataSource[i][res].replace(/\"/g, '“') - this.dataSource[i][res] = this.dataSource[i][res].replace(/\'/g, '‘') - } - }) - setTimeout(() => { - this.confirmLoading = true - this.startProcess(this.dataSource[i], index) - }, 500) - } - } + for (let i = 0; i < this.TaskSuccessList.length; i++) { + ((i) => { + this.TaskSuccessList[i].taskAffirmDueDate = this.formInline.taskAffirmDueDate + Object.keys(this.TaskSuccessList[i]).forEach(res => { + if (this.TaskSuccessList[i][res] && this.TaskSuccessList[i][res] instanceof String) { + this.TaskSuccessList[i][res] = this.TaskSuccessList[i][res].replace(/\"/g, '“') + this.TaskSuccessList[i][res] = this.TaskSuccessList[i][res].replace(/\'/g, '‘') + } + }) + setTimeout(() => { + this.confirmLoading = true + this.startProcess(this.TaskSuccessList[i], (i + 1)) + }, 500) + })(i) } } } @@ -1449,12 +1567,22 @@ } postAction('/workFlow/completeTask', query).then((res) => { if (res.success) { - if (index == this.selectedRowKeys.length) { + if (index == this.TaskSuccessList.length) { this.visible = false this.selectedRowKeys = [] this.$message.success(this.$t('OperationSuccessful')) this.confirmLoading = false this.getList() + let that = this + if (this.TaskWarningList.length > 0) { + this.$warning({ + content: ( + < div > + { that.TaskWarningList } + < /div> + ) + }) + } } } else { this.$message.warning(this.$t('operationFailed')) diff --git a/jero-web/src/views/projectManagement/components/responsibilityList.vue b/jero-web/src/views/projectManagement/components/responsibilityList.vue index 5a0faf9ef..45f070eb9 100644 --- a/jero-web/src/views/projectManagement/components/responsibilityList.vue +++ b/jero-web/src/views/projectManagement/components/responsibilityList.vue @@ -98,6 +98,9 @@ this.visible = false }, areaOfResponsibilityClick(item) { + if (this.queryParam.operatorType == 'queryListingToConfirmStatistics' || this.queryParam.operatorType == 'queryTaskToConfirmStatistics'){ + item.isListing = '1' + } this.$emit('responsibility', item) } }