|
@@ -3,9 +3,9 @@ package com.jeeplus.modules.projectmaterialstorage.web;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.jeeplus.common.config.Global;
|
|
|
import com.jeeplus.common.persistence.Page;
|
|
|
-import com.jeeplus.common.utils.MyBeanUtils;
|
|
|
-import com.jeeplus.common.utils.StringUtils;
|
|
|
-import com.jeeplus.common.utils.ThisLocalityDownloadUtil;
|
|
|
+import com.jeeplus.common.utils.*;
|
|
|
+import com.jeeplus.common.utils.excel.ExportExcel;
|
|
|
+import com.jeeplus.common.utils.excel.ExportMultipleTabsExcel;
|
|
|
import com.jeeplus.common.utils.excel.ImportExcel;
|
|
|
import com.jeeplus.common.web.BaseController;
|
|
|
import com.jeeplus.modules.projectmaterialstorage.entity.ProjectMaterialStorage;
|
|
@@ -16,6 +16,7 @@ import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
|
|
|
import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
|
|
|
import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
|
|
|
import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
|
|
|
+import com.jeeplus.modules.sys.entity.User;
|
|
|
import com.jeeplus.modules.sys.utils.UserUtils;
|
|
|
import com.jeeplus.modules.workreceiptsregister.entity.ResponseEntity;
|
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
@@ -25,6 +26,7 @@ import org.springframework.ui.Model;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
|
+import redis.clients.jedis.Jedis;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
@@ -161,45 +163,115 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
@RequestMapping(value = "storageSave")
|
|
|
public String storageSave(ProjectMaterialStorage projectMaterialStorage, Model model, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
int i = 1;
|
|
|
- List<ProjectMaterialStorageImport> projectMaterialStorageList = new ArrayList<ProjectMaterialStorageImport>();
|
|
|
- List<ProjectMaterialStorageImport> projectMaterialStorageList2 = projectMaterialStorage.getProjectMaterialStorageList();
|
|
|
+ List<ProjectMaterialStorageImport> projectMaterialStorageList = Lists.newArrayList();
|
|
|
+ List<ProjectMaterialStorageImport> metadataList = projectMaterialStorage.getProjectMaterialStorageList();
|
|
|
|
|
|
- if(null == projectMaterialStorageList2 || projectMaterialStorageList2.size() == 0 ){
|
|
|
+ if(null == metadataList || metadataList.isEmpty()){
|
|
|
addMessage(redirectAttributes, "请填写材料信息");
|
|
|
return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
}
|
|
|
// 此处需要修改为迭代器形式
|
|
|
- Iterator<ProjectMaterialStorageImport> iterator = projectMaterialStorageList2.iterator();
|
|
|
+ Iterator<ProjectMaterialStorageImport> iterator = metadataList.iterator();
|
|
|
while (iterator.hasNext()){
|
|
|
ProjectMaterialStorageImport projectMaterialStorageImport = iterator.next();
|
|
|
- if(projectMaterialStorageImport.getSpecifications() == null || projectMaterialStorageImport.getMaterialName() == null || projectMaterialStorageImport.getUnit()== null || "1".equals(projectMaterialStorageImport.getDelFlag())){
|
|
|
+ if("1".equals(projectMaterialStorageImport.getDelFlag())){
|
|
|
iterator.remove();
|
|
|
- }else {
|
|
|
+ }else{
|
|
|
projectMaterialStorageList.add(projectMaterialStorageImport);
|
|
|
}
|
|
|
}
|
|
|
- for(int k=0;k<projectMaterialStorageList.size();k++){
|
|
|
- projectMaterialStorageList.get(k).setProjectNumber(projectMaterialStorage.getProjectId());
|
|
|
- projectMaterialStorageList.get(k).setIsNewRecord(true);
|
|
|
- // 判断项目名称、材料名称、价格是否为空
|
|
|
- if(projectMaterialStorageList.get(k).getMaterialName() ==null || projectMaterialStorageList.get(k).getSpecifications() == null || projectMaterialStorageList.get(k).getUnit()== null){
|
|
|
- addMessage(redirectAttributes, "第"+i+"个材料名称、规格型号、单位等获取失败,请重试");
|
|
|
- return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
+
|
|
|
+ //对相对有效的数据进行处理
|
|
|
+ //有效的数据
|
|
|
+ List<ProjectMaterialStorageImport> effectiveList = Lists.newArrayList();
|
|
|
+ //错误的数据
|
|
|
+ List<ProjectMaterialStorageImport> errorList = Lists.newArrayList();
|
|
|
+ Iterator<ProjectMaterialStorageImport> projectMaterialStorageListIterator = projectMaterialStorageList.iterator();
|
|
|
+ while (projectMaterialStorageListIterator.hasNext()){
|
|
|
+ ProjectMaterialStorageImport projectMaterialStorageImport = projectMaterialStorageListIterator.next();
|
|
|
+ if(StringUtils.isNotBlank(projectMaterialStorageImport.getMaterialName()) || StringUtils.isNotBlank(projectMaterialStorageImport.getUnit())){
|
|
|
+ effectiveList.add(projectMaterialStorageImport);
|
|
|
+ }else {
|
|
|
+ if(StringUtils.isNotBlank(projectMaterialStorageImport.getMaterialName()) && StringUtils.isNotBlank(projectMaterialStorageImport.getUnit())){
|
|
|
+ projectMaterialStorageImport.setErrorMessage("数据中缺少材料名称、材料单位");
|
|
|
+ }else if(StringUtils.isNotBlank(projectMaterialStorageImport.getMaterialName())){
|
|
|
+ projectMaterialStorageImport.setErrorMessage("数据中缺少材料名称");
|
|
|
+ }else if(StringUtils.isNotBlank(projectMaterialStorageImport.getUnit())){
|
|
|
+ projectMaterialStorageImport.setErrorMessage("数据中缺少材料单位");
|
|
|
+ }
|
|
|
+ errorList.add(projectMaterialStorageImport);
|
|
|
}
|
|
|
}
|
|
|
- Map map = projectMaterialStorageService.qureyCountAboutProjectMaterialStorage(projectMaterialStorageList);
|
|
|
- if((map.containsKey("failure"))){
|
|
|
- addMessage(redirectAttributes, map.get("failure").toString());
|
|
|
- return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
+ //对有效的数据进行去重处理
|
|
|
+ for (ProjectMaterialStorageImport info : effectiveList) {
|
|
|
+ // 处理可能的null值,转为空字符串
|
|
|
+ String name = (info.getMaterialName() != null) ? info.getMaterialName() : "";
|
|
|
+ String spec = (info.getSpecifications() != null) ? info.getSpecifications() : "";
|
|
|
+ String projectPriceIncludingTaxStr = (info.getProjectPriceIncludingTax() != null) ? info.getProjectPriceIncludingTax().toString() : "";
|
|
|
+ // 以逗号分隔组合
|
|
|
+ String result = name + "," + spec + "," + projectPriceIncludingTaxStr;
|
|
|
+ info.setDistinctStr(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,List<ProjectMaterialStorageImport>> map = projectMaterialStorageService.distinctProjectMaterialStorage(effectiveList,projectMaterialStorage.getProjectId());
|
|
|
+ //有效数据
|
|
|
+ List<ProjectMaterialStorageImport> uniqueList = map.get("uniqueList");
|
|
|
+ //重复数据
|
|
|
+ List<ProjectMaterialStorageImport> duplicateList = map.get("duplicateList");
|
|
|
+ for (ProjectMaterialStorageImport info : duplicateList) {
|
|
|
+ info.setErrorMessage("重复数据");
|
|
|
+ }
|
|
|
+
|
|
|
+ Iterator<ProjectMaterialStorageImport> uniqueIterator = uniqueList.iterator();
|
|
|
+ while (uniqueIterator.hasNext()){
|
|
|
+ ProjectMaterialStorageImport info = uniqueIterator.next();
|
|
|
+ info.setProjectNumber(projectMaterialStorage.getProjectId());
|
|
|
+ Map<String, Object> saveResultMap = projectMaterialStorageService.saveUniqueInfo(info);
|
|
|
+ Boolean success = (Boolean) saveResultMap.get("success");
|
|
|
+ String message = (String) saveResultMap.get("message");
|
|
|
+ if(!success){
|
|
|
+ info.setErrorMessage(message);
|
|
|
+ errorList.add(info);
|
|
|
+ uniqueIterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //有效数据:uniqueList
|
|
|
+ //错误数据:errorList
|
|
|
+ //重复数据:duplicateList
|
|
|
+ //元数据:metadataList
|
|
|
+ //判定,如果 错误数据 中存在数据,则表示前端传过来的数据并没有完全保存。需要将数据转存成exce文档并给下载接口
|
|
|
+ //可先将数据存储到redis中,保存的redis 的key可以按照 项目id + 登陆人id + uniqueList 这种格式
|
|
|
+ if(!duplicateList.isEmpty()){
|
|
|
+ User user = UserUtils.getUser();
|
|
|
+ String uniqueRedisKey = projectMaterialStorage.getProjectId() + "_" + user.getId() + "_uniqueList";
|
|
|
+ String errorRedisKey = projectMaterialStorage.getProjectId() + "_" + user.getId() + "_errorList";
|
|
|
+ String duplicateRedisKey = projectMaterialStorage.getProjectId() + "_" + user.getId() + "_duplicateList";
|
|
|
+ String metadataRedisKey = projectMaterialStorage.getProjectId() + "_" + user.getId() + "_metadataList";
|
|
|
+
|
|
|
+ // 分别存储各个列表
|
|
|
+
|
|
|
+ if (!errorList.isEmpty()) {
|
|
|
+ projectMaterialStorageService.saveListToZSet(errorRedisKey, errorList);
|
|
|
+ }
|
|
|
+ if (!uniqueList.isEmpty()) {
|
|
|
+ projectMaterialStorageService.saveListToZSet(uniqueRedisKey, uniqueList);
|
|
|
+ }
|
|
|
+ if (!duplicateList.isEmpty()) {
|
|
|
+ projectMaterialStorageService.saveListToZSet(duplicateRedisKey, duplicateList);
|
|
|
+ }
|
|
|
+ if (!metadataList.isEmpty()) {
|
|
|
+ projectMaterialStorageService.saveListToZSet(metadataRedisKey, metadataList);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- projectMaterialStorageService.batchSave(projectMaterialStorageList);
|
|
|
if(StringUtils.isNotBlank(projectMaterialStorage.getProjectId())){
|
|
|
RuralProjectRecords ruralProjectRecords = ruralProjectRecordsService.get(projectMaterialStorage.getProjectId());
|
|
|
//修改2代表已处理
|
|
|
ruralProjectRecords.setprojectMaterialStorageStatus("2");
|
|
|
projectMaterialStorageService.modifyProjectMaterialStorageStatus(ruralProjectRecords);
|
|
|
}
|
|
|
+
|
|
|
return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
}
|
|
|
|
|
@@ -236,23 +308,54 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 导出excel文件
|
|
|
+ * 下载处理后的文档信息
|
|
|
*/
|
|
|
-// @RequiresPermissions("project:projectMaterialStorage:export")
|
|
|
-// @RequestMapping(value = "export", method= RequestMethod.POST)
|
|
|
-// public String exportFile(ProjectMaterialStorage projectMaterialStorage, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
|
|
-// try {
|
|
|
-// //添加查询类型(造价审核)
|
|
|
-// String fileName = "材料库"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
|
|
|
-// List<RuralProjectRecordsExport> list = projectRecordsService.findPageExport(new Page<RuralProjectRecords>(request, response, -1), projectRecords);
|
|
|
-// new ExportExcel("项目", RuralProjectRecordsExport.class).setDataList(list).write(response, fileName).dispose();
|
|
|
-// return null;
|
|
|
-// } catch (Exception e) {
|
|
|
-// addMessage(redirectAttributes, "导出项目记录失败!失败信息:"+e.getMessage());
|
|
|
-// logger.error("Exception e:"+e);
|
|
|
-// }
|
|
|
-// return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
|
|
|
-// }
|
|
|
+ @RequiresPermissions("project:projectMaterialStorage:export")
|
|
|
+ @RequestMapping(value = "export", method= RequestMethod.POST)
|
|
|
+ public String exportFile(ProjectMaterialStorage projectMaterialStorage, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
|
|
|
+ try {
|
|
|
+ projectMaterialStorage.setProjectId("c8e0cb8a12f84403b0acce09bfbd0191");
|
|
|
+ // 1. 创建多页签导出工具实例
|
|
|
+ ExportMultipleTabsExcel exporter = new ExportMultipleTabsExcel();
|
|
|
+
|
|
|
+ // 2. 获取各类数据(从Redis或数据库)
|
|
|
+ String projectId = projectMaterialStorage.getProjectId();
|
|
|
+ String userId = UserUtils.getUser().getId();
|
|
|
+
|
|
|
+ // 错误数据列表
|
|
|
+ List<ProjectMaterialStorage> errorList = projectMaterialStorageService.convertFromRedis(
|
|
|
+ projectId + "_" + userId + "_errorList");
|
|
|
+
|
|
|
+ // 重复数据列表
|
|
|
+ List<ProjectMaterialStorage> duplicateList = projectMaterialStorageService.convertFromRedis(
|
|
|
+ projectId + "_" + userId + "_duplicateList");
|
|
|
+
|
|
|
+ // 有效数据列表
|
|
|
+ List<ProjectMaterialStorage> uniqueList = projectMaterialStorageService.convertFromRedis(
|
|
|
+ projectId + "_" + userId + "_uniqueList");
|
|
|
+
|
|
|
+ // 原数据列表
|
|
|
+ List<ProjectMaterialStorage> metadataList = projectMaterialStorageService.convertFromRedis(
|
|
|
+ projectId + "_" + userId + "_metadataList");
|
|
|
+
|
|
|
+ // 3. 添加Sheet页(页签名称、标题、实体类、数据列表)
|
|
|
+ exporter.addSheet("错误数据", "材料库导入错误数据", ProjectMaterialStorage.class, errorList);
|
|
|
+ exporter.addSheet("重复数据", "材料库导入重复数据", ProjectMaterialStorage.class, duplicateList);
|
|
|
+ exporter.addSheet("有效数据", "材料库导入有效数据", ProjectMaterialStorage.class, uniqueList);
|
|
|
+ exporter.addSheet("原数据", "材料库导入原数据", ProjectMaterialStorage.class, metadataList);
|
|
|
+
|
|
|
+ // 4. 导出文件
|
|
|
+ String fileName = "材料库导入数据汇总_" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
|
|
|
+ exporter.write(response, fileName);
|
|
|
+ exporter.dispose(); // 清理资源
|
|
|
+ return null;
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ addMessage(redirectAttributes, "导出失败!错误信息:" + e.getMessage());
|
|
|
+ logger.error("多页签导出异常", e);
|
|
|
+ }
|
|
|
+ return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -266,9 +369,6 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
String storageFlag = projectRecords.getStorageFlag();
|
|
|
if (projectRecords != null && StringUtils.isNotBlank(projectRecords.getId())) {
|
|
|
projectRecords = ruralProjectRecordsService.getQueryProjectUsers(projectRecords.getId());
|
|
|
-// RuralProjectcontentinfo ruralProjectcontentinfo = projectRecordsService.formAccessory(projectRecords);
|
|
|
-// projectRecordsService.disposeData(ruralProjectcontentinfo);
|
|
|
-// model.addAttribute("projectcontentinfo", ruralProjectcontentinfo);
|
|
|
}
|
|
|
projectRecords.setStorageFlag(storageFlag);
|
|
|
model.addAttribute("pageId",pageId);
|
|
@@ -287,13 +387,20 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
try {
|
|
|
ImportExcel ei = new ImportExcel(file, 1, 0);
|
|
|
List<ProjectMaterialStorage> list = ei.getDataList(ProjectMaterialStorage.class);
|
|
|
- List<ProjectMaterialStorage> listAll = new ArrayList<>();
|
|
|
+
|
|
|
+ /*List<ProjectMaterialStorage> listAll = new ArrayList<>();
|
|
|
+ //创建材料名称或单位为空的数据
|
|
|
+ List<ProjectMaterialStorage> materialNameOrUnitIsNullList = new ArrayList<>();
|
|
|
+
|
|
|
for (ProjectMaterialStorage materialStorage : list) {
|
|
|
- if(StringUtils.isNotBlank(materialStorage.getMaterialName()) && null != materialStorage.getSpecifications() && null != materialStorage.getUnit() ){
|
|
|
+ //判断材料名称或单位是否为空
|
|
|
+ if(StringUtils.isNotBlank(materialStorage.getMaterialName()) && StringUtils.isNotBlank(materialStorage.getUnit())){
|
|
|
listAll.add(materialStorage);
|
|
|
+ }else{
|
|
|
+ materialNameOrUnitIsNullList.add(materialStorage);
|
|
|
}
|
|
|
- }
|
|
|
- responseEntity.setData(listAll);
|
|
|
+ }*/
|
|
|
+ responseEntity.setData(list);
|
|
|
} catch (Exception e) {
|
|
|
logger.error("导入材料费用失败!",e);
|
|
|
responseEntity.setCode(400);
|
|
@@ -310,14 +417,6 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
} catch (Exception e) {
|
|
|
logger.error("材料库处理表模板下载失败!",e);
|
|
|
}
|
|
|
- /*try {
|
|
|
- String fileName = "设计概算编制审核调整数据导入模板.xlsx";
|
|
|
- List<WorkPreliminaryDesignEstimate> list = Lists.newArrayList();
|
|
|
- new ExportExcel("设计概算编制审核调整数据", WorkPreliminaryDesignEstimate.class, 1).setDataList(list).write(response, fileName).dispose();
|
|
|
- return null;
|
|
|
- } catch (Exception e) {
|
|
|
- addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
|
|
|
- }*/
|
|
|
return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage/?repage";
|
|
|
}
|
|
|
|
|
@@ -343,7 +442,7 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 选择开票项目
|
|
|
+ * 选择材料关联项目
|
|
|
*/
|
|
|
@RequestMapping(value = "selectproject")
|
|
|
public String selectproject(ProjectRecords project, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String ids, Integer isProject, Integer isProjectFalg, String details, HttpServletRequest request, HttpServletResponse response, Model model) {
|
|
@@ -386,9 +485,6 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
public String ProjectMessageform(RuralProjectRecords projectRecords, Model model) {
|
|
|
if (projectRecords != null && StringUtils.isNotBlank(projectRecords.getId())) {
|
|
|
projectRecords = ruralProjectRecordsService.getQueryProjectUsers(projectRecords.getId());
|
|
|
-// RuralProjectcontentinfo ruralProjectcontentinfo = projectRecordsService.formAccessory(projectRecords);
|
|
|
-// projectRecordsService.disposeData(ruralProjectcontentinfo);
|
|
|
-// model.addAttribute("projectcontentinfo", ruralProjectcontentinfo);
|
|
|
}
|
|
|
model.addAttribute("projectRecords",projectRecords);
|
|
|
return "modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList";
|
|
@@ -406,9 +502,6 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
public String ruralCostProjectMessageForm(RuralProjectRecords projectRecords, Model model) {
|
|
|
if (projectRecords != null && StringUtils.isNotBlank(projectRecords.getId())) {
|
|
|
projectRecords = ruralProjectRecordsService.getQueryProjectUsers(projectRecords.getId());
|
|
|
-// RuralProjectcontentinfo ruralProjectcontentinfo = projectRecordsService.formAccessory(projectRecords);
|
|
|
-// projectRecordsService.disposeData(ruralProjectcontentinfo);
|
|
|
-// model.addAttribute("projectcontentinfo", ruralProjectcontentinfo);
|
|
|
}
|
|
|
model.addAttribute("projectRecords",projectRecords);
|
|
|
return "modules/ruralprojectrecords/cost/ruralCostProjectMessageList";
|
|
@@ -426,20 +519,20 @@ public class ProjectMaterialStorageController extends BaseController {
|
|
|
String projectNumber = projectMaterialStorage.getProjectName().substring(0,projectMaterialStorage.getProjectName().indexOf(","));
|
|
|
projectMaterialStorage.setProjectNumber(projectNumber);
|
|
|
}
|
|
|
- if(projectMaterialStorage.getProjectNumber()==null){
|
|
|
+ if(StringUtils.isBlank(projectMaterialStorage.getProjectNumber()) && StringUtils.isNotBlank(projectMaterialStorage.getId())){
|
|
|
projectMaterialStorage = projectMaterialStorageService.get(projectMaterialStorage.getId());
|
|
|
}
|
|
|
-// 判断项目名称、材料名称、价格是否为空
|
|
|
- if(projectMaterialStorage.getProjectNumber()==null && projectMaterialStorage.getMaterialName() ==null && projectMaterialStorage.getPrice() == null ){
|
|
|
- addMessage(redirectAttributes, "项目名称、材料名称、价格等获取失败,请重试");
|
|
|
+// 判断项目名称、材料名称、是否为空
|
|
|
+ if(StringUtils.isBlank(projectMaterialStorage.getProjectNumber()) && StringUtils.isBlank(projectMaterialStorage.getMaterialName())){
|
|
|
+ addMessage(redirectAttributes, "项目名称、材料名称等获取失败,请重试");
|
|
|
if("1".equals(pageId)){
|
|
|
return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessageAll/?repage";
|
|
|
}
|
|
|
return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage";
|
|
|
}
|
|
|
// 进行项目名称、材料名称、价格重复的判断
|
|
|
- if(projectMaterialStorage.getProjectNumber()==null && projectMaterialStorage.getMaterialName() ==null && projectMaterialStorage.getPrice() == null ){
|
|
|
- addMessage(redirectAttributes, "项目名称、材料名称、价格等获取失败,请重试");
|
|
|
+ if(StringUtils.isBlank(projectMaterialStorage.getProjectNumber()) && StringUtils.isBlank(projectMaterialStorage.getMaterialName())){
|
|
|
+ addMessage(redirectAttributes, "项目名称、材料名称等获取失败,请重试");
|
|
|
return "redirect:"+Global.getAdminPath()+"/project/projectMaterialStorage";
|
|
|
}
|
|
|
|