| | |
| | | package com.dy.pmsOther.screen; |
| | | |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.json.JSONArray; |
| | | import cn.hutool.json.JSONObject; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.dy.common.springUtil.SpringContextUtil; |
| | | import com.dy.pmsGlobal.daoOth.OthStatisticWorkloadMapper; |
| | | import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; |
| | | import com.dy.pmsGlobal.daoPr.PrOrderItemMapper; |
| | | import com.dy.pmsGlobal.daoPr.PrOrderMapper; |
| | | import com.dy.pmsGlobal.daoSta.*; |
| | | import com.dy.pmsGlobal.pojoPr.PrOrder; |
| | | import com.dy.pmsGlobal.pojoPr.PrOrderItem; |
| | | import com.dy.pmsGlobal.pojoSta.*; |
| | | import com.dy.pmsGlobal.util.UserUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.dubbo.common.utils.PojoUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | |
| | | private StaDeviceProductionLogMapper deviceProductionLogDao; |
| | | private StaRepairInfoMapper repairInfoDao; |
| | | private PrAssemblyPlanMapper assemblyPlanDao; |
| | | private StaAssemblyWorkLastMapper assemblyWorkLastDao; |
| | | |
| | | private OthStatisticWorkloadMapper workloadDao; |
| | | private PrOrderMapper orderDao; |
| | | |
| | | @Autowired |
| | | public void setOrderDao(PrOrderMapper orderDao) { |
| | | this.orderDao = orderDao; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) { |
| | |
| | | } |
| | | |
| | | @Autowired |
| | | public void setAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao) { |
| | | this.assemblyWorkLastDao = assemblyWorkLastDao; |
| | | } |
| | | |
| | | @Autowired |
| | | public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) { |
| | | this.repairInfoDao = repairInfoDao; |
| | | } |
| | |
| | | public void setWorkloadDao(OthStatisticWorkloadMapper workloadDao) { |
| | | this.workloadDao = workloadDao; |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> getDeviceInfo(String deviceNo) { |
| | | if (StringUtils.isBlank(deviceNo)) { |
| | |
| | | |
| | | public List<JSONObject> queryPlanList() { |
| | | List<JSONObject> list = assemblyPlanDao.queryPlanList(); |
| | | Map<String, JSONObject> map = new ConcurrentHashMap<>(); // 使用并发安全的Map |
| | | /*Map<String, JSONObject> map = new ConcurrentHashMap<>(); // 使用并发安全的Map |
| | | for (JSONObject item : list) { |
| | | String planId = String.valueOf(item.getObj("planId")); |
| | | JSONObject innerObject = new JSONObject() |
| | |
| | | map.put(planId, outObject); |
| | | } |
| | | } |
| | | return map.values().stream().collect(Collectors.toList()); |
| | | return map.values().stream().collect(Collectors.toList());*/ |
| | | return list; |
| | | } |
| | | public List<JSONObject> queryWorkList() { |
| | | List<JSONObject> list = assemblyWorkLastDao.queryWorkList(); |
| | | return list; |
| | | } |
| | | |
| | | public void test() { |
| | | |
| | | //OthStatisticWorkloadMapper workloadMapper = SpringContextUtil.getBean(OthStatisticWorkloadMapper.class); |
| | | //找到最大一条日期记录 |
| | | Date maxDate = workloadDao.selectMaxDate(); |
| | | //往后循环天数汇总 |
| | | if (maxDate != null) { |
| | | //循环统计 |
| | | LocalDate firstDay = maxDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| | | LocalDate today = LocalDate.now(); |
| | | LocalDate nextDate = firstDay.plusDays(1); |
| | | //today 要统计 firstday不统计 |
| | | long daysBetween = ChronoUnit.DAYS.between(firstDay, today); |
| | | if (daysBetween > 30) { |
| | | daysBetween = 30; |
| | | nextDate = firstDay.plusDays(daysBetween); |
| | | } |
| | | for (int i = 1; i <= daysBetween; i++) { |
| | | Date startDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | Date endDt = Date.from(LocalDateTime.of(nextDate, LocalTime.of(23, 59, 59)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | workloadDao.insertBatch(startDt, endDt); |
| | | nextDate = firstDay.plusDays(i); |
| | | public List<JSONObject> queryOrderList() { |
| | | List<JSONObject> list = assemblyPlanDao.queryPlanList(); |
| | | /* Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(); |
| | | List<PrOrder> orderList = orderDao.selectAll(params); |
| | | for (PrOrder prOrder : orderList) { |
| | | changeRate(prOrder); |
| | | }*/ |
| | | return null; |
| | | } |
| | | private void changeRate(PrOrder prOrder) { |
| | | if (prOrder != null && prOrder.items != null) { |
| | | List<PrOrderItem> items = prOrder.items; |
| | | for (int i = 1; i < items.size(); i++) { |
| | | for (int j = i - 1; j >= 0; j--) { |
| | | //拿着i依次跟上一个比较,如果产品相同,则上一个记录complete_number - number 如果 > 0 分给i ,如果 < 0 则将 complete_number 置为0 |
| | | if (items.get(j).getProId().intValue() == items.get(i).getProId().intValue()) { |
| | | int remainNumber = items.get(j).getCompleteNumber() - items.get(j).getNumber(); |
| | | if (remainNumber > 0) { |
| | | items.get(j).setCompleteNumber(items.get(j).getNumber()); |
| | | items.get(j).setCompleteRate("100.00%"); |
| | | items.get(i).setCompleteNumber(remainNumber); |
| | | BigDecimal remainBig = new BigDecimal(remainNumber * 100); |
| | | BigDecimal iNumberBig = new BigDecimal(items.get(i).getNumber()); |
| | | BigDecimal result = remainBig.divide(iNumberBig, 2, RoundingMode.HALF_UP); |
| | | items.get(i).setCompleteRate(result.toString() + "%"); |
| | | } else { |
| | | items.get(i).setCompleteNumber(0); |
| | | items.get(i).setCompleteRate("0.00%"); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public List<JSONObject> queryTopError() { |
| | | Date startDt = Date.from(LocalDateTime.of(LocalDate.now().minusDays(2000), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | Date endDt = new Date(); |
| | | List<JSONObject> list = deviceProductionLogDao.queryTopError(startDt, endDt); |
| | | return list; |
| | | } |
| | | public List<JSONObject> queryAttendUser() { |
| | | Date startDt = Date.from(LocalDateTime.of(LocalDate.now().minusDays(2000), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | Date endDt = new Date(); |
| | | Date todayDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant()); |
| | | List<JSONObject> list = assemblyWorkLastDao.queryAttendUser(startDt, endDt,todayDt); |
| | | return list; |
| | | } |
| | | } |