|
@@ -18,14 +18,13 @@ import com.jjt.inventory.domain.TwinCalcHourBpOut;
|
|
|
import com.jjt.inventory.service.ITwinCalcHourBpOutService;
|
|
|
import com.jjt.rz.domain.TwinCalcHourRz;
|
|
|
import com.jjt.rz.service.ITwinCalcHourRzService;
|
|
|
-import com.jjt.rz.service.ITwinDeviceRzService;
|
|
|
-import com.jjt.rz.service.ITwinDeviceTypeService;
|
|
|
import com.jjt.rz.vo.CompareVO;
|
|
|
import com.jjt.ws.domain.TwinRzCalcMonth;
|
|
|
import com.jjt.ws.domain.TwinWorkshop;
|
|
|
import com.jjt.ws.domain.TwinWorkshopEnergy;
|
|
|
import com.jjt.ws.service.ITwinRzCalcMonthService;
|
|
|
import com.jjt.ws.service.ITwinWorkshopService;
|
|
|
+import javafx.util.Pair;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -59,17 +58,17 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
@Resource
|
|
|
private ITwinCalcDayYhjService calcDayYhjService;
|
|
|
@Resource
|
|
|
- private ITwinDeviceRzService rzService;
|
|
|
- @Resource
|
|
|
private ITwinCalcHourRzService hourRzService;
|
|
|
@Resource
|
|
|
- private ITwinDeviceTypeService typeService;
|
|
|
+ private ITwinCalcHourRzService rzService;
|
|
|
@Resource
|
|
|
ITwinCalcHourBpOutService bpOutService;
|
|
|
@Resource
|
|
|
private ITwinCalcHourEnergyService energyService;
|
|
|
@Resource
|
|
|
private ITwinWorkshopService wsService;
|
|
|
+ @Resource
|
|
|
+ private ITwinCalcHourYhjService yhjService;
|
|
|
|
|
|
/**
|
|
|
* 获取产线状态
|
|
@@ -98,21 +97,11 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
arr[i] = vo;
|
|
|
}
|
|
|
YrProdEfficiencyVO line0 = new YrProdEfficiencyVO(0);
|
|
|
-// for (int i = 1; i < 9; i++) {
|
|
|
-// YrProdEfficiencyVO vo = arr[i];
|
|
|
-// line0.setEffA(line0.getEffA().add(vo.getEffA()));
|
|
|
-// line0.setEffB(line0.getEffB().add(vo.getEffB()));
|
|
|
-// line0.setTimeA(line0.getTimeA().add(vo.getTimeA()));
|
|
|
-// line0.setTimeB(line0.getTimeB().add(vo.getTimeB()));
|
|
|
-// line0.setLengthA(line0.getLengthA().add(vo.getLengthA()));
|
|
|
-// line0.setLengthB(line0.getLengthB().add(vo.getLengthB()));
|
|
|
-// line0.setWeightA(line0.getWeightA().add(vo.getWeightA()));
|
|
|
-// line0.setWeightB(line0.getWeightB().add(vo.getWeightB()));
|
|
|
-// line0.setWeight(line0.getWeight().add(vo.getWeight()));
|
|
|
-// line0.setLength(line0.getLength().add(vo.getLength()));
|
|
|
-//
|
|
|
-// }
|
|
|
-
|
|
|
+ //处理设备开机数量
|
|
|
+ Map<Integer, Pair<Integer, Integer>> deviceStatus = rzService.curr();
|
|
|
+ AtomicInteger total = new AtomicInteger();
|
|
|
+ AtomicInteger open = new AtomicInteger();
|
|
|
+ //处理印花机运行数据
|
|
|
List<TwinCalcHourYhj> calcList = redisCache.getCacheObject(CacheConstants.YHJ_TODAY);
|
|
|
Map<Integer, Map<String, Integer>> sumByDeviceAndTeam = calcList.stream()
|
|
|
.collect(Collectors.groupingBy(
|
|
@@ -124,6 +113,8 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
));
|
|
|
AtomicInteger openTimes = new AtomicInteger(0);
|
|
|
sumByDeviceAndTeam.forEach((deviceId, teamMap) -> {
|
|
|
+ Pair<Integer, Integer> pair = deviceStatus.get(deviceId);
|
|
|
+
|
|
|
Integer lengthA = teamMap.get("A");
|
|
|
Integer lengthB = teamMap.get("B");
|
|
|
if (lengthB == null) {
|
|
@@ -131,10 +122,21 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
}
|
|
|
Integer length = lengthA + lengthB;
|
|
|
YrProdEfficiencyVO vo = arr[deviceId];
|
|
|
+ if (pair != null) {
|
|
|
+ vo.setTotal(pair.getKey());
|
|
|
+ vo.setOpen(pair.getValue());
|
|
|
+ vo.setRatio(BigDecimal.valueOf(pair.getValue()).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(pair.getKey()), 2, RoundingMode.HALF_UP));
|
|
|
+
|
|
|
+ total.addAndGet(pair.getKey());
|
|
|
+ // 将当前设备的开机数量累加到总开机数量中
|
|
|
+ open.addAndGet(pair.getValue());
|
|
|
+ } else {
|
|
|
+ vo.setTotal(1);
|
|
|
+ vo.setOpen(0);
|
|
|
+ }
|
|
|
if (length > 0) {
|
|
|
openTimes.incrementAndGet();
|
|
|
} else {
|
|
|
- vo.setOpen(0);
|
|
|
vo.setRatio(BigDecimal.ZERO);
|
|
|
vo.setTimeA(BigDecimal.ZERO);
|
|
|
vo.setTimeB(BigDecimal.ZERO);
|
|
@@ -165,7 +167,9 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
|
|
|
line0.setEffA(line0.getEffA().divide(BigDecimal.valueOf(8), 2, RoundingMode.HALF_UP));
|
|
|
line0.setEffB(line0.getEffB().divide(BigDecimal.valueOf(8), 2, RoundingMode.HALF_UP));
|
|
|
-
|
|
|
+ line0.setTotal(total.get());
|
|
|
+ line0.setOpen(open.get());
|
|
|
+ line0.setRatio(BigDecimal.valueOf(open.get()).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(total.get()), 2, RoundingMode.HALF_UP));
|
|
|
list.add(line0);
|
|
|
for (int i = 1; i < 9; i++) {
|
|
|
YrProdEfficiencyVO vo = arr[i];
|
|
@@ -175,26 +179,6 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取生产趋势
|
|
|
- *
|
|
|
- * @return 结果
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<YrProdTradeVO> prodTrade() {
|
|
|
- return mockProd();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取能耗趋势
|
|
|
- *
|
|
|
- * @return 结果
|
|
|
- */
|
|
|
- @Override
|
|
|
- public List<YrEnergyTradeVO> energyTrade() {
|
|
|
- return mockEnergy();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
* 获取能耗趋势
|
|
|
*
|
|
|
* @return 结果
|
|
@@ -246,9 +230,9 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
if (eff.getLine() == 0) {
|
|
|
status.setWeight(eff.getWeight().setScale(0, RoundingMode.HALF_UP));
|
|
|
status.setLength(eff.getLength().setScale(0, RoundingMode.HALF_UP));
|
|
|
- Random random = new Random();
|
|
|
- BigDecimal baiPi = eff.getLength().multiply(BigDecimal.valueOf(0.5 + random.nextDouble())).setScale(0, RoundingMode.HALF_UP);
|
|
|
- status.setBaiPei(baiPi);
|
|
|
+ status.setTotal(eff.getTotal());
|
|
|
+ status.setOpen(eff.getOpen());
|
|
|
+ status.setRatio(eff.getRatio().setScale(2, RoundingMode.HALF_UP));
|
|
|
} else {
|
|
|
if (eff.getLength().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
open++;
|
|
@@ -277,46 +261,19 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
TwinCalcDayYhj yhj = new TwinCalcDayYhj();
|
|
|
yhj.setParams(params);
|
|
|
List<TwinCalcDayYhj> yhjList = calcDayYhjService.selectTwinCalcDayYhjList(yhj);
|
|
|
- calcMonth.setParams(params);
|
|
|
vo.setProdTrade(prodTrade(list, yhjList));
|
|
|
- vo.setEnergyTrade(energyTrade(list));
|
|
|
- redisCache.setCacheObject(CacheConstants.RZ_MOCK, vo);
|
|
|
- }
|
|
|
-
|
|
|
- private List<YrProdTradeVO> mockProd() {
|
|
|
- List<YrProdTradeVO> list = new ArrayList<>();
|
|
|
- LocalDate end = LocalDate.now().minusDays(1);
|
|
|
- LocalDate start = end.minusDays(30);
|
|
|
- do {
|
|
|
- YrProdTradeVO vo = new YrProdTradeVO();
|
|
|
- vo.setDate(start.getDayOfMonth() + "");
|
|
|
- vo.setTips(start.toString());
|
|
|
- vo.mock();
|
|
|
- list.add(vo);
|
|
|
- start = start.plusDays(1);
|
|
|
- } while (!start.isAfter(end));
|
|
|
- return list;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private List<YrEnergyTradeVO> mockEnergy() {
|
|
|
- List<YrEnergyTradeVO> list = new ArrayList<>();
|
|
|
- LocalDate end = LocalDate.now().minusDays(1);
|
|
|
- LocalDate start = end.minusDays(30);
|
|
|
- do {
|
|
|
- YrEnergyTradeVO vo = new YrEnergyTradeVO();
|
|
|
- vo.setDate(start.getDayOfMonth() + "");
|
|
|
- vo.setTips(start.toString());
|
|
|
- vo.mock();
|
|
|
- list.add(vo);
|
|
|
- start = start.plusDays(1);
|
|
|
- } while (!start.isAfter(end));
|
|
|
- return list;
|
|
|
+ List<YrEnergyTradeVO> energyList = energyTrade(list);
|
|
|
+ vo.setEnergyTrade(energyList);
|
|
|
|
|
|
+ List<YrEnergyTradeVO.Line> lines = energyList.get(energyList.size() - 1).getLine();
|
|
|
+ for (int i = 0; i < lines.size(); i++) {
|
|
|
+ if (i < effList.size()) {
|
|
|
+ effList.get(i).setEnergy(lines.get(i).getPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ redisCache.setCacheObject(CacheConstants.RZ_MOCK, vo);
|
|
|
}
|
|
|
|
|
|
- @Resource
|
|
|
- private ITwinCalcHourYhjService yhjService;
|
|
|
|
|
|
/**
|
|
|
* 工艺对比
|