6 changed files with 292 additions and 0 deletions
			
			
		@ -0,0 +1,69 @@ | 
				
			|||
package com.epmet.dto.screen.result; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.tools.constant.NumConstant; | 
				
			|||
import lombok.Data; | 
				
			|||
 | 
				
			|||
import java.io.Serializable; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Author zxc | 
				
			|||
 * @DateTime 2021/11/10 10:36 上午 | 
				
			|||
 * @DESC | 
				
			|||
 */ | 
				
			|||
@Data | 
				
			|||
public class GridAndOrgCategoryCountResultDTO implements Serializable { | 
				
			|||
 | 
				
			|||
    private static final long serialVersionUID = -5167964547464983118L; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 组织ID | 
				
			|||
     */ | 
				
			|||
    private String orgId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 网格ID | 
				
			|||
     */ | 
				
			|||
    private String gridId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 上级组织ID | 
				
			|||
     */ | 
				
			|||
    private String pid; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 所有上级组织ID | 
				
			|||
     */ | 
				
			|||
    private String pids; | 
				
			|||
 | 
				
			|||
    private String dateId; | 
				
			|||
 | 
				
			|||
    private String customerId; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 分类CODE | 
				
			|||
     */ | 
				
			|||
    private String categoryCode; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 分类CODE级别 | 
				
			|||
     */ | 
				
			|||
    private Integer level; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 项目总数 | 
				
			|||
     */ | 
				
			|||
    private Integer projectTotal; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * 关闭【结案】项目总数 | 
				
			|||
     */ | 
				
			|||
    private Integer closedProjectTotal; | 
				
			|||
 | 
				
			|||
    public GridAndOrgCategoryCountResultDTO() { | 
				
			|||
        this.orgId = ""; | 
				
			|||
        this.categoryCode = ""; | 
				
			|||
        this.level = NumConstant.ZERO; | 
				
			|||
        this.projectTotal = NumConstant.ZERO; | 
				
			|||
        this.closedProjectTotal = NumConstant.ZERO; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,34 @@ | 
				
			|||
package com.epmet.service.evaluationindex.screen; | 
				
			|||
 | 
				
			|||
import com.epmet.commons.mybatis.service.BaseService; | 
				
			|||
import com.epmet.commons.tools.page.PageData; | 
				
			|||
import com.epmet.dto.screen.ScreenProjectCategoryOrgDailyDTO; | 
				
			|||
import com.epmet.dto.screencoll.ScreenCollFormDTO; | 
				
			|||
import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryOrgDailyEntity; | 
				
			|||
 | 
				
			|||
import java.util.List; | 
				
			|||
import java.util.Map; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * 项目(事件)分类按 组织——组织——按天统计 | 
				
			|||
 */ | 
				
			|||
public interface ScreenProjectCategoryGridAndOrgDailyService { | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  分类下的项目数【grid】 | 
				
			|||
     * @param customerId | 
				
			|||
     * @param dateId | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 10:23 上午 | 
				
			|||
     */ | 
				
			|||
    void extractCategoryProjectGridData(String customerId, String dateId); | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  分类下的项目数【org】 | 
				
			|||
     * @param customerId | 
				
			|||
     * @param dateId | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 10:23 上午 | 
				
			|||
     */ | 
				
			|||
    void extractCategoryProjectOrgData(String customerId, String dateId); | 
				
			|||
} | 
				
			|||
@ -0,0 +1,123 @@ | 
				
			|||
package com.epmet.service.evaluationindex.screen.impl; | 
				
			|||
 | 
				
			|||
import com.alibaba.fastjson.JSON; | 
				
			|||
import com.epmet.commons.dynamic.datasource.annotation.DataSource; | 
				
			|||
import com.epmet.commons.tools.constant.NumConstant; | 
				
			|||
import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			|||
import com.epmet.constant.DataSourceConstant; | 
				
			|||
import com.epmet.constant.ProjectConstant; | 
				
			|||
import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryGridDailyDao; | 
				
			|||
import com.epmet.dao.evaluationindex.screen.ScreenProjectCategoryOrgDailyDao; | 
				
			|||
import com.epmet.dao.evaluationindex.screen.ScreenProjectDataDao; | 
				
			|||
import com.epmet.dto.screen.result.GridAndOrgCategoryCountResultDTO; | 
				
			|||
import com.epmet.entity.crm.CustomerRelationEntity; | 
				
			|||
import com.epmet.entity.evaluationindex.screen.ScreenProjectCategoryGridDailyEntity; | 
				
			|||
import com.epmet.service.crm.CustomerRelationService; | 
				
			|||
import com.epmet.service.evaluationindex.screen.ScreenProjectCategoryGridAndOrgDailyService; | 
				
			|||
import com.epmet.service.evaluationindex.screen.ScreenProjectCategoryGridDailyService; | 
				
			|||
import lombok.extern.slf4j.Slf4j; | 
				
			|||
import org.apache.commons.collections4.CollectionUtils; | 
				
			|||
import org.apache.commons.collections4.ListUtils; | 
				
			|||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			|||
import org.springframework.stereotype.Service; | 
				
			|||
import org.springframework.transaction.annotation.Transactional; | 
				
			|||
 | 
				
			|||
import java.util.ArrayList; | 
				
			|||
import java.util.List; | 
				
			|||
import java.util.stream.Collectors; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Author zxc | 
				
			|||
 * @DateTime 2021/11/10 10:25 上午 | 
				
			|||
 * @DESC | 
				
			|||
 */ | 
				
			|||
@Service | 
				
			|||
@DataSource(DataSourceConstant.EVALUATION_INDEX) | 
				
			|||
@Slf4j | 
				
			|||
public class ScreenProjectCategoryGridAndOrgDailyServiceImpl implements ScreenProjectCategoryGridAndOrgDailyService{ | 
				
			|||
 | 
				
			|||
    @Autowired | 
				
			|||
    private ScreenProjectDataDao screenProjectDataDao; | 
				
			|||
    @Autowired | 
				
			|||
    private CustomerRelationService relationService; | 
				
			|||
    @Autowired | 
				
			|||
    private ScreenProjectCategoryGridDailyDao gridDailyDao; | 
				
			|||
    @Autowired | 
				
			|||
    private ScreenProjectCategoryGridDailyService gridDailyService; | 
				
			|||
    @Autowired | 
				
			|||
    private ScreenProjectCategoryOrgDailyDao orgDailyDao; | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  分类下的项目数【grid】 | 
				
			|||
     * @param customerId | 
				
			|||
     * @param dateId | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 10:23 上午 | 
				
			|||
     */ | 
				
			|||
    @Override | 
				
			|||
    public void extractCategoryProjectGridData(String customerId, String dateId) { | 
				
			|||
        List<CustomerRelationEntity> relationInfo = relationService.selectSubCustomer(customerId); | 
				
			|||
        List<String> customerIds = new ArrayList<>(); | 
				
			|||
        customerIds.add(customerId); | 
				
			|||
        List<GridAndOrgCategoryCountResultDTO> allList = new ArrayList<>(); | 
				
			|||
        List<GridAndOrgCategoryCountResultDTO> closedList = new ArrayList<>(); | 
				
			|||
        if (CollectionUtils.isNotEmpty(relationInfo)){ | 
				
			|||
            // 单客户
 | 
				
			|||
            allList = screenProjectDataDao.selectGridCategoryProjectCount(customerIds, dateId, ProjectConstant.PROJECT_STATUS_ALL,customerId, NumConstant.FOUR); | 
				
			|||
            closedList = screenProjectDataDao.selectGridCategoryProjectCount(customerIds, dateId, ProjectConstant.PROJECT_STATUS_CLOSED,customerId, NumConstant.FOUR); | 
				
			|||
 | 
				
			|||
        }else { | 
				
			|||
            // 多客户
 | 
				
			|||
            List<String> subCustomerIds = relationInfo.stream().map(CustomerRelationEntity::getCustomerId).collect(Collectors.toList()); | 
				
			|||
            customerIds.addAll(subCustomerIds); | 
				
			|||
            allList = screenProjectDataDao.selectGridCategoryProjectCount(customerIds, dateId, ProjectConstant.PROJECT_STATUS_ALL,customerId, NumConstant.TWO); | 
				
			|||
            closedList = screenProjectDataDao.selectGridCategoryProjectCount(customerIds, dateId, ProjectConstant.PROJECT_STATUS_CLOSED,customerId, NumConstant.TWO); | 
				
			|||
        } | 
				
			|||
        List<GridAndOrgCategoryCountResultDTO> finalClosedList = closedList; | 
				
			|||
        allList.forEach(a -> finalClosedList.stream().filter(c -> c.getOrgId().equals(a.getOrgId()) && c.getCategoryCode().equals(a.getCategoryCode())).forEach(c -> a.setClosedProjectTotal(c.getClosedProjectTotal()))); | 
				
			|||
        gridDel(customerId,dateId); | 
				
			|||
        gridInsert(allList); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  项目分类网格删除 | 
				
			|||
     * @param customerId | 
				
			|||
     * @param dateId | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 1:55 下午 | 
				
			|||
     */ | 
				
			|||
    @Transactional(rollbackFor = Exception.class) | 
				
			|||
    public void gridDel(String customerId,String dateId){ | 
				
			|||
        Integer num = NumConstant.ZERO; | 
				
			|||
        do { | 
				
			|||
            num = gridDailyDao.deleteByDateIdAndCustomerId(customerId, dateId); | 
				
			|||
        }while (num > NumConstant.ZERO && num == NumConstant.ONE_THOUSAND); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  项目分类网格添加 | 
				
			|||
     * @param needInsert | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 1:55 下午 | 
				
			|||
     */ | 
				
			|||
    @Transactional(rollbackFor = Exception.class) | 
				
			|||
    public void gridInsert(List<GridAndOrgCategoryCountResultDTO> needInsert){ | 
				
			|||
        List<List<GridAndOrgCategoryCountResultDTO>> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); | 
				
			|||
        partition.forEach(p -> { | 
				
			|||
            gridDailyService.insertBatch(ConvertUtils.sourceToTarget(p,ScreenProjectCategoryGridDailyEntity.class)); | 
				
			|||
            log.info("插入的网格项目分类为" + JSON.toJSONString(p)); | 
				
			|||
        }); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
    /** | 
				
			|||
     * @Description  分类下的项目数【org】 | 
				
			|||
     * @param customerId | 
				
			|||
     * @param dateId | 
				
			|||
     * @author zxc | 
				
			|||
     * @date 2021/11/10 10:23 上午 | 
				
			|||
     */ | 
				
			|||
    @Override | 
				
			|||
    public void extractCategoryProjectOrgData(String customerId, String dateId) { | 
				
			|||
 | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
					Loading…
					
					
				
		Reference in new issue