From 0e4cd37a3a8bf0cb939c9e14cf68a5e72a0b35ea Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期二, 01 八月 2023 17:27:17 +0800
Subject: [PATCH] 代码调整

---
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java |  128 ++++++++++++++++--------------------------
 1 files changed, 49 insertions(+), 79 deletions(-)

diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java
index 118b9ff..bb14965 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java
@@ -1,6 +1,5 @@
 package com.product.project.management.service;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -15,6 +14,7 @@
 import com.product.core.service.support.AbstractBaseService;
 import com.product.project.management.config.Cmnconst;
 import com.product.project.management.config.SystemCode;
+import com.product.project.management.util.ItemizeUtil;
 import com.product.project.management.util.ProjectItemUtil;
 import com.product.util.BaseUtil;
 
@@ -32,6 +32,9 @@
 	 * @param headerDataList excel鏍囬鏁版嵁
 	 */
 	public DataTableEntity importBudget2(DataTableEntity dtParseData, List<List<String>> headerDataList) {
+		try {
+			
+		
 		//鍒ゆ柇鏄惁鏈夎В鏋怑XCEL鏁版嵁
 		if (BaseUtil.dataTableIsEmpty(dtParseData)) {
 			return null;
@@ -46,8 +49,34 @@
 		for (int i = 0; i < dtParseData.getRows(); i++) {
 			//鑾峰彇excel琛屾暟鎹�
 			FieldSetEntity fseParseData = dtParseData.getFieldSetEntity(i);
+			//鐢熸垚椤圭洰鍒嗛」
 			String uuid = autoCreateProjectItem(dtNewProjectItem, fseParseData, itemizeFullNameAndUUID, itemizeFullNameAndCode, itemizeFullNameAndMaxCode);
 			fseParseData.setValue(Cmnconst.PROJECT_ITEMIZE_UUID, uuid);
+			
+			//鐢熸垚鏉愭枡绫诲瀷
+			String bugetCode = fseParseData.getString(Cmnconst.BUDGET_CODE);
+			String materialType = null;
+			if ("澹版祴绠�".equals(bugetCode)) {
+				materialType = "2";
+			}else {
+				String materialCode = fseParseData.getString(Cmnconst.MATERIAL_CODE);
+				if (materialCode.contains("鏋剁珛绛�")) {
+					materialType = "1";
+					fseParseData.setValue(Cmnconst.MATERIAL_CODE, ItemizeUtil.getChineseOrEnglishOrNumber("ENGLISHNUMBER", materialCode));
+				}else if (materialCode.contains("閽㈢瓔缃�")) {
+					materialType = "3";
+					fseParseData.setValue(Cmnconst.MATERIAL_CODE, ItemizeUtil.getChineseOrEnglishOrNumber("ENGLISHNUMBER", materialCode));
+				}else{
+					FieldSetEntity fseMaterial = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_BASE_MATERIAL,"material_code=?", new Object[] {materialCode}, false);
+					if (fseMaterial != null) {
+						materialType = fseMaterial.getString(Cmnconst.MATERIAL_TYPE);
+						if (materialType.indexOf("0")>-1) {
+							materialType = "0";
+						}
+					}
+				}
+			}
+			fseParseData.setValue(Cmnconst.MATERIAL_TYPE, materialType);
 		}
 		if (!BaseUtil.dataTableIsEmpty(dtNewProjectItem)) {
 			try {
@@ -55,6 +84,9 @@
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
+		}
+		} catch (Exception e) {
+			e.printStackTrace();
 		}
 		return dtParseData;
 	}
@@ -73,8 +105,10 @@
 	public String autoCreateProjectItem(DataTableEntity dtNewProjectItem, FieldSetEntity fseParseData, Map<String, String> itemizeFullNameAndUUID, Map<String, String> itemizeFullNameAndCode, Map<String, String> itemizeFullNameAndMaxCode) {
 		String itemizFullName = null;
 		String finalUUID = null;
+		FieldSetEntity fseProject = baseDao.getFieldSetByFilter(Cmnconst.PRODUCT_PROJECT_QXLW, "project_name=?", new Object[] {fseParseData.getString("field0")}, false);
+		String projectUUID = fseProject.getUUID();
 		//寰幆field1~field6瀛楁锛岄�愭鐢熸垚瀵瑰簲鐨勯」鐩垎椤规暟鎹�
-		for (int i = 1; i < 7; i++) {
+		for (int i = 1; i < 8; i++) {
 			
 			//鑾峰彇鍒嗛」鍚嶇О,鍒ゆ柇鏄惁涓虹┖
 			String itemize = fseParseData.getString("field"+i);
@@ -97,7 +131,7 @@
 			//鍒ゆ柇椤圭洰鍒嗛」鏄惁瀛樺湪浜庨泦鍚堜腑
 			if(!itemizeFullNameAndCode.containsKey(itemizFullName)) {
 				//鏌ヨ鍒嗛」鍜屼笂绾у垎椤规槸鍚﹀瓨鍦ㄤ簬鏁版嵁搴撲腑
-				FieldSetEntity fseProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, "itemize_full_name=?", new Object[] {itemizFullName}, false);
+				FieldSetEntity fseProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid = ? AND itemize_full_name=?", new Object[] {projectUUID,itemizFullName}, false);
 				if (fseProjectItem == null) {
 					String uuid = UUID.randomUUID().toString();
 					String code;
@@ -107,9 +141,9 @@
 					}else {
 						FieldSetEntity fseMaxProjectItem;
 						if(BaseUtil.strIsNull(itemizeParent)) {
-							fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "itemize_parent_code IS NULL", new Object[] {}, false, null);
+							fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "project_uuid = ? AND itemize_parent_code IS NULL", new Object[] {projectUUID}, false, null);
 						}else {
-							fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "itemize_parent_code = ?", new Object[] {itemizeFullNameAndCode.get(itemizeParent)}, false, null);
+							fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "project_uuid = ? AND itemize_parent_code = ?", new Object[] {projectUUID, itemizeFullNameAndCode.get(itemizeParent)}, false, null);
 						}
 						if (fseMaxProjectItem==null || BaseUtil.strIsNull(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE))) {
 							code = ProjectItemUtil.autoCreateCode(itemizeFullNameAndCode.get(itemizeParent));
@@ -120,7 +154,7 @@
 					FieldSetEntity fseNewProject = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_ITEM);
 					fseNewProject.setValue(Cmnconst.UUID, uuid);
 					fseNewProject.setValue("~type~", "add");
-//					fseNewProject.setValue(Cmnconst.PROJECT_UUID, );
+					fseNewProject.setValue(Cmnconst.PROJECT_UUID, projectUUID);
 					fseNewProject.setValue(Cmnconst.ITEMIZE, itemize);
 					fseNewProject.setValue(Cmnconst.ITEMIZE_CODE, code);
 					fseNewProject.setValue(Cmnconst.ITEMIZE_PARENT_CODE, itemizeFullNameAndCode.get(itemizeParent));
@@ -135,9 +169,9 @@
 					String code = fseProjectItem.getString(Cmnconst.ITEMIZE_CODE);
 					FieldSetEntity fseMaxProjectItem;
 					if (BaseUtil.strIsNull(fseProjectItem.getString(Cmnconst.ITEMIZE_PARENT_CODE))) {
-						fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "itemize_parent_code IS NULL", new Object[] {}, false, null);
+						fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "project_uuid = ? AND itemize_parent_code IS NULL", new Object[] {projectUUID}, false, null);
 					}else {
-						fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "itemize_parent_code=?", new Object[] {fseProjectItem.getString(Cmnconst.ITEMIZE_PARENT_CODE)}, false, null);
+						fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, " project_uuid = ? AND itemize_parent_code=?", new Object[] {projectUUID, fseProjectItem.getString(Cmnconst.ITEMIZE_PARENT_CODE)}, false, null);
 					}
 					itemizeFullNameAndUUID.put(itemizFullName, uuid);
 					itemizeFullNameAndCode.put(itemizFullName, code);
@@ -149,79 +183,15 @@
 	}
 
 	/**
-	 * 	椤圭洰棰勭畻瀵煎叆
-	 * @param dtParseData	 瑙f瀽鏁版嵁
-	 * @param headerDataList excel鏍囬鏁版嵁
-	 */
-	public DataTableEntity importBudget(DataTableEntity dtParseData, List<List<String>> headerDataList) {
-		//鍒ゆ柇鏄惁鏈夎В鏋怑XCEL鏁版嵁
-		if (BaseUtil.dataTableIsEmpty(dtParseData)) {
-			return null;
-		}
-		//澹版槑寮傚父闆�
-		StringBuilder sbError = new StringBuilder();
-		//閬嶅巻excel杞崲鏁版嵁
-		for (int i = 0; i < dtParseData.getRows(); i++) {
-			FieldSetEntity fseParseData = dtParseData.getFieldSetEntity(i);
-			
-			//鏍规嵁瑙f瀽鏁版嵁鑾峰彇椤圭洰鍒嗛」淇℃伅
-			List<Object> params = new ArrayList<>();
-			String projectItem = autoCreateFilter(params, fseParseData);
-			
-			//鏍规嵁妯℃澘椤圭洰鍒嗛」鏌ヨ鏁版嵁搴撻」鐩垎椤�
-			FieldSetEntity fseProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid IN (SELECT uuid FROM product_project_qxlw WHERE project_name=?) AND itemize_full_name=?", params.toArray(), false);
-			if(fseProjectItem==null) {
-				sbError.append(String.format("绗� %s 琛岄」鐩垎椤� '%s' 涓嶅瓨鍦ㄤ簬绯荤粺涓��", fseParseData.getString("~row~"), projectItem));
-				continue;
-			}
-			//璁剧疆鍏宠仈椤圭洰鍒嗛」
-			fseParseData.setValue("project_itemize_uuid", fseProjectItem.getUUID());
-			
-			//鑾峰彇缂栫爜鐢熸垚鏉愭枡绫诲瀷
-			String budgetCode = fseParseData.getString(Cmnconst.BUDGET_CODE);
-			Integer materialType = 0;
-			if("鏋剁珛绛�".equals(budgetCode)) {
-				materialType = 1;
-			}else if("澹版祴绠�".equals(budgetCode)) {
-				materialType = 2;
-			}else {
-				//缃戠墖
-				FieldSetEntity materialInfo = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_BASE_MATERIAL, "material_type=3 AND material_name like ?", new Object[] {fseParseData.getString(Cmnconst.MATERIAL_CODE)+"%"}, false);
-				if (materialInfo!=null) {
-					materialType = 3;
-				}
-			}
-			fseParseData.setValue(Cmnconst.MATERIAL_TYPE, materialType);
-		}
-		//鍒ゆ柇鏄惁鍖呭惈閿欒淇℃伅
-		if (!BaseUtil.strIsNull(sbError.toString())) {
-			throw new BaseException(SystemCode.PROJECT_BUDGET_IMPORT_FAIL.getValue(), sbError.toString());
-		}
-		return dtParseData;
-	}
-	
-	/**
-	 * 	鑷姩鐢熸垚鏌ヨ椤圭洰鍒嗛」filter
-	 * @param params
-	 * @param fseParseData
+	 * 	娓呴櫎鎵�鏈夐绠�
+	 * @param projectUUID
 	 * @return
 	 */
-	public String autoCreateFilter(List<Object> params , FieldSetEntity fseParseData) {
-		StringBuilder projectItem = new StringBuilder();
-		for (int i = 1; i < 7; i++) {
-			String fieldValue = fseParseData.getString("field"+i);
-			if(!BaseUtil.strIsNull(fieldValue)) {
-				if (i>2) {
-					projectItem.append("/");
-				}
-				if(i==1) {
-					params.add(fieldValue);
-				}else{
-					projectItem.append(fieldValue);
-				}
-			}
+	public boolean clearBudget(String projectUUID) {
+		DataTableEntity dtOutbound = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_OUTBOUND, "project_uuid=?", new Object[] {projectUUID});
+		if (!BaseUtil.dataTableIsEmpty(dtOutbound)) {
+			throw new BaseException(SystemCode.PROJeCT_BUDGET_CLEAR_FAIL_HAS_OUTBOUND.getValue(), SystemCode.PROJeCT_BUDGET_CLEAR_FAIL_HAS_OUTBOUND.getText());
 		}
-		params.add(projectItem.toString());
-		return projectItem.toString();
+		return baseDao.executeUpdate("DELETE FROM product_project_budget WHERE project_itemize_uuid IN (SELECT uuid FROM product_project_item WHERE project_uuid=?)", new Object[] {projectUUID});
 	}
 }

--
Gitblit v1.9.2