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 ++++++++++++++ product-server-project-management/src/main/java/com/product/project/management/service/ProjectItemizeService.java | 142 +++++++++++++++ product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java | 6 product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java | 40 ++-- product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java | 3 product-server-project-management/src/main/java/com/product/project/management/controller/ProjectItemizeController.java | 148 ++++++++++++++++ product-server-project-management/src/main/java/com/product/project/management/config/Cmnconst.java | 2 product-server-project-management/src/main/java/com/product/project/management/util/ProjectItemUtil.java | 51 +++++ 8 files changed, 495 insertions(+), 24 deletions(-) diff --git a/product-server-project-management/src/main/java/com/product/project/management/config/Cmnconst.java b/product-server-project-management/src/main/java/com/product/project/management/config/Cmnconst.java index 3b53275..60cf7f7 100644 --- a/product-server-project-management/src/main/java/com/product/project/management/config/Cmnconst.java +++ b/product-server-project-management/src/main/java/com/product/project/management/config/Cmnconst.java @@ -17,10 +17,12 @@ public static final String TOTAL_OUTBOUND_WEIGHT="total_outbound_weight"; public static final String PROJECT_NAME="project_name"; public static final String PROJECT_ITEMIZE="project_itemize"; + public static final String PROJECT_ITEMIZE_UUID="project_itemize_uuid"; public static final String ITEMIZE="itemize"; public static final String ITEMIZE_CODE="itemize_code"; public static final String ITEMIZE_TYPE="itemize_type"; public static final String ITEMIZE_PARENT_CODE="itemize_parent_code"; + public static final String ITEMIZE_FULL_NAME="itemize_full_name"; public static final String BUDGET_CODE="budget_code"; 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 266a7ef..0c9813b 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 @@ -10,8 +10,10 @@ SYSTEM_ACQUIRE_PARAM_FAIL("鑾峰彇鍙傛暟澶辫触", ModuleEnum.SYSTEM.getValue() + "996"), SYSTEM_CPAGES_NOT_NULL("鍒嗛〉鍙傛暟涓嶈兘涓虹┖", ModuleEnum.SYSTEM.getValue() + "995"), - PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL("椤圭洰鍒嗛」鍒犻櫎澶辫触锛屽凡缁忕敓鎴愰绠�",""), - PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR("椤圭洰鍒嗛」鎿嶄綔閿欒锛�",""), + PROJECT_INFO_OPERATE_ERROR("椤圭洰淇℃伅鎿嶄綔澶辫触:", ""), + PROJECT_ITEMIZE_OPERATE_ERROR("椤圭洰鍒嗛」鎿嶄綔閿欒锛�",""), + PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET("椤圭洰鍒嗛」鍒犻櫎澶辫触锛屽凡缁忕敓鎴愰绠�",""), + PROJECT_ITEMIZE_DEL_FAIL("椤圭洰鍒嗛」鍒犻櫎澶辫触",""), PROJECT_BUDGET_IMPORT_FAIL("椤圭洰棰勭畻瀵煎叆澶辫触",""), ; diff --git a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java index 4bf7bab..b094be6 100644 --- a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java +++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java @@ -48,8 +48,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -76,8 +76,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -104,8 +104,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -125,8 +125,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -154,8 +154,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -183,8 +183,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -216,8 +216,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -249,8 +249,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -276,8 +276,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } @@ -304,8 +304,8 @@ return this.error(e); } catch (Exception e) { e.printStackTrace(); - return this.error(SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getValue(), - SystemCode.PROJECT_MAMAGERENT_ITEMIZE_GENERAL_ERROR.getText() + e.getMessage()); + return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage()); } } diff --git a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectItemizeController.java b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectItemizeController.java new file mode 100644 index 0000000..767c4c2 --- /dev/null +++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectItemizeController.java @@ -0,0 +1,148 @@ +package com.product.project.management.controller; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.product.core.config.CoreConst; +import com.product.core.controller.support.AbstractBaseController; +import com.product.core.entity.FieldSetEntity; +import com.product.core.exception.BaseException; +import com.product.module.sys.version.ApiVersion; +import com.product.project.management.config.Cmnconst; +import com.product.project.management.config.SystemCode; +import com.product.project.management.service.ProjectItemizeService; +import com.product.util.BaseUtil; + +/** + * 椤圭洰鍒嗛儴鍒嗛」 + * @author 86151 + * + */ +@RequestMapping("/api/project-itemize") +@RestController +public class ProjectItemizeController extends AbstractBaseController{ + + @Autowired + ProjectItemizeService projectItemizeService; + + /** + * 椤圭洰鍒嗛」-椤圭洰鏍戯紙涓诲瓙椤圭洰锛� + * + * @param request + * @return + */ + @RequestMapping(value = "/project-tree/{version}", method = RequestMethod.POST) + @ApiVersion(1) + public String getProjectTree(HttpServletRequest request) { + try { + // 鑾峰彇鍙傛暟 + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); + + // 鍒ゆ柇uuid鏄惁涓虹┖ + if (BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID))) { + return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText()); + } + return OK_List(projectItemizeService.getProjectTree(fse.getString(Cmnconst.PROJECT_UUID))); + } catch (BaseException e) { + e.printStackTrace(); + return this.error(e); + } catch (Exception e) { + e.printStackTrace(); + return this.error(SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getText() + e.getMessage()); + } + } + + /** + * 椤圭洰鍒嗛」-鍒嗛」鍒楄〃 + * + * @param request + * @return + */ + @RequestMapping(value = "/list/{version}", method = RequestMethod.POST) + @ApiVersion(1) + public String listProjectItem(HttpServletRequest request) { + try { + // 鑾峰彇鍙傛暟 + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); + + //鍒ゆ柇uuid鏄惁涓虹┖ + if (BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID))) { + return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText()); + } + + //鍒ゆ柇鍒嗛〉鍙傛暟鏄惁涓虹┖ + if (BaseUtil.strIsNull(fse.getString(CoreConst.CPAGE)) || BaseUtil.strIsNull(fse.getString(CoreConst.PAGESIZE))) { + return this.error(SystemCode.SYSTEM_CPAGES_NOT_NULL.getValue(), SystemCode.SYSTEM_CPAGES_NOT_NULL.getText()); + } + return OK_List(projectItemizeService.listProjectItem(fse.getString(Cmnconst.PROJECT_UUID),fse.getString(Cmnconst.ITEMIZE_CODE), fse.getInteger(CoreConst.CPAGE), fse.getInteger(CoreConst.PAGESIZE))); + } catch (BaseException e) { + e.printStackTrace(); + return this.error(e); + } catch (Exception e) { + e.printStackTrace(); + return this.error(SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getText() + e.getMessage()); + } + } + + /** + * 椤圭洰鍒嗛」-淇濆瓨 + * + * @param request + * @return + */ + @RequestMapping(value = "/save/{version}", method = RequestMethod.POST) + @ApiVersion(1) + public String saveProjectItem(HttpServletRequest request) { + try { + // 鑾峰彇鍙傛暟 + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); + return OK_List(projectItemizeService.saveProjectItem(fse)); + } catch (BaseException e) { + e.printStackTrace(); + return this.error(e); + } catch (Exception e) { + e.printStackTrace(); + return this.error(SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getText() + e.getMessage()); + } + } + + /** + * 椤圭洰鍒嗛」-鍒犻櫎 + * + * @param request + * @return + */ + @RequestMapping(value = "/delete/{version}", method = RequestMethod.POST) + @ApiVersion(1) + public String deleteProjectItem(HttpServletRequest request) { + try { + // 鑾峰彇鍙傛暟 + FieldSetEntity fse = BaseUtil.getFieldSetEntity(request); + + //鍒ゆ柇project_uuid鏄惁涓虹┖ + if (BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID)) || BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID))) { + return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText()); + } + + boolean succ = projectItemizeService.deleteProjectItem(fse.getUUID(), fse.getString(Cmnconst.PROJECT_UUID)); + if (succ) { + return OK(); + } + return this.error(SystemCode.PROJECT_ITEMIZE_DEL_FAIL.getValue(), SystemCode.PROJECT_ITEMIZE_DEL_FAIL.getText()); + } catch (BaseException e) { + e.printStackTrace(); + return this.error(e); + } catch (Exception e) { + e.printStackTrace(); + return this.error(SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getValue(), + SystemCode.PROJECT_ITEMIZE_OPERATE_ERROR.getText() + e.getMessage()); + } + } +} 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; + } /** * 椤圭洰棰勭畻瀵煎叆 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 e7de973..85f9d23 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 @@ -228,7 +228,7 @@ public void deleteItemizeValidate(String uuid) { DataTableEntity dtBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BUDGET, "budget_code=?", new Object[]{uuid}); if (!BaseUtil.dataTableIsEmpty(dtBudget)) { - throw new BaseException(SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getValue(), SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getText()); + throw new BaseException(SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getValue(), SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getText()); } } @@ -282,7 +282,6 @@ * @param uuid * @return */ - public JSONArray getTreeProjectItem(String uuid) { DataTableEntity dtProjectItemize = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=?", new Object[]{uuid}, new Object[]{CoreConst.UUID, Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE}); DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectItemizeService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectItemizeService.java new file mode 100644 index 0000000..f9c7783 --- /dev/null +++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectItemizeService.java @@ -0,0 +1,142 @@ +package com.product.project.management.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.product.core.config.CoreConst; +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.project.management.util.ProjectItemUtil; +import com.product.util.BaseUtil; + +@Component +public class ProjectItemizeService extends AbstractBaseService{ + + @Autowired + BaseDao baseDao; + + + /** + * 椤圭洰鍒嗛」-椤圭洰鏍戯紙涓诲瓙椤圭洰锛� + * @param projectUUID 椤圭洰UUID + * @return + */ + public DataTableEntity getProjectTree(String projectUUID) { + FieldSetEntity fseProjectInfo = baseDao.getFieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW, projectUUID, false); + if (fseProjectInfo == null) { + return null; + } + DataTableEntity dtProjectItemize = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=?", new Object[]{projectUUID}, new Object[]{CoreConst.UUID, Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE}); + if (!BaseUtil.dataTableIsEmpty(dtProjectItemize)) { + DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); + return newDtProjectItem; + } + return null; + } + + /** + * 椤圭洰鍒嗛」-鍒楄〃锛堝睍绀洪�変腑鍒嗛」鐨勪笅涓�绾у垪琛級 + * @param projectUUID + * @param itemizeCode + * @param capge + * @param pageSize + * @return + */ + public DataTableEntity listProjectItem(String projectUUID, String itemizeCode, Integer capge, Integer pageSize) { + DataTableEntity dtItemizeBudget; + if(BaseUtil.strIsNull(itemizeCode) || "000".equals(itemizeCode)) { + dtItemizeBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=? AND itemize_parent_code IS NULL", new Object[] {projectUUID}, null, null, pageSize, capge); + }else { + dtItemizeBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=? AND itemize_parent_code=?", new Object[] {projectUUID,itemizeCode}, null, null, pageSize, capge); + } + + //鏌ヨ閫変腑鑺傜偣涓嬫墍鏈夐」鐩垎椤� + if (!BaseUtil.dataTableIsEmpty(dtItemizeBudget)) { + baseDao.loadPromptData(dtItemizeBudget); + } + return dtItemizeBudget; + } + + /** + * 淇濆瓨椤圭洰鍒嗛」 + * @param fse + * @return + */ + public FieldSetEntity saveProjectItem(FieldSetEntity fse) { + //鍒ゆ柇鏄惁鏄柊澧� + if (BaseUtil.strIsNull(fse.getUUID())) { + String projectUUID = fse.getString(Cmnconst.PROJECT_UUID); + FieldSetEntity fseMaxProjectItem; + String itemizeCode; + String itemizeFullName = null; + //鍒ゆ柇鏄惁鏈変笂绾� + if (BaseUtil.strIsNull(fse.getString(Cmnconst.ITEMIZE_PARENT_CODE))) { + 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); + if (fseMaxProjectItem==null || BaseUtil.strIsNull(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE))) { + itemizeCode = "001"; + }else { + itemizeCode = ProjectItemUtil.autoAddOneCode(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE)); + } + itemizeFullName = fse.getString(Cmnconst.ITEMIZE); + }else { + fseMaxProjectItem = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, new String[] {"Max(itemize_code)itemize_code"}, "project_uuid = ? AND itemize_parent_code = ?", new Object[] {projectUUID, fse.getString(Cmnconst.ITEMIZE_PARENT_CODE)}, false, null); + if (fseMaxProjectItem==null || BaseUtil.strIsNull(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE))) { + itemizeCode = ProjectItemUtil.autoCreateCode(fse.getString(Cmnconst.ITEMIZE_PARENT_CODE)); + }else { + itemizeCode = ProjectItemUtil.autoAddOneCode(fseMaxProjectItem.getString(Cmnconst.ITEMIZE_CODE)); + } + FieldSetEntity itemizeParent = baseDao.getFieldSetEntityByFilter(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid =? AND itemize_code=?", new Object[] {projectUUID, fse.getString(Cmnconst.ITEMIZE_PARENT_CODE)}, false); + if (itemizeParent!=null) { + itemizeFullName = itemizeParent.getString(Cmnconst.ITEMIZE_FULL_NAME) + "/" + fse.getString(Cmnconst.ITEMIZE); + } + } + fse.setValue(Cmnconst.ITEMIZE_CODE, itemizeCode); + fse.setValue(Cmnconst.ITEMIZE_FULL_NAME, itemizeFullName); + } + baseDao.saveFieldSetEntity(fse); + return fse; + } + + /** + * 鍒犻櫎椤圭洰鍒嗛」 + * @param uuids + * @return + */ + public boolean deleteProjectItem(String uuids, String projectUUID) { + //楠岃瘉鏄惁鐢熸垚棰勭畻 + StringBuilder sbValidate = new StringBuilder(128); + sbValidate.append(" SELECT * FROM product_project_budget ") + .append(" WHERE project_itemize_uuid IN( ") + .append(" select uuid from product_project_item ") + .append(" WHERE project_uuid = ? AND itemize_code REGEXP ( ") + .append(" SELECT CONCAT('^',GROUP_CONCAT(itemize_code SEPARATOR '|^')) FROM product_project_item ") + .append(" WHERE ") + .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.UUID, uuids.split(","), true)) + .append(" ) ") + .append(" ) "); + DataTableEntity dtBudget = baseDao.listTable(sbValidate.toString(), new Object[] {projectUUID}); + if (!BaseUtil.dataTableIsEmpty(dtBudget)) { + throw new BaseException(SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getText(), SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getValue()); + } + //鍒犻櫎 + StringBuilder sbDelete = new StringBuilder(128); + sbDelete.append(" DELETE from product_project_item ") + .append(" WHERE uuid IN( ") + .append(" SELECT * FROM( ") + .append(" SELECT uuid FROM product_project_item ") + .append(" WHERE project_uuid = ? AND itemize_code REGEXP ( ") + .append(" SELECT CONCAT('^',GROUP_CONCAT(itemize_code SEPARATOR '|^')) FROM product_project_item ") + .append(" WHERE ") + .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.UUID, uuids.split(","), true)) + .append(" ) ") + .append(" )A ") + .append(" ) "); + + return baseDao.executeUpdate(sbDelete.toString(), new Object[] {projectUUID}); + } +} diff --git a/product-server-project-management/src/main/java/com/product/project/management/util/ProjectItemUtil.java b/product-server-project-management/src/main/java/com/product/project/management/util/ProjectItemUtil.java new file mode 100644 index 0000000..1d8eef1 --- /dev/null +++ b/product-server-project-management/src/main/java/com/product/project/management/util/ProjectItemUtil.java @@ -0,0 +1,51 @@ +package com.product.project.management.util; + +import com.product.util.BaseUtil; + +public class ProjectItemUtil { + + /** + * 鏍规嵁鍚岀骇鏈�澶х紪鐮侊紝鑷姩鐢熸垚褰撳墠缂栫爜 + * @param oldCode 鍚岀骇鏈�澶х紪鐮� + * @return + */ + public static String autoAddOneCode(String oldCode) { + if (BaseUtil.strIsNull(oldCode)) { + oldCode = "000"; + } + String lastCode = null; + String prefixCode = null; + if (oldCode.contains("-")) { + lastCode = oldCode.substring(oldCode.lastIndexOf("-")+1, oldCode.length()); + prefixCode = oldCode.substring(0, oldCode.lastIndexOf("-")+1); + }else { + lastCode = oldCode; + } + + int codeNum = Integer.parseInt(lastCode); + codeNum++; + + String finalLastCode; + if (codeNum<10) { + finalLastCode="00"+codeNum; + }else if(codeNum<100) { + finalLastCode = "0"+codeNum; + }else { + finalLastCode = ""+codeNum; + } + + return (BaseUtil.strIsNull(prefixCode)) ? finalLastCode:prefixCode+finalLastCode; + } + + public static String autoCreateCode(String parentCode) { + if (BaseUtil.strIsNull(parentCode)) { + return "001"; + }else { + return parentCode+"-001"; + } + } + + public static void main(String[] args) { + System.out.println(autoCreateCode("")); + } +} -- Gitblit v1.9.2