Commit 0f13a603 by huluobin

美甲师数据定时任务

parent f5bcc352
...@@ -121,4 +121,5 @@ public class StoreTechnician { ...@@ -121,4 +121,5 @@ public class StoreTechnician {
@TableField(exist = false) @TableField(exist = false)
private StoreTechnicianDTO applyStoreTechnicianDTO; private StoreTechnicianDTO applyStoreTechnicianDTO;
private Boolean isAdmin;
} }
package com.gogirl.dto.admin; package com.gogirl.dto.admin;
import lombok.Data;
import java.util.List; import java.util.List;
@Data
public class AdminPage<T> { public class AdminPage<T> {
List<T> items; List<T> items;
} }
package com.gogirl.dto.admin; package com.gogirl.dto.admin;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Data @Data
@Builder
public class GetTechnicianPageRequest { public class GetTechnicianPageRequest {
/** /**
...@@ -34,8 +36,10 @@ public class GetTechnicianPageRequest { ...@@ -34,8 +36,10 @@ public class GetTechnicianPageRequest {
/** /**
* 排序 asc * 排序 asc
*/ */
private String sort; private String sord;
private List<Date> date_utc;
private List<LocalDateTime> date_utc;
private Integer technician_id;
} }
...@@ -51,5 +51,13 @@ public class GogirlProperties { ...@@ -51,5 +51,13 @@ public class GogirlProperties {
private String endTime; private String endTime;
/**
* 发送评价是假
*/
public long testPaperTime; public long testPaperTime;
/**
* 后台地址
*/
private String adminBackendUrl;
} }
...@@ -22,6 +22,10 @@ import com.gogirl.domain.store.store.StoreTechnician; ...@@ -22,6 +22,10 @@ import com.gogirl.domain.store.store.StoreTechnician;
import com.gogirl.domain.user.customer.Customer; import com.gogirl.domain.user.customer.Customer;
import com.gogirl.domain.user.customer.CustomerBalanceRecord; import com.gogirl.domain.user.customer.CustomerBalanceRecord;
import com.gogirl.domain.xcx.WeekConfig; import com.gogirl.domain.xcx.WeekConfig;
import com.gogirl.dto.admin.AdminPage;
import com.gogirl.dto.admin.AdminResult;
import com.gogirl.dto.admin.AdminTechnicianScore;
import com.gogirl.dto.admin.GetTechnicianPageRequest;
import com.gogirl.infrastructure.common.util.ListUtil; import com.gogirl.infrastructure.common.util.ListUtil;
import com.gogirl.infrastructure.config.property.GogirlProperties; import com.gogirl.infrastructure.config.property.GogirlProperties;
import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper; import com.gogirl.infrastructure.mapper.market.coupon.CouponCustomerRelevanceMapper;
...@@ -39,14 +43,22 @@ import com.gogirl.infrastructure.mapper.store.store.StoreTechnicianMapper; ...@@ -39,14 +43,22 @@ import com.gogirl.infrastructure.mapper.store.store.StoreTechnicianMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMapper; import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMapper;
import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper; import com.gogirl.infrastructure.mapper.xcx.WeekConfigMapper;
import com.gogirl.infrastructure.subscribe.SubscribeService; import com.gogirl.infrastructure.subscribe.SubscribeService;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -322,6 +334,9 @@ public class Schedule { ...@@ -322,6 +334,9 @@ public class Schedule {
log.debug("同步闲时折扣周 结束"); log.debug("同步闲时折扣周 结束");
} }
@Resource
RestTemplate restTemplate;
/** /**
* 定时同步美甲师成长历程 * 定时同步美甲师成长历程
*/ */
...@@ -330,18 +345,65 @@ public class Schedule { ...@@ -330,18 +345,65 @@ public class Schedule {
log.info("定时同步美甲师成长历程** 任务开始"); log.info("定时同步美甲师成长历程** 任务开始");
List<StoreTechnician> storeTechnicianList = storeTechnicianMapper.selectList(new LambdaQueryWrapper<StoreTechnician>() List<StoreTechnician> storeTechnicianList = storeTechnicianMapper.selectList(new LambdaQueryWrapper<StoreTechnician>()
.eq(StoreTechnician::getStatus, 1)); .eq(StoreTechnician::getStatus, 1)
.eq(StoreTechnician::getIsAdmin, false));
storeTechnicianList.forEach(storeTechnician -> { storeTechnicianList.forEach(storeTechnician -> {
ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>> responseBodyType = new ParameterizedTypeReference<AdminResult<AdminPage<AdminTechnicianScore>>>() {
};
GetTechnicianPageRequest allRequest = GetTechnicianPageRequest.builder()
.page(1)
.rows(30)
.sidx("grade")
.sord("asc")
//在职
.status(1)
.technician_id(storeTechnician.getId())
.build();
HttpEntity<GetTechnicianPageRequest> allHttpEntity = new HttpEntity<>(allRequest);
AdminTechnicianScore monthAdminResult = restTemplate.exchange(gogirlProperties.getAdminBackendUrl() + "/api/ReportTable/GetTechnicianPage", HttpMethod.POST, allHttpEntity, responseBodyType)
.getBody()
.getData()
.getItems()
.stream()
.findAny()
.orElse(new AdminTechnicianScore());
GetTechnicianPageRequest monthRequest = GetTechnicianPageRequest.builder()
.page(1)
.rows(30)
.sidx("grade")
.sord("asc")
//在职
.status(1)
.date_utc(Lists.newArrayList(LocalDateTime.of(LocalDate.of(2020, 4, 1), LocalTime.of(0, 0)), LocalDateTime.now()))
.technician_id(storeTechnician.getId())
.build();
HttpEntity<GetTechnicianPageRequest> monthHttpEntity = new HttpEntity<>(monthRequest);
AdminTechnicianScore allAdminResult = restTemplate.exchange(gogirlProperties.getAdminBackendUrl() + "/api/ReportTable/GetTechnicianPage", HttpMethod.POST, monthHttpEntity, responseBodyType)
.getBody()
.getData()
.getItems()
.stream()
.findAny()
.orElse(new AdminTechnicianScore());
Career career = careerMapper.selectOne(new LambdaQueryWrapper<Career>().eq(Career::getTechnicianId, storeTechnician.getId())); Career career = careerMapper.selectOne(new LambdaQueryWrapper<Career>().eq(Career::getTechnicianId, storeTechnician.getId()));
if (career == null) { if (career == null) {
career = new Career(); career = new Career();
career.setTechnicianId(storeTechnician.getTechnicianId()); career.setTechnicianId(storeTechnician.getTechnicianId());
} }
career.setJoinDate(storeTechnician.getCreateTime()); career.setJoinDate(storeTechnician.getCreateTime());
if (storeTechnician.getCreateTime() != null) { if (storeTechnician.getCreateTime() != null) {
long pastMills = System.currentTimeMillis() - storeTechnician.getCreateTime().getTime(); long pastMills = System.currentTimeMillis() - storeTechnician.getCreateTime().getTime();
int day = (int) (pastMills / 1000 / 60 / 60 / 24); int day = (int) (pastMills / 1000 / 60 / 60 / 24);
career.setOnJobTime(day); career.setOnJobTime(day);
...@@ -352,19 +414,19 @@ public class Schedule { ...@@ -352,19 +414,19 @@ public class Schedule {
//当月开卡数量 //当月开卡数量
Integer MonthBalanceCardNum = careerMapper.queryMonthBalanceCardNum(storeTechnician.getId(), month); Integer MonthBalanceCardNum = careerMapper.queryMonthBalanceCardNum(storeTechnician.getId(), month);
career.setMonthBalanceCardNum(MonthBalanceCardNum); career.setMonthBalanceCardNum(monthAdminResult.getCard_count());
//考勤准时 //考勤准时
career.setMonthAttendancePercent(null); career.setMonthAttendancePercent(null);
//信息录入完整度 //信息录入完整度
career.setMonthInfoPercent(null); career.setMonthInfoPercent(monthAdminResult.getAvg_data_integrity().doubleValue());
//当月订单总数 //当月订单总数
Integer monthOrderNum = careerMapper.queryMonthOrderNum(storeTechnician.getId(), month); Integer monthOrderNum = careerMapper.queryMonthOrderNum(storeTechnician.getId(), month);
career.setMonthOrderNum(monthOrderNum); career.setMonthOrderNum(monthOrderNum);
//客户好评率 //客户好评率
career.setMonthPraisePercent(null); career.setMonthPraisePercent(monthAdminResult.getPraise_proportion().doubleValue());
//当月复购率 //当月复购率
//复购率 //复购率
...@@ -372,13 +434,17 @@ public class Schedule { ...@@ -372,13 +434,17 @@ public class Schedule {
if (monthOrderNum != null && monthOrderNum != 0) { if (monthOrderNum != null && monthOrderNum != 0) {
career.setMonthRepurchasePercent((double) monthRepurchaseNum / monthOrderNum); career.setMonthRepurchasePercent((double) monthRepurchaseNum / monthOrderNum);
} }
career.setMonthRepurchasePercent(monthAdminResult.getRepeat_purchase_client_roportion().doubleValue());
//当月服务客户总数 //当月服务客户总数
Integer monthServeCustomerNum = careerMapper.queryMonthServeCustomerNum(storeTechnician.getId(), month); Integer monthServeCustomerNum = careerMapper.queryMonthServeCustomerNum(storeTechnician.getId(), month);
career.setMonthServeCustomerNum(monthServeCustomerNum); career.setMonthServeCustomerNum(monthAdminResult.getTotal_client_count());
//当月服务总次数 //当月服务总次数
career.setMonthServeNum(monthServeCustomerNum); career.setMonthServeNum(monthAdminResult.getTotal_service_count());
//信息录入完整度
career.setMonthInfoPercent(monthAdminResult.getAvg_data_integrity().doubleValue());
//总考勤准时率 //总考勤准时率
career.setTotalAttendancePercent(null); career.setTotalAttendancePercent(null);
...@@ -387,10 +453,10 @@ public class Schedule { ...@@ -387,10 +453,10 @@ public class Schedule {
//开卡总数 //开卡总数
Integer totalBalanceCardNum = careerMapper.queryTotalBalanceCardNum(storeTechnician.getId(), month); Integer totalBalanceCardNum = careerMapper.queryTotalBalanceCardNum(storeTechnician.getId(), month);
career.setTotalBalanceCardNum(totalBalanceCardNum); career.setTotalBalanceCardNum(allAdminResult.getCard_count());
//信息录入完整度 //信息录入完整度
career.setTotalInfoPercent(null); career.setTotalInfoPercent(allAdminResult.getAvg_data_integrity().doubleValue());
//订单总数 //订单总数
Integer totalOrderNum = careerMapper.queryTotalOrderNum(storeTechnician.getId(), month); Integer totalOrderNum = careerMapper.queryTotalOrderNum(storeTechnician.getId(), month);
...@@ -398,13 +464,11 @@ public class Schedule { ...@@ -398,13 +464,11 @@ public class Schedule {
//客户好评率 //客户好评率
Double totalPraisePercent = careerMapper.queryTotalPraisePercent(storeTechnician.getId()); Double totalPraisePercent = careerMapper.queryTotalPraisePercent(storeTechnician.getId());
career.setTotalPraisePercent(totalPraisePercent);
Double monthPraisePercent = careerMapper.queryMonthPraisePercent(storeTechnician.getId(), month); //总好评率
career.setMonthPraisePercent(monthPraisePercent); career.setTotalPraisePercent(allAdminResult.getPraise_proportion().doubleValue());
//信息录入完整度 //总考勤准时比率
career.setMonthInfoPercent(storeTechnician.getInformationIntegrity());
career.setTotalAttendancePercent(storeTechnician.getInformationIntegrity()); career.setTotalAttendancePercent(storeTechnician.getInformationIntegrity());
//复购率 //复购率
...@@ -412,13 +476,14 @@ public class Schedule { ...@@ -412,13 +476,14 @@ public class Schedule {
if (totalOrderNum != null && totalOrderNum != 0) { if (totalOrderNum != null && totalOrderNum != 0) {
career.setTotalRepurchasePercent((double) totalRepurchaseNum / totalOrderNum); career.setTotalRepurchasePercent((double) totalRepurchaseNum / totalOrderNum);
} }
career.setTotalRepurchasePercent(allAdminResult.getRepeat_purchase_client_roportion().doubleValue());
//服务客户总数 //服务客户总数
Integer totalServeCustomerNum = careerMapper.queryTotalServeCustomerNum(storeTechnician.getId(), month); Integer totalServeCustomerNum = careerMapper.queryTotalServeCustomerNum(storeTechnician.getId(), month);
career.setTotalServeCustomerNum(totalServeCustomerNum); career.setTotalServeCustomerNum(allAdminResult.getTotal_client_count());
//服务总次数 //服务总次数
career.setTotalServeNum(totalServeCustomerNum); career.setTotalServeNum(allAdminResult.getTotal_service_count());
career.setTechnicianId(storeTechnician.getId()); career.setTechnicianId(storeTechnician.getId());
if (career.getId() != null) { if (career.getId() != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment