|
|
@ -6,6 +6,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.DateUtils; |
|
|
|
import com.epmet.constant.ProjectConstant; |
|
|
|
import com.epmet.dto.ProjectDTO; |
|
|
|
import com.epmet.dto.extract.form.BizDataFormDTO; |
|
|
|
import com.epmet.dto.extract.form.StaffPatrolStatsFormDTO; |
|
|
|
import com.epmet.dto.user.result.CustomerGridStaffDTO; |
|
|
|
import com.epmet.dto.user.result.CustomerStaffDTO; |
|
|
@ -14,11 +15,14 @@ import com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO; |
|
|
|
import com.epmet.service.evaluationindex.extract.biz.BizDataStatsService; |
|
|
|
import com.epmet.service.org.CustomerStaffService; |
|
|
|
import com.epmet.service.project.ProjectService; |
|
|
|
import com.epmet.service.stats.DimCustomerService; |
|
|
|
import com.epmet.service.user.StatsStaffPatrolService; |
|
|
|
import com.epmet.service.user.UserService; |
|
|
|
import com.epmet.util.DimIdGenerator; |
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.commons.collections4.CollectionUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.jetbrains.annotations.NotNull; |
|
|
|
import org.jetbrains.annotations.Nullable; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
@ -28,6 +32,7 @@ import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.concurrent.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -40,6 +45,11 @@ import java.util.stream.Collectors; |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
public class BizDataStatsServiceImpl implements BizDataStatsService { |
|
|
|
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() |
|
|
|
.setNameFormat("bizDataStats-pool-%d").build(); |
|
|
|
ExecutorService threadPool = new ThreadPoolExecutor(3, 6, |
|
|
|
10L, TimeUnit.MINUTES, |
|
|
|
new LinkedBlockingQueue<>(500), namedThreadFactory, new ThreadPoolExecutor.CallerRunsPolicy()); |
|
|
|
@Autowired |
|
|
|
private CustomerStaffService customerStaffService; |
|
|
|
@Autowired |
|
|
@ -48,6 +58,36 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { |
|
|
|
private ProjectService projectService; |
|
|
|
@Autowired |
|
|
|
private StatsStaffPatrolService statsStaffPatrolService; |
|
|
|
@Autowired |
|
|
|
private DimCustomerService dimCustomerService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void exeDailyAll(BizDataFormDTO dataFormDTO) { |
|
|
|
String customerId = dataFormDTO.getCustomerId(); |
|
|
|
if (StringUtils.isBlank(dataFormDTO.getDateId()) && (StringUtils.isBlank(dataFormDTO.getStartDate()) && StringUtils.isBlank(dataFormDTO.getEndDate()))) { |
|
|
|
//如果没有设置开始日期、结束日期,默认查询昨天
|
|
|
|
dataFormDTO.setDateId(DimIdGenerator.getDateDimId(DateUtils.addDateDays(new Date(), -1))); |
|
|
|
} |
|
|
|
List<String> customerIds = new ArrayList<>(); |
|
|
|
if (StringUtils.isNotBlank(customerId)) { |
|
|
|
//指定某个客户
|
|
|
|
customerIds.add(customerId); |
|
|
|
} else { |
|
|
|
//查询全部客户
|
|
|
|
int pageNo = NumConstant.ONE; |
|
|
|
int pageSize = NumConstant.ONE_HUNDRED; |
|
|
|
customerIds = dimCustomerService.selectCustomerIdPage(pageNo, pageSize); |
|
|
|
if (org.springframework.util.CollectionUtils.isEmpty(customerIds)) { |
|
|
|
log.error("exeDailyAll 获取客户Id为空"); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
customerIds.forEach(cId -> { |
|
|
|
|
|
|
|
log.info("exeDailyAll param:{}", JSON.toJSONString(dataFormDTO)); |
|
|
|
submitJob(dataFormDTO); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void executeStaffPatrolStats(StaffPatrolStatsFormDTO formDTO) { |
|
|
@ -216,4 +256,33 @@ public class BizDataStatsServiceImpl implements BizDataStatsService { |
|
|
|
log.debug("getAllGridMembers result:{},param:{}", JSON.toJSONString(insertList), JSON.toJSONString(formDTO)); |
|
|
|
return insertList; |
|
|
|
} |
|
|
|
|
|
|
|
private void submitJob(BizDataFormDTO param) { |
|
|
|
boolean isRange = StringUtils.isBlank(param.getDateId()); |
|
|
|
List<String> daysBetween = null; |
|
|
|
if (isRange) { |
|
|
|
daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); |
|
|
|
} |
|
|
|
List<String> finalDaysBetween = daysBetween; |
|
|
|
threadPool.submit(() -> { |
|
|
|
StaffPatrolStatsFormDTO formDTO = ConvertUtils.sourceToTarget(param, StaffPatrolStatsFormDTO.class); |
|
|
|
if (!isRange) { |
|
|
|
try { |
|
|
|
formDTO.setDateId(param.getDateId()); |
|
|
|
this.executeStaffPatrolStats(formDTO); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(formDTO), e); |
|
|
|
} |
|
|
|
} else { |
|
|
|
try { |
|
|
|
for (String dateDimId : finalDaysBetween) { |
|
|
|
formDTO.setDateId(dateDimId); |
|
|
|
this.executeStaffPatrolStats(formDTO); |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("【网格员巡查数据统计】发生异常,参数:" + JSON.toJSONString(param), e); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|