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