Fancy
2025-01-09 abe0f082f328098dbd0964a821b77d0e34179e70
pms-parent/pms-web-other/src/main/java/com/dy/pmsOther/screen/ScreenReportSv.java
@@ -1,18 +1,27 @@
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;
@@ -36,7 +45,16 @@
    private StaDeviceProductionLogMapper deviceProductionLogDao;
    private StaRepairInfoMapper repairInfoDao;
    private PrAssemblyPlanMapper assemblyPlanDao;
    private StaAssemblyWorkLastMapper assemblyWorkLastDao;
    private OthStatisticWorkloadMapper workloadDao;
    private PrOrderMapper orderDao;
    private OthStatisticWorkloadMapper statisticWorkDao;
    @Autowired
    public void setOrderDao(PrOrderMapper orderDao) {
        this.orderDao = orderDao;
    }
    @Autowired
    public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) {
@@ -64,6 +82,11 @@
    }
    @Autowired
    public void setAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao) {
        this.assemblyWorkLastDao = assemblyWorkLastDao;
    }
    @Autowired
    public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) {
        this.repairInfoDao = repairInfoDao;
    }
@@ -71,6 +94,11 @@
    @Autowired
    public void setWorkloadDao(OthStatisticWorkloadMapper workloadDao) {
        this.workloadDao = workloadDao;
    }
    @Autowired
    public void setStatisticWorkDao(OthStatisticWorkloadMapper statisticWorkDao) {
        this.statisticWorkDao = statisticWorkDao;
    }
    public Map<String, Object> getDeviceInfo(String deviceNo) {
@@ -122,7 +150,7 @@
    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()
@@ -141,6 +169,74 @@
                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 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 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);
        if(list.size() == 0){
            JSONObject obj = new JSONObject();
            obj.set("require_attend", "0");
            obj.set("actual_attend", "0");
            return obj;
        }
        return list.get(0);
    }
    public List<JSONObject> queryStatisticWork() {
        Date startDt = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.of(0, 0, 0)).atZone(ZoneId.systemDefault()).toInstant());
        Date endDt = new Date();
        List<JSONObject> list = statisticWorkDao.queryStatisticWork(startDt, endDt);
        return list;
    }
}