From c383af8d9624b7d1f8e2111680ea1642593ad805 Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期一, 24 七月 2023 14:42:57 +0800
Subject: [PATCH] 项目调整
---
product-server-project-management/src/main/java/com/product/project/management/service/ProjectItemizeService.java | 142 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 142 insertions(+), 0 deletions(-)
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});
+ }
+}
--
Gitblit v1.9.2