From f7c979c86acaecb1ed22dbf0ea17991a2c88f587 Mon Sep 17 00:00:00 2001 From: 354798ggg <1074825718@qq.com> Date: 星期五, 01 十二月 2023 10:34:01 +0800 Subject: [PATCH] BUG优化 --- product-server-project-base/src/main/java/com/product/base/service/MaterialManagerService.java | 67 +++++++++++++++++++++++---------- 1 files changed, 47 insertions(+), 20 deletions(-) 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..16cc6d5 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; @@ -28,7 +33,35 @@ * @return */ public DataTableEntity getMaterialTypeTree() { - return baseDao.listTable(CmnConst.PRODUCT_SYS_DICT, "dict_name=?", new Object[] {CmnConst.MATERIAL_TYPE}); + return baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL_TYPE); + } + + /** + * 鏂板鏉愭枡绫诲瀷 + * @param fse + * @return + */ + public String saveMaterialType(FieldSetEntity fse) { + if (BaseUtil.strIsNull(fse.getUUID())) { + FieldSetEntity fseMaxValue = baseDao.getFieldSetEntityBySQL("SELECT IFNULL((MAX(material_type_value) + 1),0) material_type_value FROM product_project_base_material_type", new Object[] {}, false); + fse.setValue(CmnConst.MATERIAL_TYPE_VALUE, fseMaxValue.getString(CmnConst.MATERIAL_TYPE_VALUE)); + } else { + if ("0".equals(fse.getString(CmnConst.IS_USED))) { + StringBuilder sb = new StringBuilder(256); + sb.append("SELECT SUM(num)num FROM ( ") + .append(" select COUNT(*)num from product_project_budget A where a.material_type=? ") + .append(" UNION ALL ") + .append(" select COUNT(*)num from product_project_base_material WHERE FIND_IN_SET (?,material_type)>0 ") + .append(" )A "); + FieldSetEntity fseCount = baseDao.getFieldSetEntityBySQL(sb.toString(), new Object[] { fse.getString("material_type_value"),fse.getString("material_type_value") }, false); + if (fseCount.getInteger("num")<1) { + baseDao.executeUpdate("DELETE FROM product_project_base_material_type WHERE uuid=?", new Object[] {fse.getUUID()}); + return fse.getUUID(); + } + } + } + baseDao.saveFieldSetEntity(fse); + return fse.getUUID(); } /** @@ -41,21 +74,13 @@ if (BaseUtil.strIsNull(fse.getString(CmnConst.MATERIAL_TYPE)) || fse.getInteger(CmnConst.MATERIAL_TYPE)==-1) { dt = baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, null, null, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); }else { - dt = baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, "material_type=?", new Object[] {fse.getInteger(CmnConst.MATERIAL_TYPE)}, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); + dt = baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, "CONCAT(',',material_type,',') like ?", new Object[] {"%,"+fse.getInteger(CmnConst.MATERIAL_TYPE)+",%"}, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); } baseDao.loadPromptData(dt); return dt; } - /** - * 鑾峰彇鏉愭枡淇℃伅 - * @param uuid - * @return - */ - public FieldSetEntity getMaterialInfo(String uuid) { - return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_MATERIAL, uuid, false); - } /** * 淇濆瓨鏉愭枡淇℃伅 @@ -63,22 +88,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); } } -- Gitblit v1.9.2