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; import com.product.util.BaseUtil; /** * 材料信息 * @author 86151 * */ @Component public class MaterialManagerService extends AbstractBaseService{ @Autowired BaseDao baseDao; /** * 获取材料分类树数据 * @return */ public DataTableEntity getMaterialTypeTree() { 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(); } /** * 分页获取材料信息 * @param fse * @return */ public DataTableEntity listMaterialInfo(FieldSetEntity fse) { DataTableEntity dt; 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, "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 fse * @return */ public boolean saveMaterialInfo(FieldSetEntity fse) { //验重条件 String filter = "material_code=?"; List 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); } }