diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEO.java index c587bb7a1..d4e9f4589 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEO.java @@ -63,34 +63,34 @@ public class AuthDummyInventoryInfoEO implements Serializable { private java.lang.String sysOrgCode; /**类别*/ - @Excel(name = "*类别", width = 15) + @Excel(name = "类别", width = 15) @ApiModelProperty(value = "类别") private java.lang.String category; /**检验项目*/ - @Excel(name = "*检验项目", width = 15) + @Excel(name = "检验项目", width = 15) @ApiModelProperty(value = "检验项目") private java.lang.String inspectionItem; /**配置项*/ - @Excel(name = "*配置项", width = 15) + @Excel(name = "配置项", width = 15) @ApiModelProperty(value = "配置项") private java.lang.String configItem; /**WVTA ID*/ - @Excel(name = "*WVTA ID", width = 15) + @Excel(name = "WVTA ID", width = 15) @ApiModelProperty(value = "WVTA ID") private java.lang.String wvtaId; /**标准编号*/ - @Excel(name = "*编号", width = 15) + @Excel(name = "编号", width = 15) @ApiModelProperty(value = "编号") private java.lang.String serialNumber; /**责任领域*/ @ApiModelProperty(value = "责任领域") private java.lang.String dutyTerritory; - @Excel(name = "*责任领域", width = 15) + @Excel(name = "责任领域", width = 15) @TableField(exist = false) // 责任领域名称 private String dutyTerritoryName; @@ -107,7 +107,7 @@ public class AuthDummyInventoryInfoEO implements Serializable { @ApiModelProperty(value = "交付物类型") private String deliverableType; @TableField(exist = false) - @Excel(name = "*交付物类型", width = 15) + @Excel(name = "交付物类型", width = 15) // 交付物类型名称 private String deliverableTypeName; // 交付物类型名称-英文 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEOEn.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEOEn.java index e7f53d6c4..4cbe07987 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEOEn.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/entity/AuthDummyInventoryInfoEOEn.java @@ -60,27 +60,27 @@ public class AuthDummyInventoryInfoEOEn implements Serializable { private String sysOrgCode; /**类别*/ - @Excel(name = "*Category", width = 15) + @Excel(name = "Category", width = 15) @ApiModelProperty(value = "类别") private String category; /**检验项目*/ - @Excel(name = "*Inspection Items", width = 15) + @Excel(name = "Inspection Items", width = 15) @ApiModelProperty(value = "检验项目") private String inspectionItem; /**配置项*/ - @Excel(name = "*Configuration Item", width = 15) + @Excel(name = "Configuration Item", width = 15) @ApiModelProperty(value = "配置项") private String configItem; /**WVTA ID*/ - @Excel(name = "*WVTA ID", width = 15) + @Excel(name = "WVTA ID", width = 15) @ApiModelProperty(value = "WVTA ID") private String wvtaId; /**标准编号*/ - @Excel(name = "*Number", width = 15) + @Excel(name = "Number", width = 15) @ApiModelProperty(value = "标准编号") private String serialNumber; @@ -88,7 +88,7 @@ public class AuthDummyInventoryInfoEOEn implements Serializable { @ApiModelProperty(value = "责任领域") private String dutyTerritory; @TableField(exist = false) - @Excel(name = "*Responsible Field", width = 15) + @Excel(name = "Responsible Field", width = 15) // 责任领域名称 private String dutyTerritoryName; /**责任领域名称-英文**/ @@ -100,11 +100,19 @@ public class AuthDummyInventoryInfoEOEn implements Serializable { @ApiModelProperty(value = "交付物") private String deliverable; + /**交付物模板*/ + @ApiModelProperty(value = "交付物模板") + private java.lang.String deliverableTemplate; + /**交付物模板名称**/ + @TableField(exist = false) + @Excel(name = "Deliverable Template", width = 40) + private String deliverableTemplateName; + /**交付物类型*/ @ApiModelProperty(value = "交付物类型") private String deliverableType; @TableField(exist = false) - @Excel(name = "*Deliverable Type", width = 15) + @Excel(name = "Deliverable Type", width = 15) // 交付物类型名称 private String deliverableTypeName; // 交付物类型名称-英文 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/service/impl/AuthDummyInventoryInfoEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/service/impl/AuthDummyInventoryInfoEOServiceImpl.java index 6fb49863b..0099558a7 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/service/impl/AuthDummyInventoryInfoEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/authDummy/service/impl/AuthDummyInventoryInfoEOServiceImpl.java @@ -27,9 +27,11 @@ import com.jero.modules.dummy.entity.DummyInventoryInfoEO; import com.jero.modules.dummy.enums.DummyInventoryBaseFieldEnum; import com.jero.modules.dummy.service.impl.DummyLogEOServiceImpl; import com.jero.modules.dummy.util.DeepCopyListUtil; +import com.jero.modules.dummy.util.ListDiff; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.project.entity.ProjectCertificationInventoryEO; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; import com.jero.modules.project.enums.ProjectInventoryFieldEnum; import com.jero.modules.split.common.FileUnZip; import com.jero.modules.system.entity.SysCategory; @@ -41,7 +43,9 @@ import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; import lombok.SneakyThrows; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRichTextString; @@ -62,6 +66,7 @@ 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.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import java.io.*; @@ -152,18 +157,371 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl"; - String enContentLog = username+" edited the “" + serialNumber + "” in the list:
"; - authDummyLogService.updateLog(contentLog, authDummyInventoryInfoEO.getAuthDummyInventoryBaseId(),CutEnum.CN.getValue()); - authDummyLogService.updateLog(enContentLog, authDummyInventoryInfoEO.getAuthDummyInventoryBaseId(),CutEnum.EN.getValue()); + String contentLog = username+"编辑了清单中的“" + serialNumber + "”:"; + String enContentLog = username+" edited the “" + serialNumber + "” in the list:"; +// authDummyLogService.updateLog(contentLog, authDummyInventoryInfoEO.getAuthDummyInventoryBaseId(),CutEnum.CN.getValue()); +// authDummyLogService.updateLog(enContentLog, authDummyInventoryInfoEO.getAuthDummyInventoryBaseId(),CutEnum.EN.getValue()); + + List infoEOList = new ArrayList<>(); + infoEOList.add(authDummyInventoryInfoEO); + List infoEOListCopy = new ArrayList<>(); + infoEOListCopy.add(authDummyInventoryInfoEOcopy); + + //查询数据库里原来的数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + List dataList = list(queryWrapper.eq("id", authDummyInventoryInfoEO.getId())); + List dataListCopy = DeepCopyListUtil.depCopy(dataList); + + + saveOrUpdate(authDummyInventoryInfoEO); + + + //翻译-中文 + translateData(infoEOList); + translateData(dataList); + //翻译-英文 + translateDataToEn(infoEOListCopy); + translateDataToEn(dataListCopy); + + //比对不同字段 + Map infoDiff = ListDiff.compareObject(dataList.get(0),authDummyInventoryInfoEO); + Map infoDiffEn = ListDiff.compareObject(dataListCopy.get(0),authDummyInventoryInfoEO); + + //设置更新log + setContentLog(infoDiff,contentLog,infoDiffEn,enContentLog,authDummyInventoryInfoEO.getAuthDummyInventoryBaseId()); } + private void setContentLog(Map infoDiff, String contentLog, Map infoDiffEn, String enContentLog, + String authDummyInventoryBaseId) { + //设置维护清单的修改消息 + if(MapUtils.isNotEmpty(infoDiff)){ + //类别 + if (StringUtils.isNotBlank(infoDiff.get("category"))) { + List list = Arrays.asList(infoDiff.get("category").split(",")); + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"类别" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("category"))){ + List listEn = Arrays.asList(infoDiffEn.get("category").split(",")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Category" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //检验项目 + if (StringUtils.isNotBlank(infoDiff.get("inspectionItem"))) { + List list = Arrays.asList(infoDiff.get("inspectionItem").split(",")); + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"检验项目" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("inspectionItem"))){ + List listEn = Arrays.asList(infoDiffEn.get("inspectionItem").split(",")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Inspection Items" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //配置项 + if (StringUtils.isNotBlank(infoDiff.get("configItem"))) { + List list = Arrays.asList(infoDiff.get("configItem").split(",")); + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"配置项" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("configItem"))){ + List listEn = Arrays.asList(infoDiffEn.get("configItem").split(",")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Configuration Item" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //WVTA ID + if (StringUtils.isNotBlank(infoDiff.get("wvtaId"))) { + List list = Arrays.asList(infoDiff.get("wvtaId").split(",")); + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"WVTA ID" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("wvtaId"))){ + List listEn = Arrays.asList(infoDiffEn.get("wvtaId").split(",")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"WVTA ID" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //责任领域 + if (StringUtils.isNotBlank(infoDiff.get("dutyTerritory"))) { + List list = Arrays.asList(infoDiff.get("dutyTerritory").split("\\|")); + + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"责任领域" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("dutyTerritory"))){ + List listEn = Arrays.asList(infoDiffEn.get("dutyTerritory").split("\\|")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Responsible Field" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //交付物类型 + if (StringUtils.isNotBlank(infoDiff.get("deliverableTypeName"))) { + List list = Arrays.asList(infoDiff.get("deliverableTypeName").split("\\|")); + + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"交付物类型" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("deliverableTypeNameEn"))){ + List listEn = Arrays.asList(infoDiffEn.get("deliverableTypeNameEn").split("\\|")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Deliverable Type" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + //交付物模板 + if (StringUtils.isNotBlank(infoDiff.get("deliverableTemplateName"))) { + List list = Arrays.asList(infoDiff.get("deliverableTemplateName").split("\\|")); + + if(list.size() > 1){ + String infoDiffOld = list.get(0); + String infoDiffNew = list.get(1); + contentLog += "'"+"交付物模板" + "'由" + infoDiffOld + "改为了" + infoDiffNew + "
"; + } + if(StringUtils.isNotBlank(infoDiffEn.get("deliverableTemplateName"))){ + List listEn = Arrays.asList(infoDiffEn.get("deliverableTemplateName").split("\\|")); + if(listEn.size() > 1){ + String infoDiffOldEn = listEn.get(0); + String infoDiffNewEn = listEn.get(1); + enContentLog += "'"+"Deliverable Template" +"' has been changed from " + infoDiffOldEn + " to " + infoDiffNewEn + "
"; + } + } + } + contentLog = contentLog.substring(0, contentLog.length()-1); + enContentLog =enContentLog.substring(0, enContentLog.length()-1); + authDummyLogService.updateLog(contentLog, authDummyInventoryBaseId,CutEnum.CN.getValue()); + authDummyLogService.updateLog(enContentLog, authDummyInventoryBaseId,CutEnum.EN.getValue()); + } + } + + private void translateDataToEn(List infoEOListCopy) { + for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : infoEOListCopy) { + //类别 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getCategory())){ + authDummyInventoryInfoEO.setCategory("null"); + } + //检验项目 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getInspectionItem())){ + authDummyInventoryInfoEO.setInspectionItem("null"); + } + //配置项 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getConfigItem())){ + authDummyInventoryInfoEO.setConfigItem("null"); + } + //WVTA ID + if (StringUtils.isBlank(authDummyInventoryInfoEO.getWvtaId())) { + authDummyInventoryInfoEO.setWvtaId("null"); + } + //责任领域 + if (StringUtils.isNotBlank(authDummyInventoryInfoEO.getDutyTerritory())) { + List dutyTerritory = sysDictItemMapper.selectItemsByDictCode(ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); + List dutyTerritoryList = Arrays.asList(authDummyInventoryInfoEO.getDutyTerritory().split(",")); + StringBuilder dutyTerritoryBuilder = new StringBuilder(); + for (String midDutyTerritory : dutyTerritoryList) { + String dutyTerritoryName = dutyTerritory.stream().filter(e -> e.getItemValue().equals(midDutyTerritory)).map(f -> f.getItemText()).collect(Collectors.joining(",")); + dutyTerritoryBuilder.append(dutyTerritoryName).append(","); + } + authDummyInventoryInfoEO.setDutyTerritory(dutyTerritoryBuilder.substring(0, dutyTerritoryBuilder.toString().length() - 1)); + } else { + authDummyInventoryInfoEO.setDutyTerritory("null"); + } + + //交付物类型 + Set deliverableTypeSet = new HashSet<>(); + List deliverableTypeIdList= new ArrayList<>(); + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableType())){ + deliverableTypeIdList = Arrays.asList(authDummyInventoryInfoEO.getDeliverableType().split(",")); + deliverableTypeSet.addAll(deliverableTypeIdList); + } + //树形结构 + List deliverableTypeList = new ArrayList<>(); + if (deliverableTypeSet.size() != 0) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SysCategory::getId, deliverableTypeSet); + deliverableTypeList = sysCategoryService.list(wrapper); + } + + if (deliverableTypeList.size() != 0 && StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableType())) { + StringBuilder deliverableBuilder = new StringBuilder(); + for(String id : deliverableTypeIdList){ + List designList = deliverableTypeList.stream().filter(e -> id.equals(e.getId())).collect(Collectors.toList()); + if (designList.size() != 0) { + deliverableBuilder.append(designList.get(0).getName() + ","); + } + } + String designName = null; + if (StringUtils.isNotBlank(deliverableBuilder)) { + designName = deliverableBuilder.substring(0, deliverableBuilder.length() - 1); + } + authDummyInventoryInfoEO.setDeliverableTypeName(designName); + } else { + authDummyInventoryInfoEO.setDeliverableTypeName("null"); + } + + //文件 + List deliverableList = new ArrayList<>(); + //交付物模板 + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableTemplate())){ + deliverableList.addAll(Arrays.asList(authDummyInventoryInfoEO.getDeliverableTemplate().split(","))); + }else { + authDummyInventoryInfoEO.setDeliverableTemplateName("null"); + } + List fileInfos = new ArrayList<>(); + if(deliverableList.size() != 0){ + fileInfos = iOSSFileService.getFileInfos(org.apache.commons.lang3.StringUtils.join(deliverableList, ",")); + } + //交付物类型模板 + if(fileInfos.size() != 0){ + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableTemplate())){ + String fileName = getFileName(authDummyInventoryInfoEO, fileInfos,authDummyInventoryInfoEO.getDeliverableTemplate()); + if(org.apache.commons.lang3.StringUtils.isNotBlank(fileName)){ + authDummyInventoryInfoEO.setDeliverableTemplateName(fileName); + } + } + } + } + } + + private void translateData(List infoEOList) { + for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : infoEOList) { + //类别 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getCategory())){ + authDummyInventoryInfoEO.setCategory("空"); + } + //检验项目 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getInspectionItem())){ + authDummyInventoryInfoEO.setInspectionItem("空"); + } + //配置项 + if(StringUtils.isBlank(authDummyInventoryInfoEO.getConfigItem())){ + authDummyInventoryInfoEO.setConfigItem("空"); + } + //WVTA ID + if (StringUtils.isBlank(authDummyInventoryInfoEO.getWvtaId())) { + authDummyInventoryInfoEO.setWvtaId("空"); + } + //责任领域 + if (StringUtils.isNotBlank(authDummyInventoryInfoEO.getDutyTerritory())) { + List dutyTerritory = sysDictItemMapper.selectItemsByDictCode(ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue()); + List dutyTerritoryList = Arrays.asList(authDummyInventoryInfoEO.getDutyTerritory().split(",")); + StringBuilder dutyTerritoryBuilder = new StringBuilder(); + for (String midDutyTerritory : dutyTerritoryList) { + String dutyTerritoryName = dutyTerritory.stream().filter(e -> e.getItemValue().equals(midDutyTerritory)).map(f -> f.getItemText()).collect(Collectors.joining(",")); + dutyTerritoryBuilder.append(dutyTerritoryName).append(","); + } + authDummyInventoryInfoEO.setDutyTerritory(dutyTerritoryBuilder.substring(0, dutyTerritoryBuilder.toString().length() - 1)); + } else { + authDummyInventoryInfoEO.setDutyTerritory("空"); + } + + //交付物类型 + Set deliverableTypeSet = new HashSet<>(); + List deliverableTypeIdList= new ArrayList<>(); + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableType())){ + deliverableTypeIdList = Arrays.asList(authDummyInventoryInfoEO.getDeliverableType().split(",")); + deliverableTypeSet.addAll(deliverableTypeIdList); + } + //树形结构 + List deliverableTypeList = new ArrayList<>(); + if (deliverableTypeSet.size() != 0) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SysCategory::getId, deliverableTypeSet); + deliverableTypeList = sysCategoryService.list(wrapper); + } + + if (deliverableTypeList.size() != 0 && StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableType())) { + StringBuilder deliverableBuilder = new StringBuilder(); + for(String id : deliverableTypeIdList){ + List designList = deliverableTypeList.stream().filter(e -> id.equals(e.getId())).collect(Collectors.toList()); + if (designList.size() != 0) { + deliverableBuilder.append(designList.get(0).getName() + ","); + } + } + String designName = null; + if (StringUtils.isNotBlank(deliverableBuilder)) { + designName = deliverableBuilder.substring(0, deliverableBuilder.length() - 1); + } + authDummyInventoryInfoEO.setDeliverableTypeName(designName); + } else { + authDummyInventoryInfoEO.setDeliverableTypeName("空"); + } + + //文件 + List deliverableList = new ArrayList<>(); + //交付物模板 + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableTemplate())){ + deliverableList.addAll(Arrays.asList(authDummyInventoryInfoEO.getDeliverableTemplate().split(","))); + }else { + authDummyInventoryInfoEO.setDeliverableTemplateName("空"); + } + List fileInfos = new ArrayList<>(); + if(deliverableList.size() != 0){ + fileInfos = iOSSFileService.getFileInfos(org.apache.commons.lang3.StringUtils.join(deliverableList, ",")); + } + //交付物类型模板 + if(fileInfos.size() != 0){ + if(StringUtils.isNotBlank(authDummyInventoryInfoEO.getDeliverableTemplate())){ + String fileName = getFileName(authDummyInventoryInfoEO, fileInfos,authDummyInventoryInfoEO.getDeliverableTemplate()); + if(org.apache.commons.lang3.StringUtils.isNotBlank(fileName)){ + authDummyInventoryInfoEO.setDeliverableTemplateName(fileName); + } + } + } + } + } + + private String getFileName(AuthDummyInventoryInfoEO authDummyInventoryInfoEO, List fileInfos, String deliverableTemplate) { + StringBuilder sb = new StringBuilder(); + for (String s : deliverableTemplate.split(",")) { + List collect = fileInfos.stream().filter(e -> s.equals(e.getId())).collect(Collectors.toList()); + if(collect.size() != 0){ + sb.append(collect.get(0).getFileName() + ","); + } + } + String sbStr = ""; + if(org.apache.commons.lang3.StringUtils.isNotBlank(sb)){ + sbStr = sb.substring(0, sb.length() - 1); + } + return sbStr; + } + /** * 通过id删除 * @@ -223,6 +581,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl queryList(AuthDummyInventoryInfoEO authDummyInventoryInfoEO,HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(authDummyInventoryInfoEO, req.getParameterMap()); + queryWrapper.orderByDesc("create_time"); List authDummyInventoryInfoEOList = this.list(queryWrapper); return authDummyInventoryInfoEOList; } @@ -515,9 +874,9 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl 1){ @@ -659,43 +1018,6 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl 1) { dataList.add(rowList); } @@ -736,6 +1058,44 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl 300){ - String message = ""; - if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){ - message = errorMsg + "WVTA ID不能超过300个字符, "; - }else{ - message = errorMsg + " The WVTA ID cannot contain more than 300 characters, "; - } - msgList.add(message); - } - } //类别 - if(StringUtils.isNotBlank(category)){ if(category.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){ - message = errorMsg + "类别不能超过300个字符, "; + message = errorMsg + "类别不能超过300个字符"; }else{ - message = errorMsg + " The Category cannot contain more than 300 characters, "; + message = errorMsg + " The Category cannot contain more than 300 characters"; } msgList.add(message); } } //检验项目 - if(StringUtils.isNotBlank(inspectionItem)){ if(inspectionItem.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){ - message = errorMsg + "检验项目不能超过300个字符, "; + message = errorMsg + "检验项目不能超过300个字符"; }else{ - message = errorMsg + " The InspectionItem cannot contain more than 300 characters, "; + message = errorMsg + " The InspectionItem cannot contain more than 300 characters"; } msgList.add(message); } } //配置项 - if(StringUtils.isNotBlank(configItem)){ if(configItem.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){ - message = errorMsg + "配置项不能超过300个字符, "; + message = errorMsg + "配置项不能超过300个字符"; }else{ - message = errorMsg + " The ConfigItem cannot contain more than 300 characters, "; + message = errorMsg + " The ConfigItem cannot contain more than 300 characters"; + } + msgList.add(message); + } + } + //WVTA ID + if(StringUtils.isNotBlank(wvtaId)){ + if(wvtaId.length() > 300){ + String message = ""; + if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEOTemp.getCut())){ + message = errorMsg + "WVTA ID不能超过300个字符"; + }else{ + message = errorMsg + " The WVTA ID cannot contain more than 300 characters"; } msgList.add(message); } @@ -891,6 +1264,10 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl msgList, String nameCn, String nameEn) { + String value = ""; + if (StringUtils.isNotBlank(deliverableTemplate)) { + StringBuilder sb = new StringBuilder(); + for (String fileName : deliverableTemplate.split(",")) { + List nowFileList = new ArrayList<>(); + + nowFileList = FileUnZip.readFileByFilename(zipEntryName, fileName,authDummyInventoryInfoEO.getCut(),errorMsg,msgList,nameCn,nameEn); + + if (nowFileList.size() == 0) { +// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ +// errorMsg += "压缩包中没有" + fileName + "文件; "; +// }else{ +// errorMsg += " Not in the zip package" + fileName + "file; "; +// } +// msgList.add(errorMsg); + } else { + try { + FileInputStream input = new FileInputStream(nowFileList.get(0)); + MultipartFile multipartFile = + new MockMultipartFile(nowFileList.get(0).getName(), nowFileList.get(0).getName(), "text/plain", input); + //文件存入文件表 + OSSFile ossFile = iOSSFileService.uploadLocalOfCos(multipartFile, "", null,null); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(ossFile)) { + sb.append(ossFile.getId() + ","); + } + } catch (IOException e) { + log.error("市场认证清单导入"+e.getMessage()); + } + } + } + if (StringUtils.isNotBlank(sb)) { + value = sb.substring(0, sb.length() - 1); + } + } + return value; + } + private String getTreeId(List categoryList, AuthDummyInventoryInfoEO authDummyInventoryInfoEOTemp, List treeNameList, String value) { StringBuilder sb = new StringBuilder(); @@ -940,9 +1357,9 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl finalValueList = valueList; List diffList = list.stream().filter(e -> !finalValueList.contains(e)).collect(Collectors.toList()); if (CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())) { - errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配, "; + errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配"; } else { - errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary, "; + errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary"; } msgList.add(errorMsg); } @@ -1121,6 +1538,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl list = Arrays.asList(title.split(",")); int index = 0; @@ -1242,7 +1661,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl add(@Validated @RequestBody OtaBaCxJbxx otaBaCxJbxx) { - OtaBaCxJbxx res = otaBaCxJbxxService.add(otaBaCxJbxx); + OtaBaCxJbxx res; + try { + res = otaBaCxJbxxService.add(otaBaCxJbxx); + } catch (Exception e) { + e.printStackTrace(); + return Result.error(e.getMessage()); + } return Result.OK(res); } @@ -197,6 +203,7 @@ public class OtaBaCxJbxxController extends JeroController importData(@RequestParam(value = "file", required = false) MultipartFile file, @RequestParam(value = "cut", required = false) String cut) throws Exception { StringBuilder errMsg = new StringBuilder(); - errMsg.append("导入成功! 提示信息:"); + errMsg.append("导入成功! "); try { this.otaBaCxListService.importData(file, cut, errMsg); } catch (Exception e) { e.printStackTrace(); return Result.error(e.getMessage()); } - return Result.error(errMsg.toString()); + return Result.OK().success(errMsg.toString()); } @ApiOperation(value = "车型及功能备案列表-数据导出") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaCxZxsjyqController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaCxZxsjyqController.java index d43f3164e..2b2cda855 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaCxZxsjyqController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaCxZxsjyqController.java @@ -198,6 +198,7 @@ public class OtaBaCxZxsjyqController extends JeroController importData(@RequestParam(value = "file", required = false) MultipartFile file, @RequestParam(value = "cut", required = false) String cut) throws Exception { StringBuilder errMsg = new StringBuilder(); + errMsg.append("导入成功!"); try { this.otaBaSjListService.importData(file, cut, errMsg); } catch (Exception e) { e.printStackTrace(); return Result.error(e.getMessage()); } - return Result.error(errMsg.toString()); + return Result.OK().success(errMsg.toString()); } @ApiOperation(value = "升级备案-数据导出") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaSjSjfzbhController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaSjSjfzbhController.java index 53b0b05ee..e13b15f92 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaSjSjfzbhController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/controller/OtaBaSjSjfzbhController.java @@ -201,6 +201,7 @@ public class OtaBaSjSjfzbhController extends JeroController { OtaBaCxAqcs parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File attFile, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJbxxService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJbxxService.java index 360d3f1c0..5ff675dca 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJbxxService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJbxxService.java @@ -23,7 +23,7 @@ public interface IOtaBaCxJbxxService extends IService { * @param otaBaCxJbxx * @return */ - OtaBaCxJbxx add(OtaBaCxJbxx otaBaCxJbxx); + OtaBaCxJbxx add(OtaBaCxJbxx otaBaCxJbxx) throws Exception; /** * 更新 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJsfzbacsService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJsfzbacsService.java index b08b0ea21..992af4e6f 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJsfzbacsService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxJsfzbacsService.java @@ -73,4 +73,6 @@ public interface IOtaBaCxJsfzbacsService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjjsmccsService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjjsmccsService.java index 5b423a3f9..1c0cd5e97 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjjsmccsService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjjsmccsService.java @@ -73,4 +73,6 @@ public interface IOtaBaCxKsjjsmccsService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File attFile, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjxtmccsService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjxtmccsService.java index 97cf02357..364370d50 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjxtmccsService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxKsjxtmccsService.java @@ -73,4 +73,6 @@ public interface IOtaBaCxKsjxtmccsService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File attFile, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxSjmkService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxSjmkService.java index 0fb43b158..fd3877699 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxSjmkService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxSjmkService.java @@ -52,6 +52,7 @@ public interface IOtaBaCxSjmkService extends IService { */ OtaBaCxSjmk queryById(String id); + List setDefault(String otaId); List queryByOtaId(String otaId); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxZxsjyqService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxZxsjyqService.java index 7b79dc017..0623ec346 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxZxsjyqService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaCxZxsjyqService.java @@ -74,4 +74,6 @@ public interface IOtaBaCxZxsjyqService extends IService { OtaBaCxZxsjyq parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File attFile,String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjGgnrfsService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjGgnrfsService.java index 0f41d278d..818836014 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjGgnrfsService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjGgnrfsService.java @@ -73,4 +73,6 @@ public interface IOtaBaSjGgnrfsService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File fsAttFile, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjfzbhService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjfzbhService.java index a660411a0..27e33e5b7 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjfzbhService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjfzbhService.java @@ -74,4 +74,6 @@ public interface IOtaBaSjSjfzbhService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbclService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbclService.java index 31d68ecb2..b20645824 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbclService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbclService.java @@ -74,4 +74,6 @@ public interface IOtaBaSjSjmbclService extends IService { OtaBaSjSjmbcl importData(MultipartFile file, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File mbclAttFile, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbcxService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbcxService.java index 4695ad5bc..db0fd020c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbcxService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjmbcxService.java @@ -75,4 +75,6 @@ public interface IOtaBaSjSjmbcxService extends IService { OtaBaSjSjmbcx parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjxtbhService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjxtbhService.java index 02b5f148d..339255a98 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjxtbhService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjxtbhService.java @@ -72,4 +72,6 @@ public interface IOtaBaSjSjxtbhService extends IService { void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjyxpgService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjyxpgService.java index cd020b1ce..544da83be 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjyxpgService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/IOtaBaSjSjyxpgService.java @@ -74,4 +74,6 @@ public interface IOtaBaSjSjyxpgService extends IService { OtaBaSjSjyxpg parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception; void exportData(File file, File attFile, File attFile2, String otaId, String cut) throws Exception; + + void deleteByOtaId(String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxJbxxServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxJbxxServiceImpl.java index 2b36d28d4..de4757b51 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxJbxxServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxJbxxServiceImpl.java @@ -62,12 +62,21 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl xxList = this.list(); + for (OtaBaCxJbxx xx : xxList) { + if (ggpc.equals(xx.getGgpc())) { + throw new JeroBootException("公告批次重复"); + } + } + } //在保存的时候设置一个id 并返回前端 下次保存的时候判断是否为更新 otaBaCxList = new OtaBaCxList(); otaBaCxList.setId(UUID.randomUUID().toString().replace("-", "")); @@ -77,6 +86,14 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl xxList = this.list(); + for (OtaBaCxJbxx xx : xxList) { + if (!xx.getOtaId().equals(otaBaCxJbxx.getOtaId()) && ggpc.equals(xx.getGgpc())) { + throw new JeroBootException("公告批次重复"); + } + } + } otaBaCxJbxx.setId(otaBaCxJbxx.getId()); otaBaCxList = otaBaCxListService.queryById(otaBaCxJbxx.getOtaId()); otaBaCxList.updateData(otaBaCxJbxx); @@ -119,9 +136,11 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(OtaBaCxJbxx::getOtaId, id); - remove(queryWrapper); + if (StringUtils.isNotEmpty(id)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaCxJbxx::getOtaId, id); + remove(queryWrapper); + } } /** @@ -236,7 +255,7 @@ public class OtaBaCxJbxxServiceImpl extends ServiceImpl kzqList = OtaBaCxSjmkService.queryByOtaId(otaId); if (ObjectUtils.isEmpty(otaBaCxJsfzbacs)) { otaBaCxJsfzbacs = getByOtaId(otaIdT); + } + List kzqList = OtaBaCxSjmkService.queryByOtaId(otaId); + if(ObjectUtils.isEmpty(kzqList)){ kzqList = OtaBaCxSjmkService.queryByOtaId(otaIdT); } + if(ObjectUtils.isEmpty(kzqList)){ + kzqList = OtaBaCxSjmkService.setDefault(otaId); + } res.put("bj", otaBaCxJsfzbacs); res.put("kzq", kzqList); return res; } + @Override + public void deleteByOtaId(String id) { + if (StringUtils.isNotEmpty(id)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaCxJsfzbacs::getOtaId, id); + remove(queryWrapper); + } + } + private OtaBaCxJsfzbacs getByOtaId(String otaId) { if (StringUtils.isEmpty(otaId)) { return null; @@ -313,7 +327,7 @@ public class OtaBaCxJsfzbacsServiceImpl extends ServiceImpl(); - } ComparisonUtil cu = new ComparisonUtil(); List reList = cu.comparisonListRecord(otaId, OtaModuleEnum.CX_KZXSJDJSFZGNMCYCS, OtaTitleEnum.GNMC.getName(), oldList, newList, sysDictService); saveOrUpdateBatch(newList); @@ -218,7 +215,7 @@ public class OtaBaCxKsjjsmccsServiceImpl extends ServiceImpl getByOtaId(String otaId) { if (StringUtils.isEmpty(otaId)) { - return null; + return new ArrayList<>(); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(OtaBaCxKsjjsmccs::getOtaId, otaId); @@ -303,11 +300,11 @@ public class OtaBaCxKsjjsmccsServiceImpl extends ServiceImpl getByOtaId(String otaId) { if (org.apache.commons.lang3.StringUtils.isEmpty(otaId)) { - return null; + return new ArrayList<>(); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(OtaBaCxKsjxtmccs::getOtaId, otaId); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxListServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxListServiceImpl.java index 88dba6d41..767abeb93 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxListServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxListServiceImpl.java @@ -105,8 +105,15 @@ public class OtaBaCxListServiceImpl extends ServiceImpl setDefault(String otaId) { + Date now = new Date(); + List res = new ArrayList<>(); + String[] titles = {"车端OTA升级功能模块"}; + for (String t : titles) { + OtaBaCxSjmk cs = new OtaBaCxSjmk(); + cs.setOtaId(otaId); + cs.setBjmc(t); + cs.setCreateTime(now); + cs.setId(UUID.randomUUID().toString().replace("-", "")); + res.add(cs); + } + saveBatch(res); + return res; + } + @Override public List queryByOtaId(String otaId) { + if(StringUtils.isEmpty(otaId)){ + return new ArrayList<>(); + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(OtaBaCxSjmk::getOtaId, otaId); List list = this.list(queryWrapper); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxZxsjyqServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxZxsjyqServiceImpl.java index a2fec666d..8a65776b1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxZxsjyqServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaCxZxsjyqServiceImpl.java @@ -8,6 +8,7 @@ import com.jero.common.util.oss.CosBootUtil; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.ota.entity.AttachmentEO; +import com.jero.modules.ota.entity.OtaBaCxJbxx; import com.jero.modules.ota.entity.OtaBaCxTxjl; import com.jero.modules.ota.entity.OtaBaCxZxsjyq; import com.jero.modules.ota.enums.OtaModuleEnum; @@ -195,6 +196,15 @@ public class OtaBaCxZxsjyqServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaCxZxsjyq::getOtaId, id); + remove(queryWrapper); + } + } + @Override public void exportTemplate(HttpServletResponse response, HttpServletRequest request) { ImportFileUtil.exportTemplate(response, templatePath + "在线升级要求.zip"); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjGgnrfsServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjGgnrfsServiceImpl.java index 331e66439..2b5e7f052 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjGgnrfsServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjGgnrfsServiceImpl.java @@ -194,13 +194,13 @@ public class OtaBaSjGgnrfsServiceImpl extends ServiceImpl upLoadFiles = ImportFileUtil.importZip(file, cut, uploadPath); - parseFileList(upLoadFiles, otaId, cut,errMsg); + parseFileList(upLoadFiles, otaId, cut, errMsg); } @Override - public void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception{ + public void parseFileList(List upLoadFiles, String otaId, String cut, StringBuilder errMsg) throws Exception { File attFile = null; for (File f : upLoadFiles) { if (f.isDirectory() && f.getName().equals("用户告知内容及方式")) { @@ -210,32 +210,61 @@ public class OtaBaSjGgnrfsServiceImpl extends ServiceImpl= 20) { + errMsg.append("用户告知方式 仅支持上传20个文件,超出部分文件忽略, "); + break; + } if (!attFiles1[i].isDirectory() && (attFiles1[i].getName().contains(".doc") || attFiles1[i].getName().contains(".docx") || attFiles1[i].getName().contains(".pdf"))) { + if (attFiles1[i].length() > 50 * 1024 * 1024) { + errMsg.append("用户告知方式 上传文件不可以超过50MB, "); + continue; + } if (i >= attFiles1.length - 1) { attStr1.append(ImportFileUtil.uploadFiles(attFiles1[i], ossFileService)); } else { attStr1.append(ImportFileUtil.uploadFiles(attFiles1[i], ossFileService)).append(","); } + inFile++; + } else { + errMsg.append("用户告知方式 只支持doc/docx/pdf格式, "); + continue; } } fs.setXgwj(attStr1.toString()); return fs; } + @Override + public void deleteByOtaId(String id) { + if (StringUtils.isNotEmpty(id)) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaSjGgnrfs::getOtaId, id); + remove(queryWrapper); + } + } + @Override public void exportData(File file, File attFile, String otaId, String cut) throws Exception { OtaBaSjGgnrfs fs = this.getByOtaId(otaId); @@ -277,7 +306,7 @@ public class OtaBaSjGgnrfsServiceImpl extends ServiceImpl ossFileList = ossFileService.getFileInfos(str); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjListServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjListServiceImpl.java index 117e19ec7..c6eb79457 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjListServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjListServiceImpl.java @@ -2,14 +2,13 @@ package com.jero.modules.ota.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; -import com.jero.modules.ota.entity.OtaBaCxJbxx; import com.jero.modules.ota.entity.OtaBaSjList; import com.jero.modules.ota.entity.OtaBaSjLsjl; import com.jero.modules.ota.entity.OtaBaSjSjmbcx; import com.jero.modules.ota.mapper.OtaBaSjListMapper; import com.jero.modules.ota.service.*; import com.jero.modules.ota.utils.ImportFileUtil; -import com.jero.modules.system.util.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -100,7 +99,15 @@ public class OtaBaSjListServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaSjSjmbcl::getOtaId, id); + remove(queryWrapper); + } + } + private OtaBaSjSjmbcl parseFile(File upFile, String otaId, String cut, StringBuilder errMsg) throws Exception { OtaBaSjSjmbcl mbcl = new OtaBaSjSjmbcl(); OtaBaSjSjmbcx mbcx = otaBaSjSjmbcxService.queryByOtaId(otaId, ""); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbcxServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbcxServiceImpl.java index e8082eb79..6a873a186 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbcxServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjmbcxServiceImpl.java @@ -236,7 +236,7 @@ public class OtaBaSjSjmbcxServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaSjSjmbcx::getOtaId, id); + remove(queryWrapper); + } + } + @Override public void exportData(File file, String otaId, String cut) throws Exception { OtaBaSjSjmbcx cx = this.getByOtaId(otaId); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjyxpgServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjyxpgServiceImpl.java index 531c7a46f..9a86599ef 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjyxpgServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/service/impl/OtaBaSjSjyxpgServiceImpl.java @@ -93,8 +93,7 @@ public class OtaBaSjSjyxpgServiceImpl extends ServiceImpl reList = cu.comparisonRecord(otaBaSjSjyxpg.getOtaId(), OtaModuleEnum.SJ_SJYXPG, otaBaSjSjyxpgOld, otaBaSjSjyxpg, sysDictService); reList.addAll(cu.comparisonRecord(otaBaSjSjyxpg.getOtaId(), newYzcl, oldYzcl, OtaModuleEnum.SJ_SJMBCL, "验证材料", ossFileService)); reList.addAll(cu.comparisonRecord(otaBaSjSjyxpg.getOtaId(), newZmcl, oldZmcl, OtaModuleEnum.SJ_SJMBCL, "证明材料", ossFileService)); - - deleteById(otaBaSjSjyxpg.getId()); + deleteByOtaId(otaBaSjSjyxpg.getOtaId()); saveOrUpdate(otaBaSjSjyxpg); otaBaCxTxjlService.saveBatch(reList); } @@ -225,6 +224,14 @@ public class OtaBaSjSjyxpgServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OtaBaSjSjyxpg::getOtaId, id); + remove(queryWrapper); + } + } + @Override public void exportData(File file, File attFile1, File attFile2, String otaId, String cut) throws Exception { OtaBaSjSjyxpg pg = this.getByOtaId(otaId); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ComparisonUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ComparisonUtil.java index 737870be8..fb694b87c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ComparisonUtil.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ComparisonUtil.java @@ -62,13 +62,13 @@ public class ComparisonUtil { } public OtaBaCxTxjl addAttRecord(String otaId, OtaModuleEnum otaModuleEnum, String title, String attName) { - String content = title + "中添加了附件:'" + attName; + String content = title + "中添加了附件:'" + attName + ","; OtaBaCxTxjl jl = new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content); return jl; } public OtaBaCxTxjl delAttRecord(String otaId, OtaModuleEnum otaModuleEnum, String title, String attName) { - String content = title + "中删除了附件:'" + attName; + String content = title + "中删除了附件:'" + attName + ","; OtaBaCxTxjl jl = new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content); return jl; } @@ -178,9 +178,9 @@ public class ComparisonUtil { } public void checkAttError(String[] strs, StringBuilder errMsg, String title, String cut) { - for (String str:strs) { - if(!str.endsWith(".doc")&&!str.endsWith(".docx")&&!str.endsWith(".pdf")&&!str.endsWith(".DOC")&&!str.endsWith(".DOCX")&&!str.endsWith(".PDF")){ - errMsg.append(title + " 支持doc/docx/pdf格式 , "); + for (String str : strs) { + if (!str.endsWith(".doc") && !str.endsWith(".docx") && !str.endsWith(".pdf") && !str.endsWith(".DOC") && !str.endsWith(".DOCX") && !str.endsWith(".PDF")) { + errMsg.append(title + " 支持doc/docx/pdf格式, "); } } } @@ -203,9 +203,14 @@ public class ComparisonUtil { errMsg.append(title + " 的长度超过了 " + ote.getLen() + ", "); field.set(clazz, ""); } + } else if ("1".equals(ote.getType())) { + if (!"1".equals(str) && !"2".equals(str)) { + errMsg.append(title + " 必须填写有或无, "); + field.set(clazz, ""); + } } else if ("2".equals(ote.getType())) { - if (!"是".equals(str) && !"否".equals(str)) { - errMsg.append(title + " 必须填写是或否 , "); + if (!"1".equals(str) && !"2".equals(str)) { + errMsg.append(title + " 必须填写是或否, "); field.set(clazz, ""); } } else if ("3".equals(ote.getType())) { @@ -213,9 +218,9 @@ public class ComparisonUtil { } else { String[] strs = str.split(","); for (String s : strs) { - String res = sysDictService.queryDictItemByValue(ote.getType(), s, cut); + String res = sysDictService.queryDictTextByKeyEn(ote.getType(), s, cut); if (StringUtils.isEmpty(res)) { - errMsg.append(title + " 填写了无法识别的选项 , "); + errMsg.append(title + " 填写了无法识别的选项, "); field.set(clazz, ""); } } @@ -285,6 +290,14 @@ public class ComparisonUtil { if (ObjectUtils.isNotEmpty(newVal)) { res = newVal.toString(); } + } else if ("1".equals(ote.getType())) { + if (ObjectUtils.isNotEmpty(newVal)) { + if ("1".equals(newVal.toString())) { + res = "有"; + } else if ("2".equals(newVal.toString())) { + res = "无"; + } + } } else if ("2".equals(ote.getType())) { if (ObjectUtils.isNotEmpty(newVal)) { if ("1".equals(newVal.toString())) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ImportFileUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ImportFileUtil.java index 9d05199bb..adb05d7f3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ImportFileUtil.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/ota/utils/ImportFileUtil.java @@ -155,15 +155,41 @@ public class ImportFileUtil { return ""; } - public static Integer getCellValueYesOrNoInt(Cell cell, Workbook workbook) throws Exception { + public static Integer getCellValueHaveOrNotInt(Cell cell, Workbook workbook) throws Exception { Integer res = null; - String str = getCellValueYesOrNo(cell, workbook); + String str = getCellValueHaveOrNot(cell, workbook); if (StringUtils.isNotEmpty(str)) { res = Integer.parseInt(str); } return res; } + + public static String getCellValueHaveOrNot(Cell cell, Workbook workbook) throws Exception { + String res = ""; + String str = getCellValue(cell, workbook); + if (StringUtils.isNotEmpty(str)) { + if (str.equals("有")) { + res = "1"; + } else if (str.equals("无")) { + res = "2"; + } + } + return res; + } + + public static String getCellValueHaveOrNotInt(Integer val) throws Exception { + String res = ""; + if (ObjectUtils.isNotEmpty(val)) { + if (val.equals(1)) { + res = "有"; + } else if (val.equals(2)) { + res = "无"; + } + } + return res; + } + public static String getCellValueYesOrNo(Cell cell, Workbook workbook) throws Exception { String res = ""; String str = getCellValue(cell, workbook); @@ -189,6 +215,18 @@ public class ImportFileUtil { return res; } + public static String getCellValueHaveOrNot(String str) throws Exception { + String res = ""; + if (StringUtils.isNotEmpty(str)) { + if (str.equals("1")) { + res = "有"; + } else if (str.equals("2")) { + res = "无"; + } + } + return res; + } + public static String getCellValueYesOrNo(String str) throws Exception { String res = ""; if (StringUtils.isNotEmpty(str)) { @@ -277,25 +315,32 @@ public class ImportFileUtil { public static List uploadFiles1(File attFile, String[] strs, IOSSFileService ossFileService, StringBuilder errMsg, String title, String cut) throws Exception { List res = new ArrayList<>(); + //已导入文件数,用于判断超过20 + int inFile = 0; for (int i = 0; i < strs.length; i++) { + if (inFile >= 20) { + errMsg.append(title + " 仅支持上传20个文件,超出部分文件忽略, "); + break; + } if (StringUtils.isNotEmpty(strs[i])) { File file = ImportFileUtil.findFile(attFile, strs[i]); if (null == file) { - errMsg.append(title + " 找不到文件 , "); + errMsg.append(title + " 找不到文件:" + strs[i] + ", "); continue; } if (!file.getName().endsWith(".doc") && !file.getName().endsWith(".docx") && !file.getName().endsWith(".pdf") && !file.getName().endsWith(".DOC") && !file.getName().endsWith(".DOCX") && !file.getName().endsWith(".PDF")) { - errMsg.append(title + " 只支持doc/docx/pdf格式 , "); + errMsg.append(title + " 只支持doc/docx/pdf格式, "); continue; } if (file.length() > 50 * 1024 * 1024) { - errMsg.append(title + " 上传文件不可以超过50MB , "); + errMsg.append(title + " 上传文件不可以超过50MB, "); continue; } OSSFile ossFile = ossFileService.uploadLocalOfCos(ImportFileUtil.createMfileByFile(file), "", null, null); if (ObjectUtils.isNotEmpty(ossFile)) { res.add(ossFile); + inFile++; } } } @@ -313,20 +358,26 @@ public class ImportFileUtil { public static String uploadFiles(File attFile, String[] strs, IOSSFileService ossFileService, StringBuilder errMsg, String title, String cut) throws Exception { String res = ""; + //已导入文件数,用于判断超过20 + int inFile = 0; for (int i = 0; i < strs.length; i++) { + if (inFile >= 20) { + errMsg.append(title + " 仅支持上传20个文件,超出部分文件忽略, "); + break; + } if (StringUtils.isNotEmpty(strs[i])) { File file = ImportFileUtil.findFile(attFile, strs[i]); if (null == file) { - errMsg.append(title + " 找不到文件 , "); + errMsg.append(title + " 找不到文件:" + strs[i] + ", "); continue; } if (!file.getName().endsWith(".doc") && !file.getName().endsWith(".docx") && !file.getName().endsWith(".pdf") && !file.getName().endsWith(".DOC") && !file.getName().endsWith(".DOCX") && !file.getName().endsWith(".PDF")) { - errMsg.append(title + " 只支持doc/docx/pdf格式 , "); + errMsg.append(title + " 只支持doc/docx/pdf格式, "); continue; } if (file.length() > 50 * 1024 * 1024) { - errMsg.append(title + " 上传文件不可以超过50MB , "); + errMsg.append(title + " 上传文件不可以超过50MB, "); continue; } OSSFile ossFile = ossFileService.uploadLocalOfCos(ImportFileUtil.createMfileByFile(file), "", null, null); @@ -336,6 +387,7 @@ public class ImportFileUtil { } else { res += ossFile.getId() + ","; } + i++; } } } 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 2574ed923..a8af91796 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 @@ -59,7 +59,9 @@ public class ProjectRelatedPersonnelController extends JeroController certificationEngineerNameList; /**备注*/ - @Excel(name = "备注,Comments", width = 15,orderNum = "5") + @Excel(name = "备注,Comments", width = 15,orderNum = "6") private java.lang.String remark; /**创建人*/ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectRelatedPersonnelMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectRelatedPersonnelMapper.java index fb4d2d269..ce5557e25 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectRelatedPersonnelMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectRelatedPersonnelMapper.java @@ -19,7 +19,9 @@ public interface ProjectRelatedPersonnelMapper extends BaseMapper queryById(@Param("id")String id); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectRelatedPersonnelMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectRelatedPersonnelMapper.xml index 107fe1a72..961232976 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectRelatedPersonnelMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectRelatedPersonnelMapper.xml @@ -22,6 +22,8 @@ prp.law_engineer, prp.engineering_interface_person, prp.certification_engineer, + prp.engineer_law_set, + prp.engineer_att_set, prp.remark, prp.create_by, prp.create_time, @@ -51,8 +53,14 @@ AND prp.engineering_interface_person like concat(concat('%',#{engineeringInterfacePerson}),'%') - - AND prp.certification_engineer like concat(concat('%',#{certificationEngineer}),'%') + + + + + AND prp.engineer_law_set like concat(concat('%',#{engineerLawSet}),'%') + + + AND prp.engineer_att_set like concat(concat('%',#{engineerAttSet}),'%') AND sd.dict_code = #{dictCode} 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 f19b5f1e1..29f18ec42 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 @@ -67,7 +67,8 @@ public interface IProjectRelatedPersonnelService extends IService queryList(); - List queryPageList(String projectId,String dutyTerritory,String lawEngineer,String engineeringInterfacePerson,String certificationEngineer); +// List queryPageList(String projectId,String dutyTerritory,String lawEngineer,String engineeringInterfacePerson,String certificationEngineer); + List queryPageList(String projectId,String dutyTerritory,String lawEngineer,String engineeringInterfacePerson,String engineerLawSet,String engineerAttSet); Map queryPersonByProjectId(String projectId, String dutyTerritory); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java index b0e469b38..39445e708 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectCertificationInventoryEOServiceImpl.java @@ -1,5 +1,8 @@ package com.jero.modules.project.service.impl; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import cn.hutool.core.util.ZipUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -20,6 +23,8 @@ import com.jero.common.util.oss.CosBootUtil; import com.jero.modules.authDummy.entity.AuthDummyInventoryInfoEO; import com.jero.modules.authDummy.service.IAuthDummyInventoryBaseEOService; import com.jero.modules.authDummy.service.IAuthDummyInventoryInfoEOService; +import com.jero.modules.cert.template.vo.ParamsInfoCnImport; +import com.jero.modules.cert.template.vo.ParamsInfoEnImport; import com.jero.modules.document.controller.BussDocumentLibraryEOController; import com.jero.modules.document.entity.BussDocumentLibraryEO; import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; @@ -61,6 +66,7 @@ import org.apache.commons.io.FileUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; import org.aspectj.util.FileUtil; @@ -258,6 +264,46 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl listUserName = new ArrayList<>(); +// listUserName = sysUserMapper.getListUserName(); +// listUserName = listUserName.stream().distinct().collect(Collectors.toList()); + + //获取当前的责任人 + String dutyPerson = projectCertificationInventoryEO.getDutyPerson(); + //获取当前的责任领域 + List dutyTerritoryList = new ArrayList<>(); + dutyTerritoryList = Arrays.asList(projectCertificationInventoryEO.getDutyTerritory().split(",")); + dutyTerritoryList = dutyTerritoryList.stream().distinct().collect(Collectors.toList()); + //获取当前的projectId + String projectId = projectCertificationInventoryEO.getProjectLibraryId(); + //根据责任领域个projectId去查相关人员名单 + List projectRelatedPersonnelList = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritoy(projectId, dutyTerritoryList); + + //根据相关人员名单获取的工程接口人 + List enginnerList = new ArrayList<>(); + for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){ + enginnerList.add(relatedPersonnel.getEngineeringInterfacePerson()); + } + for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){ + //如果工程接口人不为空的话 + if(enginnerList.size()>0){ + //判断哪个不存在 再去去存入 + if(!enginnerList.contains(dutyPerson)){ + relatedPersonnel.setEngineerAttSet(dutyPerson); +// projectRelatedPersonnelService.editById(relatedPersonnel); + } + }else { + //工程接口人为空的话,直接将责任设置到认证工程师下 + relatedPersonnel.setEngineerAttSet(dutyPerson); +// projectRelatedPersonnelService.editById(relatedPersonnel); + } + } + + this.projectRelatedPersonnelService.updateBatchById(projectRelatedPersonnelList); + //设置权限 先删后加 List adds = new ArrayList<>(); if (ObjectUtils.isNotEmpty(projectCertificationInventoryEO.getSdt())) { @@ -1028,7 +1074,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl projectRelatedPersonnels = this.projectRelatedPersonnelService.queryPageList(projectLibraryId,null,null,null,null); + List projectRelatedPersonnels = this.projectRelatedPersonnelService.queryPageList(projectLibraryId,null,null,null,null,null); List lawEngineerNameList = new ArrayList<>(); if(projectRelatedPersonnels.size() != 0){ for (ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnels) { @@ -2757,13 +2803,13 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl 1) { dataList.add(rowList); } @@ -2987,6 +2990,50 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl listUserName = new ArrayList<>(); +// listUserName = sysUserMapper.getListUserName(); +// listUserName = listUserName.stream().distinct().collect(Collectors.toList()); + + List userNameList = datas.stream().map(ProjectCertificationInventoryEO::getDutyPersonName).distinct().collect(Collectors.toList()); + List listUserName = this.sysUserService.querySysUserByUserNameList(userNameList); + //编号验证 verifySerialNumber(datas,projectCertificationInventoryEOTemp); for (ProjectCertificationInventoryEO projectCertificationInventoryEO : datas) { @@ -3095,159 +3149,69 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl 200){ + + + //类别 + if(StringUtils.isNotBlank(category)){ + if(category.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "报告编号不能超过200个字符, "; + message = errorMsg + "类别不能超过300个字符"; }else{ - message = errorMsg + " The Report No cannot contain more than 200 characters, "; + message = errorMsg + " The Category cannot contain more than 300 characters"; } msgList.add(message); } } - //产品型号 - if(StringUtils.isNotBlank(productModel)){ - if(productModel.length() > 200){ + //检验项目 + if(StringUtils.isNotBlank(inspectionItem)){ + if(inspectionItem.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "产品型号不能超过200个字符, "; + message = errorMsg + "检验项目不能超过300个字符"; }else{ - message = errorMsg + " The Product Model cannot contain more than 200 characters, "; + message = errorMsg + " The InspectionItem cannot contain more than 300 characters"; } msgList.add(message); } } - //生产企业名称 - if(StringUtils.isNotBlank(productionEnterpriseName)){ - if(productionEnterpriseName.length() > 200){ + //配置项 + if(StringUtils.isNotBlank(configItem)){ + if(configItem.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "生产企业名称不能超过200个字符, "; + message = errorMsg + "配置项不能超过300个字符"; }else{ - message = errorMsg + " The Name Of Manufacturer cannot contain more than 200 characters, "; + message = errorMsg + " The ConfigItem cannot contain more than 300 characters"; } msgList.add(message); } } //WVTA ID - if(StringUtils.isNotBlank(wvtaId)){ if(wvtaId.length() > 300){ String message = ""; if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "WVTA ID不能超过300个字符, "; + message = errorMsg + "WVTA ID不能超过300个字符"; }else{ - message = errorMsg + " The WVTA ID cannot contain more than 300 characters, "; + message = errorMsg + " The WVTA ID cannot contain more than 300 characters"; } msgList.add(message); } } -// else { -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "WVTA ID不能为空, "; -// }else{ -// message = errorMsg + " The WVTA ID cannot null, "; -// } -// msgList.add(message); -// } - //类别 - - if(StringUtils.isNotBlank(category)){ - if(category.length() > 300){ - String message = ""; - if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "类别不能超过300个字符, "; - }else{ - message = errorMsg + " The Category cannot contain more than 300 characters, "; - } - msgList.add(message); - } - } -// else { -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "类别不能为空, "; -// }else{ -// message = errorMsg + " The Category cannot null, "; -// } -// msgList.add(message); -// } - //检验项目 - - if(StringUtils.isNotBlank(inspectionItem)){ - if(inspectionItem.length() > 100){ - String message = ""; - if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "检验项目不能超过300个字符, "; - }else{ - message = errorMsg + " The InspectionItem cannot contain more than 300 characters, "; - } - msgList.add(message); - } - } -// else { -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "检验项目不能为空, "; -// }else{ -// message = errorMsg + " The InspectionItem cannot null, "; -// } -// msgList.add(message); -// } - //配置项 - - if(StringUtils.isNotBlank(configItem)){ - if(configItem.length() > 300){ - String message = ""; - if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ - message = errorMsg + "配置项不能超过100个字符, "; - }else{ - message = errorMsg + " The ConfigItem cannot contain more than 300 characters, "; - } - msgList.add(message); - } - } -// else { -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "配置项不能为空, "; -// }else{ -// message = errorMsg + " The ConfigItem cannot null, "; -// } -// msgList.add(message); -// } //责任领域 - if(StringUtils.isNotBlank(dutyTerritory)){ value = pullMore(dictItemList, projectCertificationInventoryEO, errorMsg, dutyTerritory,msgList,"责任领域","Responsible Field","duty_territory"); if(StringUtils.isNotBlank(value)){ projectCertificationInventoryEO.setDutyTerritory(value); } } -// else { -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "责任领域不能为空, "; -// }else{ -// message = errorMsg + " The Responsible Field cannot null, "; -// } -// msgList.add(message); -// } //工程接口人(责任领域下的工程接口人) Map objectMap = iProjectRelatedPersonnelService.queryPersonByProjectId(projectCertificationInventoryEOTemp.getProjectLibraryId(), value); //工程接口人 List> mapPersonList = (List>) objectMap.get("engineeringInterfacePersonList"); - //所有人 -// List> allPersonList = (List>) objectMap.get("allPersonList"); - - List listUserName = new ArrayList<>(); - listUserName = sysUserMapper.getListUserName(); - listUserName = listUserName.stream().distinct().collect(Collectors.toList()); String nameCn = ""; @@ -3259,15 +3223,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl 200){ + String message = ""; + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ + message = errorMsg + "报告编号不能超过200个字符"; + }else{ + message = errorMsg + " The Report No cannot contain more than 200 characters"; + } + msgList.add(message); + } + } + //产品型号 + if(StringUtils.isNotBlank(productModel)){ + if(productModel.length() > 200){ + String message = ""; + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ + message = errorMsg + "产品型号不能超过200个字符"; + }else{ + message = errorMsg + " The Product Model cannot contain more than 200 characters"; + } + msgList.add(message); + } + } + //生产企业名称 + if(StringUtils.isNotBlank(productionEnterpriseName)){ + if(productionEnterpriseName.length() > 200){ + String message = ""; + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ + message = errorMsg + "生产企业名称不能超过200个字符"; + }else{ + message = errorMsg + " The Name Of Manufacturer cannot contain more than 200 characters"; + } + msgList.add(message); } } -// else{ -// String message = ""; -// if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){ -// message = errorMsg + "截止时间不能为空, "; -// }else{ -// message = errorMsg + " The Due Date Type cannot null, "; -// } -// msgList.add(message); -// } } return msgList; @@ -3367,29 +3337,37 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpllongdate){ - flag = false; - if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ - errorMsg += nameCn + "不能导入今天之前的日期, "; - }else{ - errorMsg += nameEn + " Cannot import dates before today, "; + }else{ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date now = new Date(); + String nowStr = sdf.format(now); +// String fieldStr = sdf.format(field); + Date now1 = null; + Date field1 = null; + try { + if(!field.contains("-")){ + field = DateUtils.coverDate(field); } - msgList.add(errorMsg); + now1 = sdf.parse(nowStr); + field1 = sdf.parse(field); + long day = now1.getTime()-field1.getTime(); + if(day>0){ + flag = false; + if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){ + errorMsg += nameCn + "不能导入今天之前的日期"; + }else{ + errorMsg += nameEn + " Cannot import dates before today"; + } + msgList.add(errorMsg); + } + } catch (ParseException e) { + e.printStackTrace(); } - } catch (ParseException e) { - e.printStackTrace(); } } return flag; @@ -3474,9 +3452,9 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl finalValueList = valueList; List diffList = list.stream().filter(e -> !finalValueList.contains(e)).collect(Collectors.toList()); if (CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())) { - errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配, "; + errorMsg += nameCn + "中的" + StringUtils.join(diffList,",") + "与数据字典不匹配"; } else { - errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary, "; + errorMsg += nameEn + " " + StringUtils.join(diffList,",") + " does not match the data dictionary"; } msgList.add(errorMsg); } @@ -3651,13 +3629,14 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl collect = bussDocumentLibraryEOList.stream() - .filter(e -> e.getSerialNumber().equals(projectCertificationInventoryEO.getSerialNumber())).collect(Collectors.toList()); - projectCertificationInventoryEO.setBussDocumentLibraryId(collect.get(0).getId()); - } } +// else{ +// for (ProjectCertificationInventoryEO projectCertificationInventoryEO : datas) { +// List collect = bussDocumentLibraryEOList.stream() +// .filter(e -> e.getSerialNumber().equals(projectCertificationInventoryEO.getSerialNumber())).collect(Collectors.toList()); +// projectCertificationInventoryEO.setBussDocumentLibraryId(collect.get(0).getId()); +// } +// } } } @@ -3706,29 +3685,40 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl list = Arrays.asList(title.split(",")); @@ -4008,7 +3998,11 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl engineeringInterfacePersonList = new ArrayList<>(); -// engineeringInterfacePersonList = Arrays.asList(projectLawsInventoryEO.getEngineeringInterfacePerson().split(",")); -// engineeringInterfacePersonList = engineeringInterfacePersonList.stream().distinct().collect(Collectors.toList()); - - List projectRelatedPersonnelList = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritoy(projectLibrartId, dutyTerritoryList); //enginnerList为每一条的工程接口人的集合 List enginnerList = new ArrayList<>(); + for(ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnelList){ + enginnerList.add(projectRelatedPersonnel.getEngineeringInterfacePerson()); + } if(projectRelatedPersonnelList.size()>0){ for(ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnelList){ - if(StringUtils.isEmpty(projectRelatedPersonnel.getEngineeringInterfacePerson())){ + if(enginnerList.size()<0){ //直接将allList存入到 String all = String.join(",",allList); projectRelatedPersonnel.setEngineerLawSet(all); - projectRelatedPersonnelService.editById(projectRelatedPersonnel); +// projectRelatedPersonnelService.editById(projectRelatedPersonnel); }else { - enginnerList.add(projectRelatedPersonnel.getEngineeringInterfacePerson()); enginnerList = enginnerList.stream().distinct().collect(Collectors.toList()); //比较allList中有而enginnerList中没有的工程接口人 - boolean flag = false; - List resultList = new ArrayList<>(); - if(allList.size()>0){ - flag = CollectionUtils.isEqualCollection(allList,enginnerList); - if(!flag){ - //进行遍历两个list,将allList中有的而enginnerList没有的存入到相关人员名单中的法规那里 - - for(String all : allList){ - boolean flag1 = true; - for(String enginner : enginnerList){ - if(all.equals(enginner)){ - flag1 = false; - break; - } - } - if(flag1){ - resultList.add(all); - } - } - } - } + allList.removeAll(enginnerList); +// if(allList.size()>0){ +// flag = CollectionUtils.isEqualCollection(allList,enginnerList); +// if(!flag){ +// //进行遍历两个list,将allList中有的而enginnerList没有的存入到相关人员名单中的法规那里 +// +// for(String all : allList){ +// boolean flag1 = true; +// for(String enginner : enginnerList){ +// if(all.equals(enginner)){ +// flag1 = false; +// break; +// } +// } +// if(flag1){ +// resultList.add(all); +// } +// } +// } +// } //将相关人员名单中没有的resultList添加到相关人员记录表中 - String result = String.join(",",resultList); + String result = String.join(",",allList); projectRelatedPersonnel.setEngineerLawSet(result); - projectRelatedPersonnelService.editById(projectRelatedPersonnel); +// projectRelatedPersonnelService.editById(projectRelatedPersonnel); } } } + this.projectRelatedPersonnelService.updateBatchById(projectRelatedPersonnelList); //翻译-中文 @@ -10199,7 +10196,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectRelatedPersonnels = projectRelatedPersonnelService.queryPageList(projectLibraryId,null,null,null,null); + List projectRelatedPersonnels = projectRelatedPersonnelService.queryPageList(projectLibraryId,null,null,null,null,null); List lawEngineerNameList = new ArrayList<>(); if(projectRelatedPersonnels.size() != 0){ for (ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnels) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index af60b7006..d876d9694 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -252,7 +252,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl relatedPersonnelPermissionList = new ArrayList<>(); for (ProjectRelatedPersonnel projectRelatedPersonnel : projectRelatedPersonnelList) { @@ -518,7 +518,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl result = projectRelatedPersonnelMapper.queryPageList(projectLibraryBase.getId(), - DictCodeEnum.DUTY_TERRITORY.getValue(), null, null, null, null); + DictCodeEnum.DUTY_TERRITORY.getValue(), null, null, null, null,null); //项目的认证工程师 String certificationEngineer = projectLibraryBase.getCertificationEngineer(); //一个都不选的情况下 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 3b8b077e0..4de2a9337 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 @@ -287,14 +287,17 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl result = projectRelatedPersonnelMapper.queryPageList(projectId, DictCodeEnum.DUTY_TERRITORY.getValue(), dutyTerritoryTemp, lawEngineer, engineeringInterfacePerson, - certificationEngineer); +// certificationEngineer + engineerLawSet, + engineerAttSet); //查询数据里的责任领域 List dutyTerritory = result.stream().map(e -> e.getDutyTerritory()).collect(Collectors.toList()); //查标签内容里的责任领域数据 @@ -303,7 +306,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl engineerLawSetUsers = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectRelatedPersonnel.getEngineerLawSet())){ + List engineerLawSetIdList = Arrays.asList(projectRelatedPersonnel.getEngineerLawSet().split(",")); + if (CollectionUtils.isNotEmpty(engineerLawSetIdList)) { + engineerLawSetIdList=engineerLawSetIdList.stream().distinct().collect(Collectors.toList()); + QueryWrapper userqueryWrapper = new QueryWrapper<>(); + userqueryWrapper.in("id ", engineerLawSetIdList); + engineerLawSetUsers = sysUserMapper.selectList(userqueryWrapper); + } + if(CollectionUtils.isNotEmpty(engineerLawSetUsers)) { + String engineerAttSetId = projectRelatedPersonnel.getEngineerAttSet(); + String engineerLawSetName = null; + StringBuilder lawSetName = new StringBuilder(); + for (String data : engineerLawSetIdList) { + if (StringUtils.isNotEmpty(engineerAttSetId)) { + engineerLawSetName = engineerLawSetUsers.stream().filter(e -> data.equals(e.getId())) + .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); + } + lawSetName.append(engineerLawSetName).append(","); + } + projectRelatedPersonnel.setEngineerLawSetName(lawSetName.substring(0,lawSetName.toString().length()-1)); + } + } + //认证工程师设置 + List engineerAttSetUsers = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectRelatedPersonnel.getEngineerAttSet())){ + List engineerAttSetIdList = Arrays.asList(projectRelatedPersonnel.getEngineerAttSet().split(",")); + if (CollectionUtils.isNotEmpty(engineerAttSetIdList)) { + engineerAttSetIdList=engineerAttSetIdList.stream().distinct().collect(Collectors.toList()); + QueryWrapper userqueryWrapper = new QueryWrapper<>(); + userqueryWrapper.in("id ", engineerAttSetIdList); + engineerAttSetUsers = sysUserMapper.selectList(userqueryWrapper); + } + if(CollectionUtils.isNotEmpty(engineerAttSetUsers)) { + String engineerAttSetId = projectRelatedPersonnel.getEngineerAttSet(); + String engineerAttSetName = null; + StringBuilder AttSetName = new StringBuilder(); + for (String data : engineerAttSetIdList) { + if (StringUtils.isNotEmpty(engineerAttSetId)) { + engineerAttSetName = engineerAttSetUsers.stream().filter(e -> data.equals(e.getId())) + .map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(",")); + } + AttSetName.append(engineerAttSetName).append(","); + } + projectRelatedPersonnel.setEngineerAttSetName(AttSetName.substring(0,AttSetName.toString().length()-1)); + } + } } } @@ -564,7 +617,6 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl wrapper = new QueryWrapper<>(); wrapper.eq("project_id",projectId).in("duty_territory",dutyTerritoryList); List projectRelatedPersonnels = baseMapper.selectList(wrapper); - return projectRelatedPersonnels; @@ -589,7 +641,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl') + message.forEach(res => { + if (res) { + content.push( < div > {res} < /div>) + } + }) + } + this.$warning({ + title: name, + content: ( + < div > + {content} + < /div> + ) + }) if(info.file.response.result != null && info.file.response.result.otaId){ localStorage.setItem('otaId', info.file.response.result.otaId) } diff --git a/jero-web/src/views/otamanagement/upgradeactivityrecord/components/upgradetargetmodel.vue b/jero-web/src/views/otamanagement/upgradeactivityrecord/components/upgradetargetmodel.vue index 59f30073b..19e6f6876 100644 --- a/jero-web/src/views/otamanagement/upgradeactivityrecord/components/upgradetargetmodel.vue +++ b/jero-web/src/views/otamanagement/upgradeactivityrecord/components/upgradetargetmodel.vue @@ -176,7 +176,8 @@ export default { disabled: false, form: { qymc: '安徽江淮汽车集团股份有限公司', - bapc: undefined + bapc: undefined, + cxmb: undefined }, url: { exportData: '/ota/otaBaSjSjmbcx/exportData', @@ -206,7 +207,7 @@ export default { handleModule() { downloadFile('ota/otaBaSjSjmbcx/exportTemplate', '升级目标车型' + '.zip', {}) }, - getData() { + getData(item) { let otaIdT = localStorage.getItem('otaIdT') if (otaIdT == null) { otaIdT = '' @@ -232,15 +233,15 @@ export default { this.form = res.result this.form.otaId='' - // if (this.$route.query.type == 1 && res.result.cxmb == null) { - // this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh - // } else { - // if (this.$route.query.type == 2 && res.result.cxmb == null) { - // this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh - // } else { - // this.form.cxmb = res.result.cxmb ? res.result.cxmb : undefined - // } - // } + if (this.$route.query.type == 1 && res.result.cxmb == null && !item) { + this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh + } else { + if (this.$route.query.type == 2 && res.result.cxmb == null && !item) { + this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh + } else { + this.form.cxmb = res.result.cxmb ? res.result.cxmb : undefined + } + } if (res.result.dllx1 == null || res.result.dllx1 == "") { this.form.dllx1 = undefined @@ -249,9 +250,9 @@ export default { if (res.result.dllx2 == null || res.result.dllx2 == "") { this.form.dllx2 = undefined } - if (res.result.cxmb == null || res.result.cxmb == "") { - this.form.cxmb = undefined - } + // if (res.result.cxmb == null || res.result.cxmb == "") { + // this.form.cxmb = undefined + // } if (res.result.bapc == null || res.result.bapc == "") { this.form.bapc = undefined } @@ -265,14 +266,15 @@ export default { this.$refs.ruleForm.validate(valid => { if (valid) { let otaId = localStorage.getItem('otaId') - if (otaId == null|| otaId == undefined) { - otaId = '' - } + if (otaId == null || otaId == undefined) { + otaId = '' + } this.selectListPc.map(item => { if (item.id == this.form.bapc) { this.form.bapc = item.ggpc } }) + this.form.otaId = otaId postAction('/ota/otaBaSjSjmbcx/add', { otaId: otaId, ...this.form }).then(res => { if (res.code == 200) { localStorage.setItem('otaId', res.result.otaId) diff --git a/jero-web/src/views/otamanagement/vehicleinformation/components/basicInformation.vue b/jero-web/src/views/otamanagement/vehicleinformation/components/basicInformation.vue index 15b86d0c6..69c67a94f 100644 --- a/jero-web/src/views/otamanagement/vehicleinformation/components/basicInformation.vue +++ b/jero-web/src/views/otamanagement/vehicleinformation/components/basicInformation.vue @@ -241,6 +241,7 @@ import { message } from 'ant-design-vue' formInline:{}, projectNameList:[], formRules:[], + flag:'', url: { exportData: '/ota/otaBaCxJbxx/exportData', importZipUrl: '/ota/otaBaCxJbxx/importData?otaId=' + localStorage.getItem('otaId'),//导入 @@ -310,7 +311,7 @@ import { message } from 'ant-design-vue' } }) }, - getData(){ + getData(item){ let otaIdT=localStorage.getItem('otaIdT') if(otaIdT==null){ otaIdT='' @@ -332,10 +333,10 @@ import { message } from 'ant-design-vue' this.form.txzd=res.result.txzd this.form.cdotasj=res.result.cdotasj this.form.id=res.result.id - if(this.$route.query.type == 1 && res.result.cxmb == null){ + if(this.$route.query.type == 1 && res.result.cxmb == null && !item){ this.form.cxmb = this.form.djbh+'-'+ this.form.ggpc+'-'+this.form.cpxh }else { - if(this.$route.query.type == 2 && res.result.cxmb == null){ + if(this.$route.query.type == 2 && res.result.cxmb == null && !item){ this.form.cxmb = this.form.djbh+'-'+ this.form.ggpc+'-'+this.form.cpxh }else{ this.form.cxmb = res.result.cxmb ? res.result.cxmb : undefined @@ -370,6 +371,9 @@ import { message } from 'ant-design-vue' if(valid){ this.save() setTimeout(()=>{ + if(this.flag == 1){ + return + } this.$emit('basicInformationForm') },1000) @@ -385,11 +389,14 @@ import { message } from 'ant-design-vue' otaId='' } postAction('/ota/otaBaCxJbxx/add',{ otaId:otaId,...this.form}).then( res => { - if(res.code == 200){ + if(res.success){ localStorage.setItem('otaId', res.result.otaId) - this.$message.success(this.$t('SavedSuccessfully')) + this.$message.success(res.message) this.getData() - } + }else{ + this.$message.warning(res.message) + this.flag = 1 + } }) } }) diff --git a/jero-web/src/views/otamanagement/vehicleinformation/components/beupgradedonline.vue b/jero-web/src/views/otamanagement/vehicleinformation/components/beupgradedonline.vue index ad8a466a4..541e9bdae 100644 --- a/jero-web/src/views/otamanagement/vehicleinformation/components/beupgradedonline.vue +++ b/jero-web/src/views/otamanagement/vehicleinformation/components/beupgradedonline.vue @@ -27,8 +27,8 @@ - {{ $t('yes') }} - {{ $t('not') }} + {{ $t('have') }} + {{ $t('nothing') }} diff --git a/jero-web/src/views/otamanagement/vehicleinformation/components/recordparameters.vue b/jero-web/src/views/otamanagement/vehicleinformation/components/recordparameters.vue index 7de401508..40ce2ea96 100644 --- a/jero-web/src/views/otamanagement/vehicleinformation/components/recordparameters.vue +++ b/jero-web/src/views/otamanagement/vehicleinformation/components/recordparameters.vue @@ -304,7 +304,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jgldBzwz', @@ -320,7 +320,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jgldScqy', @@ -328,7 +328,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'hmbldSl', @@ -336,7 +336,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'hmbldBzwz', @@ -352,7 +352,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'hmbldScqy', @@ -360,7 +360,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'csbldSl', @@ -368,7 +368,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'csbldBzwz', @@ -384,7 +384,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'csbldScqy', @@ -392,7 +392,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxthsSl', @@ -400,7 +400,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxthsBzwz', @@ -416,7 +416,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxthsScqy', @@ -424,7 +424,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxtdsdSl', @@ -432,7 +432,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxtdsdBzwz', @@ -448,7 +448,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'sxtdsdScqy', @@ -456,7 +456,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyjkSl', @@ -464,7 +464,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyjkBzwz', @@ -480,7 +480,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyjkScqy', @@ -488,7 +488,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyhwSl', @@ -496,7 +496,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('Quantity'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyhwBzwz', @@ -512,7 +512,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyhwScqy', @@ -520,7 +520,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('productionenterprise'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'czwxdwGgxh', @@ -528,7 +528,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'czwxdwScqy', @@ -536,7 +536,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'gxdhGgxh', @@ -544,7 +544,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'gxdhScqy', @@ -552,7 +552,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'lsjGgxh', @@ -560,7 +560,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'lsjScqy', @@ -568,7 +568,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'gjddtGgxh', @@ -576,7 +576,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('VersionNumber'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'gjddtScqy', @@ -584,7 +584,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'dzwlDxxgcs', @@ -592,7 +592,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('qualitativelydescriberelevantplaces'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'cztxXtmc', @@ -600,7 +600,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('systemname'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'cztxGgxh', @@ -616,7 +616,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('systemproductionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'cztxBbh', @@ -624,7 +624,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('softwareversionnumber'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'cztxKfqy', @@ -632,7 +632,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('softwaredevelopmententerprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzczjMc', @@ -640,7 +640,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('controlname'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzczjYjxh', @@ -648,7 +648,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('hardwarespecificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzczjScqy', @@ -656,7 +656,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzzsqMc', @@ -664,7 +664,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('nameofindicatorsignaldevice'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzzsqYjxh', @@ -672,7 +672,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('hardwarespecificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsfzzsqScqy', @@ -680,7 +680,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'fxptstsMc', @@ -688,7 +688,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('nameofindicatorsignaldevice'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'fxptstsYjxh', @@ -696,7 +696,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('hardwarespecificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'fxptstsScqy', @@ -704,7 +704,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyzyltsMc', @@ -712,7 +712,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('nameofindicatorsignaldevice'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyzyltsYjxh', @@ -720,7 +720,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('hardwarespecificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'jsyzyltsScqy', @@ -728,7 +728,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'dssadGgxh', @@ -736,7 +736,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'dssadScqy', @@ -744,7 +744,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'edrGgxh', @@ -752,7 +752,7 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('specificationmodel'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, { key: 'edrScqy', @@ -760,13 +760,13 @@ export default { componentname: this.$t('networksecurityrequirements'), configuration: this.$t('ineffectiveupgrades'), ParameterName: this.$t('productionenterprise'), - fillincontent:this.$t('haveisselected'), + fillincontent:this.$t('yesisselected'), }, ], queryParam: {}, dataSourceList: [ { - bjmc:'车端OTA升级功能模块' + bjmc:'' } ], columns: [ @@ -878,7 +878,7 @@ export default { if(res.result.kzq.length == 0){ this.dataSourceList=[ { - bjmc:'车端OTA升级功能模块' + bjmc:'' } ] }else{ @@ -981,7 +981,7 @@ export default { }, addlineAtBot(){ let obj={} - obj.bjmc='车端OTA升级功能模块' + obj.bjmc='' this.dataSourceList.push(obj) this.$forceUpdate() },