自动化立体仓库 - WMS系统
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -25,7 +25,6 @@
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
 * Created by vincent on 2022/4/8
@@ -50,8 +49,6 @@
    private WaitPakinService waitPakinService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
@@ -1002,147 +999,34 @@
        map.put("supp", supp);
        //耗时
        String costTime = resolveCostTime(wrkMast, wrkDetls);
        map.put("costTime", costTime);
        Long costTime = resolveCostTime(wrkMast);
        map.put("costTime", String.valueOf(costTime));
        return R.ok().add(map);
    }
    private String resolveCostTime(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
    private Long resolveCostTime(WrkMast wrkMast) {
        if (wrkMast == null || wrkMast.getIoType() == null) {
            return "0";
            return 0L;
        }
        Date createTime;
        if (wrkMast.getIoType() < 100) {
            createTime = resolveInboundTaskCreateTime(wrkMast, wrkDetls);
        } else {
            createTime = resolveTaskCreateTime(wrkMast);
        }
        if (createTime == null) {
            return "0";
        }
        long minutes = TimeUnit.MILLISECONDS.toMinutes(System.currentTimeMillis() - createTime.getTime());
        if (minutes < 0L) {
            minutes = 0L;
        }
        return String.valueOf(minutes);
        Date endTime = new Date();
        Date startTime = resolveBusinessDayStart(endTime);
        Integer wrkSts = wrkMast.getIoType() < 100 ? 5 : 15;
        return wrkMastLogService.sumCostTimeByWrkSts(startTime, endTime, wrkSts);
    }
    private Date resolveInboundTaskCreateTime(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
        if (wrkMast == null) {
            return null;
    private Date resolveBusinessDayStart(Date now) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.set(Calendar.HOUR_OF_DAY, 8);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        if (now.before(calendar.getTime())) {
            calendar.add(Calendar.DATE, -1);
        }
        if (!Cools.isEmpty(wrkMast.getUserNo())) {
            Date userNoCreateTime = resolveUserNoCreateTime(wrkMast.getUserNo());
            if (userNoCreateTime != null) {
                return userNoCreateTime;
            }
        }
        String orderNo = resolveOrderNo(wrkMast, wrkDetls);
        if (Cools.isEmpty(orderNo)) {
            return null;
        }
        return resolveOrderCreateTime(orderNo);
    }
    private Date resolveUserNoCreateTime(String userNo) {
        if (Cools.isEmpty(userNo)) {
            return null;
        }
        return minDate(
                minCreateTime(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", userNo))),
                minCreateTime(wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", userNo)))
        );
    }
    private String resolveOrderNo(WrkMast wrkMast, List<WrkDetl> wrkDetls) {
        if (wrkMast != null && !Cools.isEmpty(wrkMast.getUserNo())) {
            return wrkMast.getUserNo();
        }
        if (Cools.isEmpty(wrkDetls)) {
            return null;
        }
        for (WrkDetl wrkDetl : wrkDetls) {
            if (wrkDetl != null && !Cools.isEmpty(wrkDetl.getOrderNo())) {
                return wrkDetl.getOrderNo();
            }
        }
        return null;
    }
    private Date resolveOrderCreateTime(String orderNo) {
        if (Cools.isEmpty(orderNo)) {
            return null;
        }
        Date historyCreateTime = minDate(
                minCreateTime(wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", orderNo))),
                minCreateTime(wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>().eq("order_no", orderNo)))
        );
        Date currentCreateTime = minDate(
                minCreateTime(wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", orderNo))),
                minCreateTime(wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)))
        );
        return minDate(historyCreateTime, currentCreateTime);
    }
    private Date minDate(Date first, Date second) {
        if (first == null) {
            return second;
        }
        if (second == null) {
            return first;
        }
        return first.before(second) ? first : second;
    }
    private Date resolveTaskCreateTime(WrkMast wrkMast) {
        if (wrkMast == null) {
            return null;
        }
        return minDate(minDate(wrkMast.getAppeTime(), wrkMast.getIoTime()), wrkMast.getModiTime());
    }
    private Date minCreateTime(List<?> list) {
        if (Cools.isEmpty(list)) {
            return null;
        }
        Date min = null;
        for (Object item : list) {
            Date createTime = resolveCreateTime(item);
            if (createTime == null) {
                continue;
            }
            if (min == null || createTime.before(min)) {
                min = createTime;
            }
        }
        return min;
    }
    private Date resolveCreateTime(Object item) {
        if (item instanceof WrkMast) {
            WrkMast wrkMast = (WrkMast) item;
            return minDate(minDate(wrkMast.getAppeTime(), wrkMast.getIoTime()), wrkMast.getModiTime());
        }
        if (item instanceof WrkMastLog) {
            WrkMastLog wrkMastLog = (WrkMastLog) item;
            return minDate(minDate(wrkMastLog.getAppeTime(), wrkMastLog.getIoTime()), wrkMastLog.getModiTime());
        }
        if (item instanceof WrkDetl) {
            WrkDetl wrkDetl = (WrkDetl) item;
            return minDate(minDate(wrkDetl.getAppeTime(), wrkDetl.getIoTime()), wrkDetl.getModiTime());
        }
        if (item instanceof WrkDetlLog) {
            WrkDetlLog wrkDetlLog = (WrkDetlLog) item;
            return minDate(minDate(wrkDetlLog.getAppeTime(), wrkDetlLog.getIoTime()), wrkDetlLog.getModiTime());
        }
        return null;
        return calendar.getTime();
    }
}