From e31fe4140580a730dcb2f2aecb6ac0d7a66df7c0 Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期五, 21 七月 2023 09:25:35 +0800
Subject: [PATCH] 系统变更

---
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java |  127 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 127 insertions(+), 0 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 535162e..118b9ff 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,7 +1,9 @@
 package com.product.project.management.service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -13,13 +15,138 @@
 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.ProjectItemUtil;
 import com.product.util.BaseUtil;
+
+import cn.hutool.core.lang.UUID;
 
 @Service("projectBudget")
 public class ProjectBudgetService extends AbstractBaseService{
 	
 	@Autowired
 	BaseDao baseDao;
+	
+	/**
+	 * 	椤圭洰棰勭畻瀵煎叆
+	 * @param dtParseData	 瑙f瀽鏁版嵁
+	 * @param headerDataList excel鏍囬鏁版嵁
+	 */
+	public DataTableEntity importBudget2(DataTableEntity dtParseData, List<List<String>> headerDataList) {
+		//鍒ゆ柇鏄惁鏈夎В鏋怑XCEL鏁版嵁
+		if (BaseUtil.dataTableIsEmpty(dtParseData)) {
+			return null;
+		}
+		//涓存椂瀛樺偍闆嗗悎
+		Map<String, String> itemizeFullNameAndUUID = new HashMap<>();
+		Map<String, String> itemizeFullNameAndCode = new HashMap<>();
+		Map<String, String> itemizeFullNameAndMaxCode = new HashMap<>();
+		DataTableEntity dtNewProjectItem = new DataTableEntity();
+		
+		//閬嶅巻excel杞崲鏁版嵁
+		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);
+		}
+		if (!BaseUtil.dataTableIsEmpty(dtNewProjectItem)) {
+			try {
+				baseDao.add(dtNewProjectItem);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return dtParseData;
+	}
+	
+	/**
+	 * 	閫氳繃field1,field2,field3,field4,field5,field6鏁版嵁鑷姩鐢熸垚椤圭洰鍒嗛」鏁版嵁
+	 * 	濡傛灉椤圭洰鍒嗛」宸插瓨鍦ㄦ暟鎹簱鎴栬�呮柊鐢熸垚锛屽皢瀛樺叆map闆嗗悎涓互渚夸娇鐢�
+	 * 	濡傛灉椤圭洰鍒嗛」涓嶅瓨鍦ㄤ簬鏁版嵁搴撳垯鐢熸垚椤圭洰鍒嗛」鏁版嵁
+	 * @param dtNewProjectItem
+	 * @param fseParseData
+	 * @param itemizeFullNameAndUUID
+	 * @param itemizeFullNameAndCode
+	 * @param itemizeFullNameAndMaxCode
+	 * @return
+	 */
+	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;
+		//寰幆field1~field6瀛楁锛岄�愭鐢熸垚瀵瑰簲鐨勯」鐩垎椤规暟鎹�
+		for (int i = 1; i < 7; i++) {
+			
+			//鑾峰彇鍒嗛」鍚嶇О,鍒ゆ柇鏄惁涓虹┖
+			String itemize = fseParseData.getString("field"+i);
+			//鍒ゆ柇椤圭洰鍒嗛」鍚嶇О鏄惁涓虹┖锛堝涓虹┖锛氬垯璇ラ绠楀搴旂殑椤圭洰鍒嗛」鐢熸垚瀹屾瘯锛岄绠楀叧鑱旂殑UUID涓轰笂涓�涓猣ield鍒嗛」瀵瑰簲鐨刄UID
+			if (BaseUtil.strIsNull(itemize)) {
+				finalUUID = itemizeFullNameAndUUID.get(itemizFullName);
+				break;
+			}
+			
+			//鑾峰彇涓婄骇鍒嗛」鍜屽綋鍓嶅垎椤瑰叏绉帮紙濡傚綋鍓嶅垎椤规病鏈変笂绾э細鍒欏叏绉扮瓑浜庡悕绉帮紱濡傛湁涓婄骇锛氬垯鍏ㄧО绛変簬涓婄骇鍏ㄧО/鍚嶇О锛�
+			String itemizeParent = null;
+			//鑾峰彇鍒嗛」鍏ㄧО
+			if (BaseUtil.strIsNull(itemizFullName)) {
+				itemizFullName = itemize;
+			}else {
+				itemizeParent = itemizFullName;
+				itemizFullName = itemizFullName + "/" + itemize;
+			}
+			
+			//鍒ゆ柇椤圭洰鍒嗛」鏄惁瀛樺湪浜庨泦鍚堜腑
+			if(!itemizeFullNameAndCode.containsKey(itemizFullName)) {
+				//鏌ヨ鍒嗛」鍜屼笂绾у垎椤规槸鍚﹀瓨鍦ㄤ簬鏁版嵁搴撲腑
+				FieldSetEntity fseProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, "itemize_full_name=?", new Object[] {itemizFullName}, false);
+				if (fseProjectItem == null) {
+					String uuid = UUID.randomUUID().toString();
+					String code;
+					
+					if (!BaseUtil.strIsNull(itemizeFullNameAndMaxCode.get(itemizeParent))) {
+						code = ProjectItemUtil.autoAddOneCode(itemizeFullNameAndMaxCode.get(itemizeParent));
+					}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);
+						}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);
+						}
+						if (fseMaxProjectItem==null || BaseUtil.strIsNull(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE))) {
+							code = ProjectItemUtil.autoCreateCode(itemizeFullNameAndCode.get(itemizeParent));
+						}else {
+							code = ProjectItemUtil.autoAddOneCode(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE));
+						}
+					}
+					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.ITEMIZE, itemize);
+					fseNewProject.setValue(Cmnconst.ITEMIZE_CODE, code);
+					fseNewProject.setValue(Cmnconst.ITEMIZE_PARENT_CODE, itemizeFullNameAndCode.get(itemizeParent));
+					fseNewProject.setValue(Cmnconst.ITEMIZE_FULL_NAME, itemizFullName);
+					dtNewProjectItem.addFieldSetEntity(fseNewProject);
+					
+					itemizeFullNameAndUUID.put(itemizFullName, uuid);
+					itemizeFullNameAndCode.put(itemizFullName, code);
+					itemizeFullNameAndMaxCode.put(itemizeParent, code);
+				}else {
+					String uuid = fseProjectItem.getUUID();
+					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);
+					}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);
+					}
+					itemizeFullNameAndUUID.put(itemizFullName, uuid);
+					itemizeFullNameAndCode.put(itemizFullName, code);
+					itemizeFullNameAndMaxCode.put(itemizeParent, fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE));
+				}
+			}
+		}
+		return finalUUID;
+	}
 
 	/**
 	 * 	椤圭洰棰勭畻瀵煎叆

--
Gitblit v1.9.2