|
@@ -9,6 +9,8 @@ import com.jjt.calc.service.ITwinCalcHourYhjService;
|
|
|
import com.jjt.common.constant.CacheConstants;
|
|
|
import com.jjt.common.core.redis.RedisCache;
|
|
|
import com.jjt.common.utils.DateUtils;
|
|
|
+import com.jjt.common.utils.StringUtils;
|
|
|
+import com.jjt.inventory.domain.TwinCalcHourBpOut;
|
|
|
import com.jjt.inventory.service.ITwinCalcHourBpOutService;
|
|
|
import com.jjt.utils.AsyncYhjService;
|
|
|
import com.jjt.utils.IotService;
|
|
@@ -21,6 +23,8 @@ import org.apache.ibatis.session.SqlSessionFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
@@ -29,6 +33,7 @@ import java.util.concurrent.ExecutionException;
|
|
|
import java.util.concurrent.Future;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.TimeoutException;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 印花机1小时统计数据Service业务层处理
|
|
@@ -198,6 +203,10 @@ public class TwinCalcHourYhjServiceImpl implements ITwinCalcHourYhjService {
|
|
|
|
|
|
private List<TwinCalcHourYhj> process(LocalDateTime start, LocalDateTime end) {
|
|
|
List<TwinDeviceYhj> list = yhjService.selectTwinDeviceYhjList(new TwinDeviceYhj());
|
|
|
+ List<TwinCalcHourBpOut> bpOuts = bpOutService.selectTwinCalcHourBpOutListLast();
|
|
|
+ // 按deviceId分组处理白坯投放数据
|
|
|
+ Map<Integer, TwinCalcHourBpOut> bpOutMap = bpOuts.stream()
|
|
|
+ .collect(Collectors.toMap(TwinCalcHourBpOut::getDeviceId, bpOut -> bpOut, (oldValue, newValue) -> newValue));
|
|
|
List<Future<TwinCalcHourYhj>> futureList = new ArrayList<>();
|
|
|
List<TwinCalcHourYhj> calcList = new ArrayList<>();
|
|
|
for (TwinDeviceYhj yhj : list) {
|
|
@@ -210,6 +219,16 @@ public class TwinCalcHourYhjServiceImpl implements ITwinCalcHourYhjService {
|
|
|
try {
|
|
|
TwinCalcHourYhj calcYhj = future.get(10L, TimeUnit.SECONDS);
|
|
|
if (calcYhj.getDeviceId() != null) {
|
|
|
+ TwinCalcHourBpOut out = bpOutMap.get(calcYhj.getDeviceId());
|
|
|
+ Integer mick = 1000;
|
|
|
+ if (StringUtils.isNotEmpty(out.getRemark())) {
|
|
|
+ String[] parts = out.getRemark().split("\\*");
|
|
|
+ if (parts.length > 1) {
|
|
|
+ mick = Integer.parseInt(parts[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal weight = BigDecimal.valueOf(calcYhj.getLength()).divide(BigDecimal.valueOf(mick), 2, RoundingMode.HALF_UP);
|
|
|
+ calcYhj.setWeight(weight);
|
|
|
calcList.add(calcYhj);
|
|
|
}
|
|
|
} catch (TimeoutException e) {
|
|
@@ -244,8 +263,8 @@ public class TwinCalcHourYhjServiceImpl implements ITwinCalcHourYhjService {
|
|
|
|
|
|
LocalDateTime stop = Tools.currWholeTime();
|
|
|
while (!end.isAfter(stop)) {
|
|
|
- calc(start, end);
|
|
|
bpOutService.calc(start, end);
|
|
|
+ calc(start, end);
|
|
|
log.info("补录数据===========start:{},end:{},stop:{}", start, end, stop);
|
|
|
if (end.getHour() == 7) {
|
|
|
//跨天,统计前一天的总数据
|