|
@@ -6,11 +6,11 @@ import com.jjt.biz.vo.*;
|
|
|
import com.jjt.calc.domain.TwinCalcDayYhj;
|
|
|
import com.jjt.calc.domain.TwinCalcHourYhj;
|
|
|
import com.jjt.calc.service.ITwinCalcDayYhjService;
|
|
|
+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.rz.domain.TwinCalcHourRz;
|
|
|
-import com.jjt.rz.domain.TwinDeviceTypeData;
|
|
|
import com.jjt.rz.service.ITwinCalcHourRzService;
|
|
|
import com.jjt.rz.service.ITwinDeviceRzService;
|
|
|
import com.jjt.rz.service.ITwinDeviceTypeService;
|
|
@@ -95,7 +95,7 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
// }
|
|
|
|
|
|
List<TwinCalcHourYhj> calcList = redisCache.getCacheObject(CacheConstants.YHJ_TODAY);
|
|
|
- Map<Long, Map<String, Integer>> sumByDeviceAndTeam = calcList.stream()
|
|
|
+ Map<Integer, Map<String, Integer>> sumByDeviceAndTeam = calcList.stream()
|
|
|
.collect(Collectors.groupingBy(
|
|
|
TwinCalcHourYhj::getDeviceId,
|
|
|
Collectors.groupingBy(
|
|
@@ -111,7 +111,7 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
lengthB = 0;
|
|
|
}
|
|
|
Integer length = lengthA + lengthB;
|
|
|
- YrProdEfficiencyVO vo = arr[deviceId.intValue()];
|
|
|
+ YrProdEfficiencyVO vo = arr[deviceId];
|
|
|
if (length > 0) {
|
|
|
openTimes.incrementAndGet();
|
|
|
} else {
|
|
@@ -284,6 +284,9 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Resource
|
|
|
+ private ITwinCalcHourYhjService yhjService;
|
|
|
+
|
|
|
/**
|
|
|
* 工艺对比
|
|
|
*
|
|
@@ -291,122 +294,173 @@ public class ApiYrServiceImpl implements IApiYrService {
|
|
|
* @return 结果集
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<CompareVO> compare(List<YrCompareBackReq> reqs) {
|
|
|
+ public List<CompareVO> compare(List<YrCompareBackReq> reqs, boolean flag) {
|
|
|
List<CompareVO> result = new ArrayList<>();
|
|
|
- List<TwinDeviceTypeData> all = typeService.selectTwinDeviceTypeDataAll();
|
|
|
- Map<Long, TwinDeviceTypeData> dataMap = all.stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- TwinDeviceTypeData::getDataId,
|
|
|
- item -> item,
|
|
|
- (existing, replacement) -> existing
|
|
|
- ));
|
|
|
for (YrCompareBackReq req : reqs) {
|
|
|
- CompareVO vo = new CompareVO();
|
|
|
- vo.setLine(req.getLine());
|
|
|
- vo.setStart(req.getStart());
|
|
|
- vo.setEnd(req.getEnd());
|
|
|
- vo.setYh(10);
|
|
|
- CompareVO.Qz qz = vo.getQz();
|
|
|
- CompareVO.Hz hz = vo.getHz();
|
|
|
- LocalDateTime ldt = req.getEnd().minusHours(1);
|
|
|
- Date date = Date.from(ldt.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
|
|
|
- TwinCalcHourRz search = new TwinCalcHourRz();
|
|
|
- search.setDataDate(date);
|
|
|
- search.setHour(ldt.getHour());
|
|
|
- search.setLine(req.getLine());
|
|
|
- List<TwinCalcHourRz> list = hourRzService.selectTwinCalcHourRzList(search);
|
|
|
- list.forEach(item -> {
|
|
|
- Map<String, Object> map = JSON.parseObject(item.getData(), Map.class);
|
|
|
- map.put("device", item.getDeviceName());
|
|
|
- map.put("online", item.getOnline());
|
|
|
-
|
|
|
- if (item.getWsName().equals("Forward")) {
|
|
|
- //前整
|
|
|
- switch (item.getTypeId()) {
|
|
|
- case 2:
|
|
|
- //四节定型机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- qz.setDx(qz.getDx() + 1);
|
|
|
- }
|
|
|
- qz.addDxPara(map);
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- //双棍烫光机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- qz.setTg(qz.getTg() + 1);
|
|
|
- }
|
|
|
- qz.addTgPara(map);
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- //高梳机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- qz.setGs(qz.getGs() + 1);
|
|
|
- }
|
|
|
- qz.addGsPara(map);
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- //双棍刷毛
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- qz.setSm(qz.getSm() + 1);
|
|
|
- }
|
|
|
- qz.addSmPara(map);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- } else if (item.getWsName().equals("Back")) {
|
|
|
- //后整
|
|
|
- switch (item.getTypeId()) {
|
|
|
- case 6:
|
|
|
- //六节定型机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setDx(hz.getDx() + 1);
|
|
|
- }
|
|
|
- hz.addDxPara(map);
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- //双棍烫光机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setTg(hz.getTg() + 1);
|
|
|
- }
|
|
|
- hz.addTgPara(map);
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- //高梳机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setGs(hz.getGs() + 1);
|
|
|
- }
|
|
|
- hz.addGsPara(map);
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- //双棍刷毛
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setSm(hz.getSm() + 1);
|
|
|
- }
|
|
|
- hz.addSmPara(map);
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- //起毛机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setQm(hz.getQm() + 1);
|
|
|
- }
|
|
|
- hz.addQmPara(map);
|
|
|
- break;
|
|
|
- case 9:
|
|
|
- //烫剪机
|
|
|
- if ("Y".equals(item.getOnline())) {
|
|
|
- hz.setTj(hz.getTj() + 1);
|
|
|
- }
|
|
|
- hz.addTjPara(map);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ CompareVO vo = itemProcessor(req, flag);
|
|
|
+ int totalLength = getTotalLength(req);
|
|
|
+ vo.setLength(totalLength);
|
|
|
result.add(vo);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取印花产量数据
|
|
|
+ *
|
|
|
+ * @param req 请求
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ private Integer getTotalLength(YrCompareBackReq req) {
|
|
|
+ //获取印花产量数据
|
|
|
+ TwinCalcHourYhj yhjSearch = new TwinCalcHourYhj();
|
|
|
+ yhjSearch.setDeviceId(req.getLine());
|
|
|
+ Map<String, Object> params = new HashMap<>(16);
|
|
|
+ params.put("sTime", DateUtils.toDate(req.getStart()));
|
|
|
+ params.put("eTime", DateUtils.toDate(req.getEnd()));
|
|
|
+ yhjSearch.setParams(params);
|
|
|
+ List<TwinCalcHourYhj> yhjList = yhjService.selectTwinCalcHourYhjList(yhjSearch);
|
|
|
+ int totalLength = yhjList.stream()
|
|
|
+ .mapToInt(TwinCalcHourYhj::getLength)
|
|
|
+ .sum();
|
|
|
+ return totalLength;
|
|
|
+ }
|
|
|
+
|
|
|
+ private CompareVO itemProcessor(YrCompareBackReq req, boolean flag) {
|
|
|
+ CompareVO vo = new CompareVO();
|
|
|
+ vo.setLine(req.getLine());
|
|
|
+ vo.setStart(req.getStart());
|
|
|
+ vo.setEnd(req.getEnd());
|
|
|
+ vo.setYh(10);
|
|
|
+ CompareVO.Qz qz = vo.getQz();
|
|
|
+ CompareVO.Hz hz = vo.getHz();
|
|
|
+ LocalDateTime ldt = req.getEnd().minusHours(1);
|
|
|
+ Date date = Date.from(ldt.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
|
|
|
+ TwinCalcHourRz search = new TwinCalcHourRz();
|
|
|
+ search.setDataDate(date);
|
|
|
+ search.setHour(ldt.getHour());
|
|
|
+ search.setLine(req.getLine());
|
|
|
+ List<TwinCalcHourRz> list = hourRzService.selectTwinCalcHourRzList(search);
|
|
|
+ list.forEach(item -> {
|
|
|
+ Map<String, Object> map = JSON.parseObject(item.getData(), Map.class);
|
|
|
+ map.put("device", item.getDeviceName());
|
|
|
+ map.put("online", item.getOnline());
|
|
|
+
|
|
|
+ if ("Forward".equals(item.getWsName())) {
|
|
|
+ qzProcessor(qz, item, flag, map);
|
|
|
+ } else if ("Back".equals(item.getWsName())) {
|
|
|
+ hzProcessor(hz, item, flag, map);
|
|
|
+ } else {
|
|
|
+ //留给烘固机
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void qzProcessor(CompareVO.Qz qz, TwinCalcHourRz item, boolean flag, Map<String, Object> map) {
|
|
|
+ //前整
|
|
|
+ switch (item.getTypeId()) {
|
|
|
+ case 2:
|
|
|
+ //四节定型机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ qz.setDx(qz.getDx() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ qz.addDxPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ //双棍烫光机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ qz.setTg(qz.getTg() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ qz.addTgPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ //高梳机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ qz.setGs(qz.getGs() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ qz.addGsPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ //双棍刷毛
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ qz.setSm(qz.getSm() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ qz.addSmPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void hzProcessor(CompareVO.Hz hz, TwinCalcHourRz item, boolean flag, Map<String, Object> map) {
|
|
|
+ //后整
|
|
|
+ switch (item.getTypeId()) {
|
|
|
+ case 6:
|
|
|
+ //六节定型机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setDx(hz.getDx() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addDxPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ //双棍烫光机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setTg(hz.getTg() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addTgPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ //高梳机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setGs(hz.getGs() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addGsPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ //双棍刷毛
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setSm(hz.getSm() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addSmPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ //起毛机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setQm(hz.getQm() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addQmPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 9:
|
|
|
+ //烫剪机
|
|
|
+ if ("Y".equals(item.getOnline())) {
|
|
|
+ hz.setTj(hz.getTj() + 1);
|
|
|
+ }
|
|
|
+ if (flag) {
|
|
|
+ hz.addTjPara(map);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|