|
@@ -1,5 +1,6 @@
|
|
|
package com.qmth.sop.business.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -7,9 +8,13 @@ import com.qmth.sop.business.bean.dto.DingStatisticBySupplierDto;
|
|
|
import com.qmth.sop.business.entity.TBDingAdd;
|
|
|
import com.qmth.sop.business.entity.TBDingStatistic;
|
|
|
import com.qmth.sop.business.entity.TBDingStatisticBySupplier;
|
|
|
+import com.qmth.sop.business.entity.TBUserArchivesSupplier;
|
|
|
import com.qmth.sop.business.mapper.TBDingStatisticBySupplierMapper;
|
|
|
import com.qmth.sop.business.service.SysSupplierService;
|
|
|
+import com.qmth.sop.business.service.SysUserService;
|
|
|
import com.qmth.sop.business.service.TBDingStatisticBySupplierService;
|
|
|
+import com.qmth.sop.business.service.TBUserArchivesSupplierService;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@@ -18,6 +23,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -33,9 +39,15 @@ public class TBDingStatisticBySupplierServiceImpl extends ServiceImpl<TBDingStat
|
|
|
@Resource
|
|
|
SysSupplierService sysSupplierService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TBUserArchivesSupplierService tbUserArchivesSupplierService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ SysUserService sysUserService;
|
|
|
+
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public void buildStatisticBySupplier(List<TBDingStatistic> datasource, List<TBDingAdd> datasourceAdd) {
|
|
|
+ public void buildStatisticBySupplier(List<TBDingStatistic> datasource, List<TBDingAdd> dingAddDatasource) {
|
|
|
List<TBDingStatisticBySupplier> result = new ArrayList<>();
|
|
|
List<Long> serviceIdList = datasource.stream().map(TBDingStatistic::getServiceId).distinct().collect(Collectors.toList());
|
|
|
for (Long serviceId : serviceIdList) {
|
|
@@ -51,6 +63,8 @@ public class TBDingStatisticBySupplierServiceImpl extends ServiceImpl<TBDingStat
|
|
|
int weekends = 0;
|
|
|
int legalHolidays = 0;
|
|
|
BigDecimal workHours = new BigDecimal(0);
|
|
|
+ BigDecimal addDays = new BigDecimal(0);
|
|
|
+ BigDecimal addHours = new BigDecimal(0);
|
|
|
int violationDays = 0;
|
|
|
|
|
|
for (TBDingStatistic tbDingStatistic : tbDingStatisticList) {
|
|
@@ -71,8 +85,24 @@ public class TBDingStatisticBySupplierServiceImpl extends ServiceImpl<TBDingStat
|
|
|
tbDingStatisticBySupplier.setWeekdays(weekdays);
|
|
|
tbDingStatisticBySupplier.setWeekends(weekends);
|
|
|
tbDingStatisticBySupplier.setLegalHolidays(legalHolidays);
|
|
|
+ tbDingStatisticBySupplier.setWorkDays(BigDecimal.valueOf(actualDays));
|
|
|
tbDingStatisticBySupplier.setWorkHours(workHours);
|
|
|
tbDingStatisticBySupplier.setViolationDays(violationDays);
|
|
|
+
|
|
|
+ // 处理工时追加
|
|
|
+ List<Long> userIdList = this.findUserIdListBySupplierId(supplierId);
|
|
|
+ List<TBDingAdd> dingAddList = dingAddDatasource.stream().filter(e -> serviceId.equals(e.getServiceId()) && userIdList.contains(e.getUserId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(dingAddList)) {
|
|
|
+ for (TBDingAdd tbDingAdd : dingAddList) {
|
|
|
+ addDays = addDays.add(tbDingAdd.getAddDays());
|
|
|
+ addHours = addHours.add(tbDingAdd.getAddHours());
|
|
|
+ }
|
|
|
+ tbDingStatisticBySupplier.setAddDays(addDays);
|
|
|
+ tbDingStatisticBySupplier.setAddHours(addHours);
|
|
|
+ tbDingStatisticBySupplier.setWorkDays(tbDingStatisticBySupplier.getWorkDays().add(addDays));
|
|
|
+ tbDingStatisticBySupplier.setWorkHours(workHours.add(addHours));
|
|
|
+ }
|
|
|
result.add(tbDingStatisticBySupplier);
|
|
|
}
|
|
|
}
|
|
@@ -90,4 +120,17 @@ public class TBDingStatisticBySupplierServiceImpl extends ServiceImpl<TBDingStat
|
|
|
public List<DingStatisticBySupplierDto> findStatisticBySupplierList(Long serviceId) {
|
|
|
return this.baseMapper.findStatisticBySupplierList(serviceId);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据供应商查询该供应商所有的用户id
|
|
|
+ *
|
|
|
+ * @param supplierId 供应商id
|
|
|
+ * @return 用户id集合
|
|
|
+ */
|
|
|
+ private List<Long> findUserIdListBySupplierId(Long supplierId) {
|
|
|
+ List<Long> tbUserArchivesIdList = tbUserArchivesSupplierService.list(
|
|
|
+ new QueryWrapper<TBUserArchivesSupplier>().lambda().eq(TBUserArchivesSupplier::getSupplierId, supplierId)).stream()
|
|
|
+ .map(TBUserArchivesSupplier::getUserArchivesId).distinct().collect(Collectors.toList());
|
|
|
+ return tbUserArchivesIdList.stream().flatMap(e -> Stream.of(sysUserService.findByArchivesId(e).getId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
}
|