From c913a335643619ac7d1943d75ce06f71a31b8185 Mon Sep 17 00:00:00 2001
From: 2369059705@qq.com <2369059705@qq.com>
Date: 星期五, 07 七月 2023 15:45:27 +0800
Subject: [PATCH] Merge branch 'master' of http://nonxin.cn:8090/r/project/qxlw

---
 product-server-project-base/src/main/java/com/product/base/config/BaseErrorCode.java                             |    3 
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectBudgetService.java |   82 ++++++++++++++++++++
 product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java            |    1 
 product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java                   |   35 ++++----
 product-server-web/pom.xml                                                                                       |    4 -
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java   |   14 ++-
 product-server-project-base/src/main/java/com/product/base/controller/MaterialManagerController.java             |   54 ------------
 product-server-project-base/src/main/java/com/product/base/config/CmnConst.java                                  |    1 
 8 files changed, 115 insertions(+), 79 deletions(-)

diff --git a/product-server-project-base/src/main/java/com/product/base/config/BaseErrorCode.java b/product-server-project-base/src/main/java/com/product/base/config/BaseErrorCode.java
index c9c043e..0f907a8 100644
--- a/product-server-project-base/src/main/java/com/product/base/config/BaseErrorCode.java
+++ b/product-server-project-base/src/main/java/com/product/base/config/BaseErrorCode.java
@@ -23,7 +23,8 @@
     
     PROJECT_BASE_MATERIAL_SAVE_FAIL("鏉愭枡淇℃伅淇濆瓨澶辫触锛�", ""),
     PROJECT_BASE_MATERIAL_DELETE_FAIL("鏉愭枡淇℃伅鍒犻櫎澶辫触锛�", ""),
-    PROJECT_BASE_MATERIAL_OPERATE_FAIL("鏉愭枡淇℃伅鎿嶄綔澶辫触锛�", ""),
+    PROJECT_BASE_MATERIAL_OPERATE_FAIL("鏉愭枡淇℃伅鎿嶄綔澶辫触锛�",  ModuleEnum.SYSTEM.getValue() + "002"),
+    PROJECT_BASE_MATERIAL_CODE_REPEAT("鏉愭枡缂栫爜宸茶鍏朵粬鏉愭枡浣跨敤锛�", ModuleEnum.SYSTEM.getValue() + "003"),
     
     PROJECT_TYPE_SAVE_FAIL("椤圭洰绫诲瀷淇濆瓨澶辫触锛�", ""),
     PROJECT_TYPE_DELETE_FAIL("椤圭洰绫诲瀷鍒犻櫎澶辫触锛�", ""),
diff --git a/product-server-project-base/src/main/java/com/product/base/config/CmnConst.java b/product-server-project-base/src/main/java/com/product/base/config/CmnConst.java
index c62a82c..397ca10 100644
--- a/product-server-project-base/src/main/java/com/product/base/config/CmnConst.java
+++ b/product-server-project-base/src/main/java/com/product/base/config/CmnConst.java
@@ -26,6 +26,7 @@
 	public static final String ITEMIZE_CODE="itemize_code";
 	public static final String ITEMIZW_PARENT_CODE="itemize_parent_code";
 	public static final String ITEMIZE_TYPE="itemize_type";
+	public static final String MATERIAL_CODE="material_code";
 	
 	
 }
diff --git a/product-server-project-base/src/main/java/com/product/base/controller/MaterialManagerController.java b/product-server-project-base/src/main/java/com/product/base/controller/MaterialManagerController.java
index b196a15..3420da8 100644
--- a/product-server-project-base/src/main/java/com/product/base/controller/MaterialManagerController.java
+++ b/product-server-project-base/src/main/java/com/product/base/controller/MaterialManagerController.java
@@ -20,7 +20,9 @@
 
 /**
  * 	鏉愭枡淇℃伅
- * @author 86151
+ * 	鍖呭惈鎺ュ彛锛氭潗鏂欑被鍨嬫爲鎺ュ彛銆佸垪琛ㄦ帴鍙c�佷繚瀛樻帴鍙�
+ * 	涓嶅寘鍚帴鍙o細璇︽儏鎺ュ彛銆佸垹闄ゆ帴鍙�,閲囩敤閫氱敤鎺ュ彛
+ * @author 
  *
  */
 @RequestMapping("/api/material")
@@ -84,28 +86,6 @@
 		}
 	}
 	
-	/**
-	 * 	鑾峰彇鏉愭枡淇℃伅
-	 * @param request
-	 * @param response
-	 * @return
-	 */
-	@RequestMapping(value="/get/{version}", method = RequestMethod.POST)
-	@ApiVersion(1)
-	public String getMaterialInfo(HttpServletRequest request, HttpServletResponse response) {
-		try {
-			//鑾峰彇鍙傛暟
-            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_PROJECT_BASE_MATERIAL);;
-            
-            //鍒ゆ柇uuid鏄惁涓虹┖
-            if (BaseUtil.strIsNull(fse.getUUID())) {
-				return error(BaseErrorCode.SYSTEM_FORM_COUNT.getValue(), BaseErrorCode.SYSTEM_FORM_COUNT.getValue());
-			}
-			return OK_List(materialManagerService.getMaterialInfo(fse.getUUID()));
-		} catch (Exception e) {
-			return this.error(BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getText()+e.getMessage());
-		}
-	}
 	
 	/**
 	 * 	淇濆瓨鏉愭枡淇℃伅
@@ -126,34 +106,6 @@
 				return OK();
 			}
 			return error(BaseErrorCode.PROJECT_BASE_MATERIAL_SAVE_FAIL.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_DELETE_FAIL.getText());
-		} catch (Exception e) {
-			return this.error(BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getText()+e.getMessage());
-		}
-	}
-	
-	/**
-	 * 	鍒犻櫎鏉愭枡淇℃伅
-	 * @param request
-	 * @param response
-	 * @return
-	 */
-	@RequestMapping(value="/delete/{version}",method = RequestMethod.POST)
-	@ApiVersion(1)
-	public String deleteWarehousrInfo(HttpServletRequest request, HttpServletResponse response) {
-		try {
-			//鑾峰彇鍙傛暟
-            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request, CmnConst.PRODUCT_PROJECT_BASE_MATERIAL);;
-            
-            //鍒ゆ柇uuid鏄惁涓虹┖
-            if (BaseUtil.strIsNull(fse.getUUID())) {
-				return error(BaseErrorCode.SYSTEM_FORM_COUNT.getValue(), BaseErrorCode.SYSTEM_FORM_COUNT.getValue());
-			}
-            //鍒犻櫎
-            boolean succ = materialManagerService.deleteMaterialInfo(fse.getUUID());
-            if (succ) {
-				return OK();
-			}
-            return error(BaseErrorCode.PROJECT_BASE_MATERIAL_DELETE_FAIL.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_DELETE_FAIL.getText());
 		} catch (Exception e) {
 			return this.error(BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_OPERATE_FAIL.getText()+e.getMessage());
 		}
diff --git a/product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java b/product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java
index 6b035b3..0085d06 100644
--- a/product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java
+++ b/product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java
@@ -1,12 +1,17 @@
 package com.product.base.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.product.base.config.BaseErrorCode;
 import com.product.base.config.CmnConst;
 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.core.spring.context.SpringMVCContextHolder;
 import com.product.module.sys.entity.SystemUser;
@@ -48,14 +53,6 @@
 		return dt;
 	}
 	
-	/**
-	 * 	鑾峰彇鏉愭枡淇℃伅
-	 * @param uuid
-	 * @return
-	 */
-	public FieldSetEntity getMaterialInfo(String uuid) {
-		return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, uuid, false);
-	}
 	
 	/**
 	 * 	淇濆瓨鏉愭枡淇℃伅
@@ -63,22 +60,24 @@
 	 * @return
 	 */
 	public boolean saveMaterialInfo(FieldSetEntity fse) {
+		
+		//楠岄噸鏉′欢
+		String filter = "material_code=?";
+		List<String> param = new ArrayList<>();
+		param.add(fse.getString(CmnConst.MATERIAL_CODE));
+		
 		SystemUser sysUser = SpringMVCContextHolder.getCurrentUser();
 		if (BaseUtil.strIsNull(fse.getUUID())) {
 			BaseUtil.createCreatorAndCreationTime(sysUser, fse);
 		}else {
+			filter += " AND uuid !=?";
+			param.add(fse.getUUID());
 			BaseUtil.updatedRegeneratorAndUpdateTime(sysUser, fse);
 		}
+		FieldSetEntity fseExistMaterialCode = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, filter, param.toArray(), false);
+		if (fseExistMaterialCode!=null) {
+			throw new BaseException(BaseErrorCode.PROJECT_BASE_MATERIAL_CODE_REPEAT.getValue(), BaseErrorCode.PROJECT_BASE_MATERIAL_CODE_REPEAT.getText());
+		}
 		return baseDao.saveFieldSetEntity(fse);
-	}
-	
-	/**
-	 * 	鍒犻櫎鏉愭枡淇℃伅
-	 * @param uuid
-	 * @return
-	 */
-	public boolean deleteMaterialInfo(String uuid) {
-		Object [] uuids= uuid.split(",");
-		return baseDao.delete(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, "uuid=?", uuids);
 	}
 }
diff --git a/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java b/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
index e8b4de1..266a7ef 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
@@ -12,6 +12,7 @@
     
     PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL("椤圭洰鍒嗛」鍒犻櫎澶辫触锛屽凡缁忕敓鎴愰绠�",""),
     PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR("椤圭洰鍒嗛」鎿嶄綔閿欒锛�",""),
+    PROJECT_BUDGET_IMPORT_FAIL("椤圭洰棰勭畻瀵煎叆澶辫触",""),
 	;
 
 	private String text;
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();
+	}
+}
diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
index a331ef5..7b38697 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
@@ -93,12 +93,13 @@
         //鑾峰彇鏁版嵁搴撳師濮嬫暟鎹�
         StringBuilder sb = new StringBuilder();
         sb.append("WITH outbound AS(")
-                .append(" SELECT A.project_uuid,A.project_itemize,C.material_type,B.material_code,SUM(B.outbound_weight)outbound_weight ")
+                .append(" SELECT A.project_uuid,D.itemize project_itemize,C.material_type,B.material_code,SUM(B.outbound_weight)outbound_weight ")
                 .append(" FROM product_project_outbound A ")
                 .append(" LEFT JOIN product_project_outbound_sub B ON A.uuid=B.outbound_uuid ")
                 .append(" LEFT JOIN product_project_base_material C ON B.material_uuid = C.uuid ")
-                .append(" WHERE project_uuid = ? ")
-                .append(" GROUP BY A.project_uuid,A.project_itemize,C.material_type,B.material_code ")
+                .append(" LEFT JOIN product_project_item D ON A.project_itemize = D.uuid ")
+                .append(" WHERE A.flow_flag=2 AND A.project_uuid = ? ")
+                .append(" GROUP BY A.project_uuid,D.itemize,C.material_type,B.material_code ")
                 .append(" ) ")
                 .append(" SELECT A.project_uuid,A.project_itemize,A.total_outbound_weight,B.material_type,B.material_code,B.outbound_weight ")
                 .append(" FROM ( ")
@@ -106,7 +107,8 @@
                 .append(" FROM outbound ")
                 .append(" GROUP BY project_uuid,project_itemize ")
                 .append(" )A ")
-                .append(" RIGHT JOIN outbound B ON A.project_uuid=B.project_uuid AND A.project_itemize=B.project_itemize ");
+                .append(" RIGHT JOIN outbound B ON A.project_uuid=B.project_uuid AND A.project_itemize=B.project_itemize ")
+        		.append(" ORDER BY project_itemize,material_code");
         DataTableEntity dtItemizeInfo = baseDao.listTable(sb.toString(), new Object[]{project_uuid});
         if (!BaseUtil.dataTableIsEmpty(dtItemizeInfo)) {
 
@@ -126,7 +128,9 @@
                 if (BaseUtil.strIsNull(materialTypes[materialType])) {
                     materialTypes[materialType] = materialCode;
                 } else {
-                    materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)] += "," + materialCode;
+                	if(materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)].indexOf(materialCode)<0) {
+                		materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)] += "," + materialCode;
+                	}
                 }
 
                 //鏀堕泦琛岃浆鍒楁暟鎹�
diff --git a/product-server-web/pom.xml b/product-server-web/pom.xml
index ce63699..349e0d4 100644
--- a/product-server-web/pom.xml
+++ b/product-server-web/pom.xml
@@ -146,10 +146,6 @@
             <groupId>com.lx</groupId>
             <artifactId>product-server-tool-table</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.lx</groupId>
-            <artifactId>product-server-announcement</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>com.lx</groupId>

--
Gitblit v1.9.2