package com.product.base.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.product.admin.service.CodeService; import com.product.admin.service.PublicService; import com.product.base.config.CmnConst; import com.product.base.util.UnUnitCodeUtil; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.service.support.AbstractBaseService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.module.sys.entity.SystemUser; import com.product.util.BaseUtil; @Component public class BaseItemizeService extends AbstractBaseService{ @Autowired BaseDao baseDao; @Autowired CodeService codeService; @Autowired PublicService publicService; /** * 分页获取项目分类 * @param fse * @return */ public DataTableEntity listProjectType(FieldSetEntity fse) { return baseDao.listTable(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE, null, null, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE)); } /** * 获取项目分类 * @param uuid * @return */ public FieldSetEntity getProjectType(String uuid) { return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE, uuid, false); } /** * 保存项目分类 * @param fse * @return */ public boolean saveProjectType(FieldSetEntity fse) { fse.setTableName(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_TYPE); SystemUser user = SpringMVCContextHolder.getCurrentUser(); if(BaseUtil.strIsNull(fse.getUUID())) { BaseUtil.createCreatorAndCreationTime(user, fse); }else { BaseUtil.updatedRegeneratorAndUpdateTime(user, fse); } return baseDao.saveFieldSetEntity(fse); } /** * 获取项目分项树 * @param uuid * @return */ public DataTableEntity listProjectItemTree(String uuid) { DataTableEntity dtProjectItem = baseDao.listTable("SELECT uuid,itemize,itemize_code,itemize_parent_code,itemize_type FROM product_project_base_project_item WHERE itemize_type=?", new Object[] {uuid}); if (!BaseUtil.dataTableIsEmpty(dtProjectItem)) { baseDao.loadPromptData(dtProjectItem); return BaseUtil.dataTableToTreeTable(dtProjectItem, CmnConst.ITEMIZE_CODE, CmnConst.ITEMIZW_PARENT_CODE, null); } return null; } /** * 获取单个项目分项信息 * @param uuid * @return */ public FieldSetEntity getProjectItem(String uuid) { return baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, uuid, false); } /** * 保存项目分项信息 * @param fse * @return */ public boolean saveProjectItem(FieldSetEntity fse) { SystemUser user = SpringMVCContextHolder.getCurrentUser(); if(BaseUtil.strIsNull(fse.getUUID())) { //生成创建人和创建时间 BaseUtil.createCreatorAndCreationTime(user, fse); //获取父级编码 String parentCode = fse.getString(CmnConst.ITEMIZW_PARENT_CODE); //获取同类型同上级分项最大编码 FieldSetEntity fseMaxCodeData; String currentCode; if (BaseUtil.strIsNull(parentCode)) { fseMaxCodeData = baseDao.getFieldSetBySQL("SELECT MAX(itemize_code)itemize_code FROM product_project_base_project_item WHERE itemize_type = ? AND itemize_parent_code IS null", new Object[] {fse.getString(CmnConst.ITEMIZE_TYPE)}, false); if (fseMaxCodeData != null && !BaseUtil.strIsNull(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE))) { currentCode = UnUnitCodeUtil.autoCreateCode(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE)); }else { currentCode = "001"; } }else { fseMaxCodeData = baseDao.getFieldSetBySQL("SELECT MAX(itemize_code)itemize_code FROM product_project_base_project_item WHERE itemize_type = ? AND itemize_parent_code = ?", new Object[] {fse.getString(CmnConst.ITEMIZE_TYPE), parentCode}, false); if (fseMaxCodeData != null && !BaseUtil.strIsNull(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE))) { currentCode = UnUnitCodeUtil.autoCreateCode(fseMaxCodeData.getString(CmnConst.ITEMIZE_CODE)); }else { currentCode = parentCode+"-001"; } } fse.setValue(CmnConst.ITEMIZE_CODE, currentCode); }else { BaseUtil.updatedRegeneratorAndUpdateTime(user, fse); } return baseDao.saveFieldSetEntity(fse); } /** * 删除项目分项信息(验证是否包含子项) * @param uuid * @return */ public boolean deleteProjectItem(String uuid) { FieldSetEntity fse = baseDao.getFieldSet(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, uuid, false); if (fse != null) { String itemCode = fse.getString(CmnConst.ITEMIZE_CODE); return baseDao.delete(CmnConst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, "itemize_code like ?", new Object[] {itemCode+"%"}); } return true; } }