package com.product.project.management.service; import java.util.Map; import com.alibaba.fastjson.JSONArray; 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.permission.PermissionService; import com.product.core.service.support.AbstractBaseService; import com.product.project.management.config.Cmnconst; import com.product.project.management.config.SystemCode; import com.product.util.BaseUtil; import cn.hutool.json.JSONObject; @Component("qxlw-project-service") public class ProjectInfoService extends AbstractBaseService { @Autowired BaseDao baseDao; @Autowired PermissionService permissionService; /** * 项目信息列表 * @param cpage * @param pageSize * @return */ public DataTableEntity listProjectByCreated(Integer cpage, Integer pageSize) { String queryFilter = permissionService.getDataFilter(Cmnconst.PRODUCT_PROJECT_QXLW, "project_leader,materialman"); DataTableEntity dt = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_QXLW, queryFilter, new Object [] {}, null, Cmnconst.CREATED_UTC_DATETIME_DESC, pageSize, cpage); baseDao.loadPromptData(dt); return dt; } /** * 通过项目类型获取项目分项(获取模板分项) * * @param projectType * @return */ public DataTableEntity getProjectTypeItem(String projectType) { DataTableEntity dtProjectItem = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, "itemize_type=?", new Object[]{projectType}, new Object[]{Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_TYPE, Cmnconst.ITEMIZE_PARENT_CODE}); if (!BaseUtil.dataTableIsEmpty(dtProjectItem)) { DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItem, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); return newDtProjectItem; } return null; } /** * 通过项目UUID获取项目分项(获取保存的子表分项--多个树) * * @param uuid * @return */ public FieldSetEntity getProjectItem(String uuid) { FieldSetEntity fseProject = baseDao.getFieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW, uuid, true); DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(fseProject.getSubDataTable(Cmnconst.PRODUCT_PROJECT_ITEM), Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); Map dtSubTable = fseProject.getSubData(); dtSubTable.put(Cmnconst.PRODUCT_PROJECT_ITEM, newDtProjectItem); return fseProject; } /** * 通过项目UUID获取项目分项(获取保存的子表分项--单个树) * * @param uuid * @return */ public DataTableEntity getProjectAllItem(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, Cmnconst.ITEMIZE_FULL_NAME}); if (!BaseUtil.dataTableIsEmpty(dtProjectItemize)) { DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); return newDtProjectItem; } return null; } /** * 获取所有项目信息 * * @return */ public DataTableEntity listProject() { return baseDao.listTable(Cmnconst.PRODUCT_PROJECT_QXLW, null, null, new Object[]{CoreConst.UUID, Cmnconst.PROJECT_NAME}); } /** * 删除子项验证(已经生成预算的子项不能删除) * * @param uuid */ 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_ITEMIZE_DEL_FAIL_HAS_BUDGET.getValue(), SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getText()); } } /** * 获取分项预算信息 * * @param itemizeUUID 分项UUID * @param capge 当前页 * @param pageSize 页大小 * @return */ public DataTableEntity listItemizeBudget(String itemizeUUID, Integer capge, Integer pageSize) { if (!BaseUtil.strIsNull(itemizeUUID)) { DataTableEntity dtItemizeBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BUDGET, "project_itemize_uuid = ?", new Object[] {itemizeUUID}, null, null, pageSize, capge); if (!BaseUtil.dataTableIsEmpty(dtItemizeBudget)) { baseDao.loadPromptData(dtItemizeBudget); } return dtItemizeBudget; } return null; } /** * 更具项目分项uuid获取项目分项下的材料 * @param uuid * @param capge * @param pageSize * @return */ public DataTableEntity listMaterialV(String uuid, Integer capge, Integer pageSize) { return baseDao.listTable("product_project_base_material_v","project_itemize_uuid=?",new String[]{uuid},null,null,pageSize, capge); } /** * 更具仓库和材料获取库存 * @return */ public FieldSetEntity findInventoryV(String warehouse_uuid, String material_uuid) { return baseDao.getFieldSetByFilter("product_project_inventory_v","warehouse_uuid=? and uuid=?",new String[]{warehouse_uuid,material_uuid},false); } /** * 根据项目uuid获取项目分项树结构 * @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); JSONArray objects = BaseUtil.dataTableEntityToJson(newDtProjectItem); JSONObject json = new JSONObject(); json.set("itemize", "项目分部分项"); json.set("children", objects); json.set("type", 1); JSONArray array = new JSONArray(); array.add(json); return array; } }