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