Преглед на файлове

成本模型(去掉和外协相关的内容,材料费规格型号必填)

sl преди 1 година
родител
ревизия
69e7ec7487

+ 197 - 57
module_kzks/src/main/java/org/jeecg/modules/costModelList/controller/CostModelListController.java

@@ -58,6 +58,7 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 
 	 /**
 	  *   成本模型新增
+	  *   20231030不用加入外协费,材料费规格型号必填
 	  */
 	 @AutoLog(value = "成本模型-添加")
 	 @ApiOperation(value="成本模型-添加", notes="成本模型-添加")
@@ -84,8 +85,9 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 			 costModelList.setClfFilename(dto.getClfurl().get(0).getFileName());
 			 costModelList.setClfFilesize(dto.getClfurl().get(0).getFileSize());
 			 //计算并导入数据
-			 Result<CostModelList> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
-			 CostModelList costModel1 = result1.getResult();
+			 Result<CostModelImportVO> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
+			 CostModelList costModel1 = result1.getResult().getCostModel();
+			 msg = msg +result1.getResult().getTishiMsg();
 			 if(costModel1!=null){
 				 costModelList.setMaxClf(costModel1.getMaxClf());
 				 costModelList.setMinClf(costModel1.getMinClf());
@@ -94,23 +96,23 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 			 }
 		 }
 
-		 if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
-			 String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
-			 String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
-			 log.info("导入的外协费详情地址为:{}",wxfUrl);
-			 costModelList.setWxfUrl(wxfUrl1);
-			 costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
-			 costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
-			 //计算并导入数据
-			 Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
-			 CostModelList costModel2 = result2.getResult().getCostModel();
-			 msg = msg +result2.getResult().getTishiMsg();
-			 if(costModel2!=null){
-				 costModelList.setMaxWxf(costModel2.getMaxWxf());
-				 costModelList.setMinWxf(costModel2.getMinWxf());
-				 costModelList.setAveWxf(costModel2.getAveWxf());
-			 }
-		 }
+//		 if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
+//			 String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
+//			 String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
+//			 log.info("导入的外协费详情地址为:{}",wxfUrl);
+//			 costModelList.setWxfUrl(wxfUrl1);
+//			 costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
+//			 costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
+//			 //计算并导入数据
+//			 Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
+//			 CostModelList costModel2 = result2.getResult().getCostModel();
+//			 msg = msg +result2.getResult().getTishiMsg();
+//			 if(costModel2!=null){
+//				 costModelList.setMaxWxf(costModel2.getMaxWxf());
+//				 costModelList.setMinWxf(costModel2.getMinWxf());
+//				 costModelList.setAveWxf(costModel2.getAveWxf());
+//			 }
+//		 }
 
 		 if(Objects.equals("添加成功!",msg)) costModelList.setModelStatus(0);
 		 else costModelList.setModelStatus(1);
@@ -119,6 +121,62 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 		 return Result.OK(msg);
 	 }
 
+//	public Result<String> add(@RequestBody CostModelListAddDTO dto) {
+//		//重名判断
+//		if(costModelListService.chongmingPanduan(dto.getXmName())){
+//			return Result.error("项目名称不可重复!");
+//		}
+//
+//		String msg ="添加成功!";
+//
+//		CostModelList costModelList = CostModelListConvert.INSTANCE.toCostModelList(dto);
+//		costModelListService.save(costModelList);
+//		String xmId = costModelList.getId();
+//		String xmName = dto.getXmName();
+//
+//		if(dto.getClfurl()!=null && dto.getClfurl().get(0).getFilePath()!=null){
+//			String clfUrl1 = dto.getClfurl().get(0).getFilePath();
+//			String clfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  clfUrl1;
+//			log.info("导入的材料费详情地址为:{}",clfUrl);
+//			costModelList.setClfUrl(clfUrl1);
+//			costModelList.setClfFilename(dto.getClfurl().get(0).getFileName());
+//			costModelList.setClfFilesize(dto.getClfurl().get(0).getFileSize());
+//			//计算并导入数据
+//			Result<CostModelList> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
+//			CostModelList costModel1 = result1.getResult();
+//			if(costModel1!=null){
+//				costModelList.setMaxClf(costModel1.getMaxClf());
+//				costModelList.setMinClf(costModel1.getMinClf());
+//				costModelList.setAveClf(costModel1.getAveClf());
+//				costModelList.setRecentClf(costModel1.getRecentClf());
+//			}
+//		}
+//
+//		if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
+//			String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
+//			String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
+//			log.info("导入的外协费详情地址为:{}",wxfUrl);
+//			costModelList.setWxfUrl(wxfUrl1);
+//			costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
+//			costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
+//			//计算并导入数据
+//			Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
+//			CostModelList costModel2 = result2.getResult().getCostModel();
+//			msg = msg +result2.getResult().getTishiMsg();
+//			if(costModel2!=null){
+//				costModelList.setMaxWxf(costModel2.getMaxWxf());
+//				costModelList.setMinWxf(costModel2.getMinWxf());
+//				costModelList.setAveWxf(costModel2.getAveWxf());
+//			}
+//		}
+//
+//		if(Objects.equals("添加成功!",msg)) costModelList.setModelStatus(0);
+//		else costModelList.setModelStatus(1);
+//		costModelListService.updateById(costModelList);
+//
+//		return Result.OK(msg);
+//	}
+
 	/**
 	 *  编辑
 	 */
@@ -152,8 +210,9 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 				columnMap.put("xiangmu_id",xmId);
 				clService.removeByMap(columnMap);
 				//计算并导入数据
-				Result<CostModelList> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
-				CostModelList costModel1 = result1.getResult();
+				Result<CostModelImportVO> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
+				CostModelList costModel1 = result1.getResult().getCostModel();
+				msg = msg + result1.getResult().getTishiMsg();
 				if(costModel1!=null){
 					costModelList.setMaxClf(costModel1.getMaxClf());
 					costModelList.setMinClf(costModel1.getMinClf());
@@ -163,29 +222,29 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 			}
 		}
 
-		if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
-			String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
-			costModelList.setWxfUrl(wxfUrl1);
-			costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
-			costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
-			String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
-			if(!Objects.equals(wxfUrl1,costModelList1.getWxfUrl())){
-				Map<String, Object> columnMap = new HashMap<>();
-				columnMap.put("xiangmu_id",xmId);
-				wxService.removeByMap(columnMap);
-				//删除原成本模型导入提示信息
-				modelMsgService.removeByMap(columnMap);
-				//计算并导入数据
-				Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
-				CostModelList costModel2 = result2.getResult().getCostModel();
-				msg = msg + result2.getResult().getTishiMsg();
-				if(costModel2!=null){
-					costModelList.setMaxWxf(costModel2.getMaxWxf());
-					costModelList.setMinWxf(costModel2.getMinWxf());
-					costModelList.setAveWxf(costModel2.getAveWxf());
-				}
-			}
-		}
+//		if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
+//			String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
+//			costModelList.setWxfUrl(wxfUrl1);
+//			costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
+//			costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
+//			String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
+//			if(!Objects.equals(wxfUrl1,costModelList1.getWxfUrl())){
+//				Map<String, Object> columnMap = new HashMap<>();
+//				columnMap.put("xiangmu_id",xmId);
+//				wxService.removeByMap(columnMap);
+//				//删除原成本模型导入提示信息
+//				modelMsgService.removeByMap(columnMap);
+//				//计算并导入数据
+//				Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
+//				CostModelList costModel2 = result2.getResult().getCostModel();
+//				msg = msg + result2.getResult().getTishiMsg();
+//				if(costModel2!=null){
+//					costModelList.setMaxWxf(costModel2.getMaxWxf());
+//					costModelList.setMinWxf(costModel2.getMinWxf());
+//					costModelList.setAveWxf(costModel2.getAveWxf());
+//				}
+//			}
+//		}
 
 		if(Objects.equals("编辑成功!",msg)) costModelList.setModelStatus(0);
 		else costModelList.setModelStatus(1);
@@ -195,6 +254,75 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
 		return Result.OK(msg);
 	}
 
+//	public Result<String> edit(@RequestBody CostModelListUpdateDTO dto) {
+//		String xmId = dto.getId();
+//		String xmName = dto.getXmName();
+//		CostModelList costModelList = CostModelListConvert.INSTANCE.toCostModelList2(dto);
+//		CostModelList costModelList1 = costModelListService.getById(dto.getId());
+//
+//		if(!costModelList1.getXmName().equals(dto.getXmName())){
+//			//重名判断
+//			if(costModelListService.chongmingPanduan(dto.getXmName())){
+//				return Result.error("项目名称不可重复!");
+//			}
+//		}
+//
+//		String msg ="编辑成功!";
+//
+//		if(dto.getClfurl()!=null && dto.getClfurl().get(0).getFilePath()!=null){
+//			String clfUrl1 = dto.getClfurl().get(0).getFilePath();
+//			costModelList.setClfUrl(clfUrl1);
+//			costModelList.setClfFilename(dto.getClfurl().get(0).getFileName());
+//			costModelList.setClfFilesize(dto.getClfurl().get(0).getFileSize());
+//			String clfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  clfUrl1;
+//			if(!Objects.equals(clfUrl1,costModelList1.getClfUrl())){
+//				Map<String, Object> columnMap = new HashMap<>();
+//				columnMap.put("xiangmu_id",xmId);
+//				clService.removeByMap(columnMap);
+//				//计算并导入数据
+//				Result<CostModelList> result1 = clService.importExcel1(xmId, xmName, clfUrl, CostModelXmxqCl.class);
+//				CostModelList costModel1 = result1.getResult();
+//				if(costModel1!=null){
+//					costModelList.setMaxClf(costModel1.getMaxClf());
+//					costModelList.setMinClf(costModel1.getMinClf());
+//					costModelList.setAveClf(costModel1.getAveClf());
+//					costModelList.setRecentClf(costModel1.getRecentClf());
+//				}
+//			}
+//		}
+//
+//		if(dto.getWxfurl()!=null && dto.getWxfurl().get(0).getFilePath()!=null){
+//			String wxfUrl1 = dto.getWxfurl().get(0).getFilePath();
+//			costModelList.setWxfUrl(wxfUrl1);
+//			costModelList.setWxfFilename(dto.getWxfurl().get(0).getFileName());
+//			costModelList.setWxfFilesize(dto.getWxfurl().get(0).getFileSize());
+//			String wxfUrl = jeecgBaseConfig.getPath().getUpload() + "/"+  wxfUrl1;
+//			if(!Objects.equals(wxfUrl1,costModelList1.getWxfUrl())){
+//				Map<String, Object> columnMap = new HashMap<>();
+//				columnMap.put("xiangmu_id",xmId);
+//				wxService.removeByMap(columnMap);
+//				//删除原成本模型导入提示信息
+//				modelMsgService.removeByMap(columnMap);
+//				//计算并导入数据
+//				Result<CostModelImportVO> result2 = wxService.importExcel1(xmId, xmName, wxfUrl, CostModelXmxqWx.class);
+//				CostModelList costModel2 = result2.getResult().getCostModel();
+//				msg = msg + result2.getResult().getTishiMsg();
+//				if(costModel2!=null){
+//					costModelList.setMaxWxf(costModel2.getMaxWxf());
+//					costModelList.setMinWxf(costModel2.getMinWxf());
+//					costModelList.setAveWxf(costModel2.getAveWxf());
+//				}
+//			}
+//		}
+//
+//		if(Objects.equals("编辑成功!",msg)) costModelList.setModelStatus(0);
+//		else costModelList.setModelStatus(1);
+//
+//		costModelList.setXmName(xmName);
+//		costModelListService.updateById(costModelList);
+//		return Result.OK(msg);
+//	}
+
 	/**
 	 * 成本模型——-编辑前查询
 	 *
@@ -388,18 +516,30 @@ public class CostModelListController extends JeecgController<CostModelList, ICos
         return super.importExcel(request, response, CostModelList.class);
     }
 
-	 /**
-	  * 选中相应的某条成本模型数据,导出该条数据相应的外协费以及材料费的详情表
-	  *
-	  * @param
-	  */
-	 @ApiOperation(value="成本模型——导出外协费材料费详情excel")
-	 @RequestMapping(value = "/exportXlsWXFCLFDetail")
-	 public ModelAndView exportXlsWXFCLFDetail(HttpServletRequest request, HttpServletResponse response) {
-//		 System.out.println("进入控制层");
-//		 String xiangmuid = request.getParameter("xiangmuid");
-//		 System.out.println(xiangmuid);
-		 return costModelListService.exportXlsWXFCLFDetail(request.getParameter("xiangmuid"), CostModelList.class, "成本模型");
-	 }
+//	 /**
+//	  * 选中相应的某条成本模型数据,导出该条数据相应的外协费以及材料费的详情表
+//	  *
+//	  * @param
+//	  */
+//	 @ApiOperation(value="成本模型——导出外协费材料费详情excel")
+//	 @RequestMapping(value = "/exportXlsWXFCLFDetail")
+//	 public ModelAndView exportXlsWXFCLFDetail(HttpServletRequest request, HttpServletResponse response) {
+////		 System.out.println("进入控制层");
+////		 String xiangmuid = request.getParameter("xiangmuid");
+////		 System.out.println(xiangmuid);
+//		 return costModelListService.exportXlsWXFCLFDetail(request.getParameter("xiangmuid"), CostModelList.class, "成本模型");
+//	 }
+
+	/**
+	 * 选中相应的某条成本模型数据,导出该条数据相应的外协费以及材料费的详情表
+	 * 20231030修改逻辑:外协费详情不用导出,只需要导出材料费及详情即可
+	 *
+	 * @param
+	 */
+	@ApiOperation(value="成本模型——导出材料费详情excel")
+	@RequestMapping(value = "/exportXlsWXFCLFDetail")
+	public ModelAndView exportXlsWXFCLFDetail(HttpServletRequest request, HttpServletResponse response) {
+		return costModelListService.exportXlsWXFCLFDetail(request.getParameter("xiangmuid"), CostModelList.class, "成本模型");
+	}
 
 }

+ 4 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelList/mapper/CostModelListMapper.java

@@ -23,4 +23,8 @@ public interface CostModelListMapper extends BaseMapper<CostModelList> {
     /**成本模型——外协费材料费各自最大值最小值平均值近期值总和——根据项目id查询*/
     @Select("select max_wxf, min_wxf, ave_wxf, max_clf, min_clf, ave_clf, recent_clf from kzks_cost_model where id = #{id}")
     public List<CostModelList> getWXFCLFDetailList(@Param("id") String id);
+
+    /**成本模型——材料费最大值最小值平均值近期值总和——根据项目id查询*/
+    @Select("select max_clf, min_clf, ave_clf, recent_clf from kzks_cost_model where id = #{id}")
+    public List<CostModelList> getCLFDetailList(@Param("id") String id);
 }

+ 119 - 34
module_kzks/src/main/java/org/jeecg/modules/costModelList/service/impl/CostModelListServiceImpl.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.costModelList.service.impl;
 
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.shiro.SecurityUtils;
@@ -65,16 +67,123 @@ public class CostModelListServiceImpl extends ServiceImpl<CostModelListMapper, C
         else return false;
     }
 
+//    /**
+//     * 成本模型——导出外协费材料费详情excel
+//     */
+//    public ModelAndView exportXlsWXFCLFDetail(String xiangmuid, Class<CostModelList> clazz, String title) {
+////        System.out.println("进入服务层");
+//        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+//        //1.根据项目id查出外协费材料费总计价格、外协费总和详情、材料费总和详情
+////        System.out.println("从数据库中获取详情列表");
+//        List<CostModelList> listWxfClf = getWXFCLFDetailList(xiangmuid);
+//        List<CostModelXmxqWx> listWxf = costModelXmxqWxService.getWXFDetailList(xiangmuid);
+//        List<CostModelXmxqCl> listClf = costModelXmxqClService.getCLFDetailList(xiangmuid);
+//
+//        //用来存储查找到的材料价格库详情信息
+//        List<CostModelClPriceExportVO> listClPToExcel = new ArrayList<>();
+//        for(CostModelXmxqCl xmxqCl:listClf){
+//            //根据物料编码、规格型号、质量等级、批次查找单价以及采购时间
+//            List<CostModelClPrice> listClp = costModelClPriceService.getCLPDetailList(xmxqCl);
+//
+//            for(CostModelClPrice clp:listClp){
+//                CostModelClPriceExportVO clPriceExportVO = new CostModelClPriceExportVO();
+//                clPriceExportVO.setXiangmuName(xmxqCl.getXiangmuName());
+//                clPriceExportVO.setWlbm(clp.getWlbm());
+//                clPriceExportVO.setGgxh(clp.getGgxh());
+//                clPriceExportVO.setZlLevel(clp.getZlLevel());
+//                clPriceExportVO.setPici(clp.getPici());
+//                clPriceExportVO.setHtDate(clp.getHtDate());
+//                clPriceExportVO.setDanjia(clp.getDanjia());
+//                clPriceExportVO.setNumber(xmxqCl.getNumber());
+//                listClPToExcel.add(clPriceExportVO);
+//            }
+//        }
+////        System.out.println("获取写入表格的材料费详情信息");
+////        listClPToExcel.forEach(System.out::println);
+//
+////        CostModelList wxfclfAll = new CostModelList();   //创建成本模型对象存储项目的外协费材料费总和  此处只是项目唯一选中进行导出
+////        for(CostModelList wxfclf:listWxfClf){
+////            wxfclfAll.setMaxWxf(wxfclf.getMaxWxf());
+////            wxfclfAll.setMinWxf(wxfclf.getMinWxf());
+////            wxfclfAll.setAveWxf(wxfclf.getAveWxf());
+////            wxfclfAll.setMaxClf(wxfclf.getMaxClf());
+////            wxfclfAll.setMinClf(wxfclf.getMinClf());
+////            wxfclfAll.setAveClf(wxfclf.getAveClf());
+////            wxfclfAll.setRecentClf(wxfclf.getRecentClf());
+////        }
+//
+//        CostModelXmxqWx wxfAll = new CostModelXmxqWx();
+//        wxfAll.setXiangmuName("合计");
+//        wxfAll.setMaxPrice(listWxfClf.get(0).getMaxWxf());
+//        wxfAll.setMinPrice(listWxfClf.get(0).getMinWxf());
+//        wxfAll.setAvePrice(listWxfClf.get(0).getAveWxf());
+//        listWxf.add(wxfAll);
+//        CostModelXmxqCl clfAll = new CostModelXmxqCl();
+//        clfAll.setXiangmuName("合计");
+//        clfAll.setMaxPrice(listWxfClf.get(0).getMaxClf());
+//        clfAll.setMinPrice(listWxfClf.get(0).getMinClf());
+//        clfAll.setAvePrice(listWxfClf.get(0).getAveClf());
+//        clfAll.setRecentPrice(listWxfClf.get(0).getRecentClf());
+//        listClf.add(clfAll);
+////        System.out.println("获取外协费和材料费总和信息");
+////        listWxf.forEach(System.out::println);
+////        listClf.forEach(System.out::println);
+//
+//
+//        //2.多sheep输入
+//        List<Map<String, Object>> list = new ArrayList<>();
+//        //外协费
+////        System.out.println("制作外协表");
+//        Map<String, Object> map1 = new HashMap<>();
+//        map1.put(NormalExcelConstants.CLASS, CostModelXmxqWx.class);
+//        map1.put(NormalExcelConstants.PARAMS, new ExportParams("外协费总和详情表", "导出人:" + sysUser.getRealname(), "外协费"));
+//        map1.put(NormalExcelConstants.DATA_LIST, listWxf);
+//        list.add(map1);
+//        //材料费
+////        System.out.println("制作材料表");
+//        Map<String, Object> map2 = new HashMap<>();
+//        map2.put(NormalExcelConstants.CLASS, CostModelXmxqCl.class);
+//        map2.put(NormalExcelConstants.PARAMS, new ExportParams("材料费总和详情表", "导出人:" + sysUser.getRealname(), "材料费"));
+//        map2.put(NormalExcelConstants.DATA_LIST, listClf);
+//        list.add(map2);
+//
+//        //材料费详情
+////        System.out.println("制作材料详情表");
+//        Map<String, Object> map3 = new HashMap<>();
+//        map3.put(NormalExcelConstants.CLASS, CostModelClPriceExportVO.class);
+//        map3.put(NormalExcelConstants.PARAMS, new ExportParams("材料价格详情表", "导出人:" + sysUser.getRealname(), "材料价格详情"));
+//        map3.put(NormalExcelConstants.DATA_LIST, listClPToExcel);
+//        list.add(map3);
+//
+//        //3.AutoPoi 导出Excel
+////        System.out.println("导出excel");
+//        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+//        mv.addObject(NormalExcelConstants.FILE_NAME, title);  //文件名称,但是前端会重新命名
+//        mv.addObject(NormalExcelConstants.MAP_LIST, list);
+////        mv.addObject(NormalExcelConstants.CLASS, clazz); //实体类型
+////        mv.addObject(NormalExcelConstants.PARAMS,new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title));//标题,sheet名称
+////        mv.addObject(NormalExcelConstants.DATA_LIST, listWxf); //list数据
+//
+//        return mv;
+//    }
+
+    /**成本模型——外协费材料费各自最大值最小值平均值近期值总和——根据项目id查询*/
+    public List<CostModelList> getWXFCLFDetailList(String xiangmuid){
+        return costModelListMapper.getWXFCLFDetailList(xiangmuid);
+    }
+
     /**
      * 成本模型——导出外协费材料费详情excel
+     * 20231030修改逻辑不要外协费详情,只要材料费详情
      */
     public ModelAndView exportXlsWXFCLFDetail(String xiangmuid, Class<CostModelList> clazz, String title) {
 //        System.out.println("进入服务层");
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        //1.根据项目id查出外协费材料费总计价格、外协费总和详情、材料费总和详情
+        //1.根据项目id查出材料费总计价格、材料费总和详情
 //        System.out.println("从数据库中获取详情列表");
-        List<CostModelList> listWxfClf = getWXFCLFDetailList(xiangmuid);
-        List<CostModelXmxqWx> listWxf = costModelXmxqWxService.getWXFDetailList(xiangmuid);
+//        List<CostModelList> listWxfClf = getWXFCLFDetailList(xiangmuid);
+        List<CostModelList> listClfAll = getCLFDetailList(xiangmuid);
+//        List<CostModelXmxqWx> listWxf = costModelXmxqWxService.getWXFDetailList(xiangmuid);
         List<CostModelXmxqCl> listClf = costModelXmxqClService.getCLFDetailList(xiangmuid);
 
         //用来存储查找到的材料价格库详情信息
@@ -99,29 +208,12 @@ public class CostModelListServiceImpl extends ServiceImpl<CostModelListMapper, C
 //        System.out.println("获取写入表格的材料费详情信息");
 //        listClPToExcel.forEach(System.out::println);
 
-//        CostModelList wxfclfAll = new CostModelList();   //创建成本模型对象存储项目的外协费材料费总和  此处只是项目唯一选中进行导出
-//        for(CostModelList wxfclf:listWxfClf){
-//            wxfclfAll.setMaxWxf(wxfclf.getMaxWxf());
-//            wxfclfAll.setMinWxf(wxfclf.getMinWxf());
-//            wxfclfAll.setAveWxf(wxfclf.getAveWxf());
-//            wxfclfAll.setMaxClf(wxfclf.getMaxClf());
-//            wxfclfAll.setMinClf(wxfclf.getMinClf());
-//            wxfclfAll.setAveClf(wxfclf.getAveClf());
-//            wxfclfAll.setRecentClf(wxfclf.getRecentClf());
-//        }
-
-        CostModelXmxqWx wxfAll = new CostModelXmxqWx();
-        wxfAll.setXiangmuName("合计");
-        wxfAll.setMaxPrice(listWxfClf.get(0).getMaxWxf());
-        wxfAll.setMinPrice(listWxfClf.get(0).getMinWxf());
-        wxfAll.setAvePrice(listWxfClf.get(0).getAveWxf());
-        listWxf.add(wxfAll);
         CostModelXmxqCl clfAll = new CostModelXmxqCl();
         clfAll.setXiangmuName("合计");
-        clfAll.setMaxPrice(listWxfClf.get(0).getMaxClf());
-        clfAll.setMinPrice(listWxfClf.get(0).getMinClf());
-        clfAll.setAvePrice(listWxfClf.get(0).getAveClf());
-        clfAll.setRecentPrice(listWxfClf.get(0).getRecentClf());
+        clfAll.setMaxPrice(listClfAll.get(0).getMaxClf());
+        clfAll.setMinPrice(listClfAll.get(0).getMinClf());
+        clfAll.setAvePrice(listClfAll.get(0).getAveClf());
+        clfAll.setRecentPrice(listClfAll.get(0).getRecentClf());
         listClf.add(clfAll);
 //        System.out.println("获取外协费和材料费总和信息");
 //        listWxf.forEach(System.out::println);
@@ -130,13 +222,6 @@ public class CostModelListServiceImpl extends ServiceImpl<CostModelListMapper, C
 
         //2.多sheep输入
         List<Map<String, Object>> list = new ArrayList<>();
-        //外协费
-//        System.out.println("制作外协表");
-        Map<String, Object> map1 = new HashMap<>();
-        map1.put(NormalExcelConstants.CLASS, CostModelXmxqWx.class);
-        map1.put(NormalExcelConstants.PARAMS, new ExportParams("外协费总和详情表", "导出人:" + sysUser.getRealname(), "外协费"));
-        map1.put(NormalExcelConstants.DATA_LIST, listWxf);
-        list.add(map1);
         //材料费
 //        System.out.println("制作材料表");
         Map<String, Object> map2 = new HashMap<>();
@@ -165,9 +250,9 @@ public class CostModelListServiceImpl extends ServiceImpl<CostModelListMapper, C
         return mv;
     }
 
-    /**成本模型——外协费材料费各自最大值最小值平均值近期值总和——根据项目id查询*/
-    public List<CostModelList> getWXFCLFDetailList(String xiangmuid){
-        return costModelListMapper.getWXFCLFDetailList(xiangmuid);
+    /**成本模型——材料费最大值最小值平均值近期值总和——根据项目id查询*/
+    public List<CostModelList> getCLFDetailList(String id){
+        return costModelListMapper.getCLFDetailList(id);
     }
 
 

+ 2 - 1
module_kzks/src/main/java/org/jeecg/modules/costModelXmxqCl/service/ICostModelXmxqClService.java

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.costModelList.entity.CostModelList;
+import org.jeecg.modules.costModelList.vo.CostModelImportVO;
 import org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl;
 
 import java.util.List;
@@ -20,7 +21,7 @@ public interface ICostModelXmxqClService extends IService<CostModelXmxqCl> {
     /**
      * 通过excel导入材料费
      */
-    public Result<CostModelList> importExcel1(String xmId, String xmName, String strUrl, Class<CostModelXmxqCl> clazz);
+    public Result<CostModelImportVO> importExcel1(String xmId, String xmName, String strUrl, Class<CostModelXmxqCl> clazz);
 
     /**成本模型——材料费详情——根据项目id查询*/
     public List<CostModelXmxqCl> getCLFDetailList(String xiangmuid);

+ 125 - 11
module_kzks/src/main/java/org/jeecg/modules/costModelXmxqCl/service/impl/CostModelXmxqClServiceImpl.java

@@ -6,6 +6,9 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.costModelClPrice.service.ICostModelClPriceService;
 import org.jeecg.modules.costModelList.entity.CostModelList;
 import org.jeecg.modules.costModelList.mapper.CostModelListMapper;
+import org.jeecg.modules.costModelList.vo.CostModelImportVO;
+import org.jeecg.modules.costModelMsg.entity.CostModelMsg;
+import org.jeecg.modules.costModelMsg.service.ICostModelMsgService;
 import org.jeecg.modules.costModelXmxqCl.entity.CostModelXmxqCl;
 import org.jeecg.modules.costModelXmxqCl.mapper.CostModelXmxqClMapper;
 import org.jeecg.modules.costModelXmxqCl.service.ICostModelXmxqClService;
@@ -39,10 +42,16 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
     @SuppressWarnings("all")
     private ICostModelClPriceService costModelClPriceService;
 
+    @Autowired
+    @SuppressWarnings("all")
+    private ICostModelMsgService costModelMsgService;
+
+
     /**
      * 通过excel导入材料费
+     * 20231030修改逻辑,规格型号必填,不填为报警信息
      */
-    public Result<CostModelList> importExcel1(String xmId, String xmName, String strUrl, Class<CostModelXmxqCl> clazz) {
+    public Result<CostModelImportVO> importExcel1(String xmId, String xmName, String strUrl, Class<CostModelXmxqCl> clazz) {
         CostModelList costModelList = new CostModelList();
         costModelList.setId(xmId);
 
@@ -66,30 +75,65 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
             BigDecimal clfMin = new BigDecimal(0);
             BigDecimal clfAve = new BigDecimal(0);
             BigDecimal clfRecent = new BigDecimal(0);
+            List<CostModelMsg> modelMsgList = new ArrayList<>();//导入提示信息列表
+            int num1 = 0; //导入的材料费在价格库找不到对应数据的条数
+            int num2 = 0; //导入的材料费缺少必填的条数
+            String msg =""; //最终返回的提示信息
+            String msg2 ="";
             for(CostModelXmxqCl cl:list){
-                cl.setXiangmuName(xmName);
-                cl.setXiangmuId(xmId);
-                CostModelXmxqCl clxq = costModelClPriceService.selectClPriceValue(cl);
-                if(clxq != null){
-                    list1.add(clxq);
-                    clfMax = clfMax.add(new BigDecimal(clxq.getMaxPrice()));
-                    clfMin = clfMin.add(new BigDecimal(clxq.getMinPrice()));
-                    clfAve = clfAve.add(new BigDecimal(clxq.getAvePrice()));
-                    clfRecent = clfRecent.add(new BigDecimal(clxq.getRecentPrice()));
+                if(cl.getGgxh()!=null){
+                    cl.setXiangmuName(xmName);
+                    cl.setXiangmuId(xmId);
+                    CostModelXmxqCl clxq = costModelClPriceService.selectClPriceValue(cl);
+                    if(clxq != null){
+                        list1.add(clxq);
+                        clfMax = clfMax.add(new BigDecimal(clxq.getMaxPrice()));
+                        clfMin = clfMin.add(new BigDecimal(clxq.getMinPrice()));
+                        clfAve = clfAve.add(new BigDecimal(clxq.getAvePrice()));
+                        clfRecent = clfRecent.add(new BigDecimal(clxq.getRecentPrice()));
+                    }else {
+                        num1++;
+                        String msg1 = "材料价格库内——规格型号:"+cl.getGgxh() + " 未找到!";
+                        CostModelMsg costModelMsg = new CostModelMsg();
+                        costModelMsg.setXiangmuId(xmId);
+                        costModelMsg.setXiangmuName(xmName);
+                        costModelMsg.setXiangmuMsg(msg1);
+                        modelMsgList.add(costModelMsg);
+                    }
+                }
+                else {
+                    num2++;
                 }
             }
+            if(num2>0){
+                msg2 = "导入的材料Excel表中有"+num2+"条缺少必填数据!";
+                CostModelMsg costModelMsg = new CostModelMsg();
+                costModelMsg.setXiangmuId(xmId);
+                costModelMsg.setXiangmuName(xmName);
+                costModelMsg.setXiangmuMsg(msg2);
+                modelMsgList.add(costModelMsg);
+            }
+            if(num1>0) msg = "材料价格库中有"+num1+"条数据未找到!"+msg2;
+            else msg = msg2;
+
             costModelList.setMaxClf(clfMax.toString());
             costModelList.setMinClf(clfMin.toString());
             costModelList.setAveClf(clfAve.toString());
             costModelList.setRecentClf(clfRecent.toString());
+
+            CostModelImportVO vo = new CostModelImportVO();
+            vo.setCostModel(costModelList);
+            vo.setTishiMsg(msg);
+
             //update-begin-author:taoyan date:20190528 for:批量插入数据
             long start = System.currentTimeMillis();
             this.saveBatch(list1);
+            costModelMsgService.saveBatch(modelMsgList);
             //400条 saveBatch消耗时间1592毫秒  循环插入消耗时间1947毫秒
             //1200条  saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
             log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
             //update-end-author:taoyan date:20190528 for:批量插入数据
-            return Result.OK("文件导入成功!数据行数:" + list.size(),costModelList);
+            return Result.OK("文件导入成功!数据行数:" + list.size(),vo);
         } catch (Exception e) {
             //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
             String msg = e.getMessage();
@@ -109,6 +153,76 @@ public class CostModelXmxqClServiceImpl extends ServiceImpl<CostModelXmxqClMappe
         }
     }
 
+    /**
+     * 通过excel导入材料费  20231030修改之前备份
+     */
+//    public Result<CostModelList> importExcel1(String xmId, String xmName, String strUrl, Class<CostModelXmxqCl> clazz) {
+//        CostModelList costModelList = new CostModelList();
+//        costModelList.setId(xmId);
+//
+//        InputStream inputStream = null;
+//        try {
+//            inputStream = new FileInputStream(strUrl);
+//        } catch (FileNotFoundException e) {
+//            e.printStackTrace();
+//        }
+//
+//        // 获取上传文件对象
+//        ImportParams params = new ImportParams();
+//        params.setTitleRows(0);/*表格标题所占行数(默认是0)*/
+//        params.setHeadRows(1);/*表头所占据的行数行数,默认1,代表标题占据一行*/
+//        params.setNeedSave(true);
+//        try {
+//            List<CostModelXmxqCl> list = ExcelImportUtil.importExcel(inputStream, clazz, params);
+//
+//            List<CostModelXmxqCl> list1 = new ArrayList<>();
+//            BigDecimal clfMax = new BigDecimal(0);
+//            BigDecimal clfMin = new BigDecimal(0);
+//            BigDecimal clfAve = new BigDecimal(0);
+//            BigDecimal clfRecent = new BigDecimal(0);
+//            for(CostModelXmxqCl cl:list){
+//                cl.setXiangmuName(xmName);
+//                cl.setXiangmuId(xmId);
+//                CostModelXmxqCl clxq = costModelClPriceService.selectClPriceValue(cl);
+//                if(clxq != null){
+//                    list1.add(clxq);
+//                    clfMax = clfMax.add(new BigDecimal(clxq.getMaxPrice()));
+//                    clfMin = clfMin.add(new BigDecimal(clxq.getMinPrice()));
+//                    clfAve = clfAve.add(new BigDecimal(clxq.getAvePrice()));
+//                    clfRecent = clfRecent.add(new BigDecimal(clxq.getRecentPrice()));
+//                }
+//            }
+//            costModelList.setMaxClf(clfMax.toString());
+//            costModelList.setMinClf(clfMin.toString());
+//            costModelList.setAveClf(clfAve.toString());
+//            costModelList.setRecentClf(clfRecent.toString());
+//            //update-begin-author:taoyan date:20190528 for:批量插入数据
+//            long start = System.currentTimeMillis();
+//            this.saveBatch(list1);
+//            //400条 saveBatch消耗时间1592毫秒  循环插入消耗时间1947毫秒
+//            //1200条  saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
+//            log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
+//            //update-end-author:taoyan date:20190528 for:批量插入数据
+//            return Result.OK("文件导入成功!数据行数:" + list.size(),costModelList);
+//        } catch (Exception e) {
+//            //update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
+//            String msg = e.getMessage();
+//            log.error(msg, e);
+//            if(msg!=null && msg.indexOf("Duplicate entry")>=0){
+//                return Result.error("文件导入失败:有重复数据!");
+//            }else{
+//                return Result.error("文件导入失败:" + e.getMessage());
+//            }
+//            //update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
+//        } finally {
+//            try {
+//                inputStream.close();
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+
     /**成本模型——材料费详情——根据项目id查询*/
     public List<CostModelXmxqCl> getCLFDetailList(String xiangmuid){
 //        System.out.println("获取材料费详情");