|
|
@@ -4,6 +4,7 @@ import com.goafanti.admin.bo.*;
|
|
|
import com.goafanti.admin.service.AdminStatisticsService;
|
|
|
import com.goafanti.common.constant.AFTConstants;
|
|
|
import com.goafanti.common.dao.*;
|
|
|
+import com.goafanti.common.error.BusinessException;
|
|
|
import com.goafanti.common.model.*;
|
|
|
import com.goafanti.common.utils.DateUtils;
|
|
|
import com.goafanti.common.utils.LoggerUtils;
|
|
|
@@ -544,7 +545,6 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
for (PublicRelease e : publicReleases) {
|
|
|
AdminPublicDuration a = new AdminPublicDuration();
|
|
|
pushAdminNameAndProvince(e.getAid(),a);
|
|
|
-
|
|
|
//计算时间差,再加一天就是一共多少天
|
|
|
long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
|
|
|
daysBetween+=1;
|
|
|
@@ -592,15 +592,9 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
}
|
|
|
//将数据统计到人
|
|
|
Map<String, BigDecimal> durationMap = new HashMap<>();
|
|
|
- Map<String, String> nameMap = new HashMap<>();
|
|
|
for (AdminPublicDuration e : list) {
|
|
|
String id = e.getId(); // 假设 AdminStatisticsBo 有一个 getId() 方法
|
|
|
BigDecimal duration = BigDecimal.valueOf(e.getDuration()); // 假设 AdminStatisticsBo 有一个 getCallDurationSum() 方法
|
|
|
- if(!nameMap.containsKey(id)){
|
|
|
- String name = e.getName();
|
|
|
-
|
|
|
- nameMap.put(id, name);
|
|
|
- }
|
|
|
if (durationMap.containsKey(id)) {
|
|
|
BigDecimal currentDuration = durationMap.get(id);
|
|
|
durationMap.put(id, currentDuration.add(duration));
|
|
|
@@ -609,7 +603,6 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
}
|
|
|
}
|
|
|
List<AdminPublicDuration> list2=sumDurationsById(list);
|
|
|
-
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
|
map.put("date",list);
|
|
|
map.put("count",list2);
|
|
|
@@ -632,37 +625,53 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
name = name.substring(0, index);
|
|
|
}
|
|
|
a.setName(name);
|
|
|
- a.setProvince(department.getProvince());
|
|
|
+ a.setWorkingHours(department.getWorkingHoursType());
|
|
|
}
|
|
|
|
|
|
|
|
|
public List<AdminPublicDuration> sumDurationsById(List<AdminPublicDuration> adminPublicDurations) {
|
|
|
Map<String, AdminPublicDuration> durationMap = new HashMap<>();
|
|
|
-
|
|
|
for (AdminPublicDuration adminPublicDuration : adminPublicDurations) {
|
|
|
String id = adminPublicDuration.getId();
|
|
|
String name = adminPublicDuration.getName();
|
|
|
double duration = adminPublicDuration.getDuration();
|
|
|
if (durationMap.containsKey(id)) {
|
|
|
AdminPublicDuration summary = durationMap.get(id);
|
|
|
+ summary.setWorkingHours(adminPublicDuration.getWorkingHours());
|
|
|
BigDecimal countDuration = BigDecimal.valueOf(summary.getDuration()).add(BigDecimal.valueOf(duration));
|
|
|
summary.setDuration(countDuration.doubleValue());
|
|
|
summary.setName(name);
|
|
|
summary.setCountNumber(summary.getCountNumber()+1);
|
|
|
- if (summary.getProvince()==11){
|
|
|
- summary.setConversion(7.5);
|
|
|
- } else if (summary.getProvince()==21){
|
|
|
+ if (summary.getWorkingHours()==null){
|
|
|
+ throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
|
|
|
+ }
|
|
|
+ if (summary.getWorkingHours()==2){
|
|
|
summary.setConversion(7.0);
|
|
|
+ } else{
|
|
|
+ summary.setConversion(7.5);
|
|
|
}
|
|
|
if (summary.getConversion()!=null){
|
|
|
- BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(7.5), 2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(summary.getConversion()), 2, RoundingMode.HALF_UP);
|
|
|
summary.setDays(divide.doubleValue());
|
|
|
- System.out.println(name+":"+summary.getDuration()+"/"+summary.getCountNumber()+"="+divide);
|
|
|
+ System.out.println(name+":"+summary.getDuration()+"/"+summary.getConversion()+"="+divide);
|
|
|
}
|
|
|
+
|
|
|
} else {
|
|
|
AdminPublicDuration e = new AdminPublicDuration(id, name, duration);
|
|
|
- BigDecimal divide = BigDecimal.valueOf(duration).divide(BigDecimal.valueOf(7.5), 2, RoundingMode.HALF_UP);
|
|
|
- e.setDays(divide.doubleValue());
|
|
|
+ e.setWorkingHours(adminPublicDuration.getWorkingHours());
|
|
|
+ if (e.getWorkingHours()==null){
|
|
|
+ throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
|
|
|
+ }
|
|
|
+ if (e.getWorkingHours()==2){
|
|
|
+ e.setConversion(7.0);
|
|
|
+ } else{
|
|
|
+ e.setConversion(7.5);
|
|
|
+ }
|
|
|
+ if (e.getConversion()!=null){
|
|
|
+ BigDecimal divide = BigDecimal.valueOf(e.getDuration()).divide(BigDecimal.valueOf(e.getConversion()), 2, RoundingMode.HALF_UP);
|
|
|
+ e.setDays(divide.doubleValue());
|
|
|
+ System.out.println(name+":"+e.getDuration()+"/"+e.getConversion()+"="+divide);
|
|
|
+ }
|
|
|
durationMap.put(id, e);
|
|
|
}
|
|
|
}
|