package com.product.contract.service; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.product.contract.config.CmnConst; import com.product.contract.service.ide.IProjectInfoService; 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.core.service.support.QueryFilterService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.product.common.lang.StringUtils; import java.util.*; /** * Copyright LX * * @Title: ProjectInfoService * @Project: product-server * @date: 2021-07-01 13:49 * @author: ZhouJie * @Description: */ @Component public class ProjectInfoService extends AbstractBaseService implements IProjectInfoService { @Autowired public BaseDao baseDao; @Autowired PermissionService permissionService; @Autowired QueryFilterService queryFilterService; /** * 根据uuid获取项目详情 * @param fs * @return * @throws BaseException */ public FieldSetEntity getProjectInfo(FieldSetEntity fs) throws BaseException { return baseDao.getFieldSetEntity(CmnConst.PRODUCT_PROJECT_BUSINESS,fs.getUUID(),true); } /** 保存项目信息 * @param fs * @return */ @Transactional public String saveProjectInfo(FieldSetEntity fs) throws BaseException { String re = fs.getString("region"); if(StringUtils.isEmpty(fs.getString(CmnConst.UUID))){ fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("created_utc_datetime",new Date()); return baseDao.add(fs); } else { fs.setValue("updated_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("updated_utc_datetime",new Date()); baseDao.update(fs); return fs.getString(CmnConst.UUID); } } /** * 删除项目信息 * @param fs * @return */ @Transactional public boolean deleteProjectInfo(FieldSetEntity fs) { String uuid = fs.getUUID(); String[] uuids = uuid.split(","); return baseDao.delete(CmnConst.PRODUCT_PROJECT_BUSINESS, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids); } /** * 设置资料清单 * @param fse * @throws BaseException */ @Override @Transactional public void saveOrUpdate(FieldSetEntity fse) throws BaseException { String dic_name = fse.getValues().get("dict_name").toString(); StringBuilder filterSb = new StringBuilder(64); filterSb.append( " project_type = "+dic_name); DataTableEntity dataListNew = fse.getSubData().get("product_project_manager_data_list"); for (int i = 0; i < dataListNew.getRows(); i++) { FieldSetEntity fs = dataListNew.getData().get(i); //此时为新增数据 if(ObjectUtil.isNotEmpty(fs.getValues().get("~uuid~"))){ fs.setValue("project_type",dic_name); fs.setValue("org_level_uuid", SpringMVCContextHolder.getCurrentUser().getOrg_level_uuid()); fs.setValue("created_by", SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("created_utc_datetime",new Date()); baseDao.add(fs); }else if(ObjectUtil.isNotEmpty(fs.getValues().get("~type~"))&&fs.getValues().get("~type~").toString().equals("del")){ StringBuilder filter = new StringBuilder(64); filter.append( "uuid = '"+fs.getValues().get("uuid")+"'"); filter.append(" and id = "+fs.getValues().get("id")); baseDao.delete("product_project_manager_data_list",filter.toString(),new Object[]{}); }else { fs.setValue("updated_by",SpringMVCContextHolder.getCurrentUser().getUser_id()); fs.setValue("updated_utc_datetime",new Date()); baseDao.update(fs); } } } /** * 获取资料清单列表(分项目类型) * @param dict_value * @return * @throws BaseException */ @Override public JSONObject getDataList(String dict_value) throws BaseException { JSONObject jsonObject=new JSONObject(); if(!StringUtils.isEmpty(dict_value)){ StringBuilder filterSb = new StringBuilder(64);; filterSb.append( " project_type = "+dict_value); DataTableEntity product_project_manager_data_list = baseDao.listTable("product_project_manager_data_list", filterSb.toString(), new Object[]{}); JSONArray objects = BaseUtil.dataTableEntityToJson(product_project_manager_data_list); jsonObject.put("data",objects); } return jsonObject; } /** * 获取合同列表 * @param fs * @return */ public DataTableEntity listProject(FieldSetEntity fs) { String queryFilter=permissionService.getDataFilter(CmnConst.ORG_LEVEL_UUID); if(StringUtils.isEmpty(queryFilter)) { queryFilter = CmnConst.CREATED_BY + " = " + SpringMVCContextHolder.getCurrentUser().getUser_id(); } if(!BaseUtil.dataTableIsEmpty(fs.getSubDataTable("systemSeniorQueryString"))){ queryFilter = queryFilter +" AND "+ queryFilterService.getQueryFilter(fs); } String filter = fs.getString("filter"); if(BaseUtil.strIsNull(filter)){ filter = queryFilter; }else { filter = filter + " AND " + queryFilter; } DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_PROJECT_BUSINESS,filter,new Object[]{},null,null,fs.getInteger(CmnConst.PAGESIZE), fs.getInteger(CmnConst.CPAGE)); baseDao.loadPromptData(dt); return dt; } }