From 3f6aa8e6687e1a9f6e41e5a3f69cba37172908ab Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期三, 05 七月 2023 10:40:33 +0800
Subject: [PATCH] 项目预算导入

---
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java |   82 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 82 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
new file mode 100644
index 0000000..3bc336b
--- /dev/null
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java
@@ -0,0 +1,82 @@
+package com.product.project.management.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.product.core.dao.BaseDao;
+import com.product.core.entity.DataTableEntity;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.core.service.support.AbstractBaseService;
+import com.product.project.management.config.Cmnconst;
+import com.product.project.management.config.SystemCode;
+import com.product.util.BaseUtil;
+
+@Service("projectBudget")
+public class ProjectBudgetService extends AbstractBaseService{
+	
+	@Autowired
+	BaseDao baseDao;
+
+	/**
+	 * 	椤圭洰棰勭畻瀵煎叆
+	 * @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());
+		}
+		if (!BaseUtil.strIsNull(sbError.toString())) {
+			throw new BaseException(SystemCode.PROJECT_BUDGET_IMPORT_FAIL.getValue(), sbError.toString());
+		}
+//		baseDao.add(dtParseData);
+		return dtParseData;
+	}
+	
+	/**
+	 * 	鑷姩鐢熸垚鏌ヨ椤圭洰鍒嗛」filter
+	 * @param params
+	 * @param fseParseData
+	 * @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);
+				}
+			}
+		}
+		params.add(projectItem.toString());
+		return projectItem.toString();
+	}
+}

--
Gitblit v1.9.2