自动化立体仓库 - WMS系统
电视机入库出库显示耗时、托数功能修改:
1.入库耗时改成当前订单第一托入库任务创建时间到后续入库的创建时间相减转换成分钟
2.出库耗时改成当前订订单任务创建时间减去到达出库口的耗时时间
3.入库托数改成当前入库订单号累计入库数量
6个文件已修改
112 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -37,6 +37,7 @@
    private static final boolean auth = true;
    private static final String  sign_arm_order = "|s|LABEL_";
    private static final String  sign_arm_sku = "|sku|LABEL_";
    private static final long MILLIS_PER_MINUTE = 60L * 1000L;
    public static final ArrayList<String> APP_KEY_LIST = new ArrayList<String>() {{
        add("ea1f0459efc02a79f046f982767939ae");
    }};
@@ -981,10 +982,7 @@
        //该订单累计入出库件数
        Integer ioType = wrkMast.getIoType();
        if (ioType != null && ioType < 100) {
            Date endTime = new Date();
            Date startTime = resolveBusinessDayStart(endTime);
            Long inboundCount = wrkMastLogService.countInboundHistoryBySourceStaNo(startTime, endTime, resolveInboundStationNo(wrkMast));
            supp = String.valueOf(inboundCount);
            supp = String.valueOf(resolveInboundSupp(wrkMast));
        }else {
            List<WrkMast> orderNo = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", wrkMast.getUserNo()));
            List<WrkMastLog> userNo = wrkMastLogService.selectList(new EntityWrapper<WrkMastLog>().eq("user_no", wrkMast.getUserNo()).eq("wrk_sts",15L));
@@ -1005,35 +1003,46 @@
        return R.ok().add(map);
    }
    private Long resolveCostTime(WrkMast wrkMast) {
    Long resolveCostTime(WrkMast wrkMast) {
        return resolveCostTime(wrkMast, new Date());
    }
    Long resolveCostTime(WrkMast wrkMast, Date now) {
        if (wrkMast == null || wrkMast.getIoType() == null) {
            return 0L;
        }
        Date endTime = new Date();
        Date startTime = resolveBusinessDayStart(endTime);
        Integer wrkSts = wrkMast.getIoType() < 100 ? 5 : 15;
        return wrkMastLogService.sumCostTimeByWrkSts(startTime, endTime, wrkSts);
        if (wrkMast.getIoType() < 100) {
            if (Cools.isEmpty(wrkMast.getTrainNo())) {
                return 0L;
            }
            return minutesBetween(wrkMastService.firstInboundCreateTimeByTrainNo(wrkMast.getTrainNo()), resolveTaskCreateTime(wrkMast));
        }
        return minutesBetween(resolveTaskCreateTime(wrkMast), now);
    }
    private Integer resolveInboundStationNo(WrkMast wrkMast) {
    int resolveInboundSupp(WrkMast wrkMast) {
        if (wrkMast == null || wrkMast.getIoType() == null || wrkMast.getIoType() >= 100 || Cools.isEmpty(wrkMast.getTrainNo())) {
            return 0;
        }
        return wrkMastService.finishedInboundPalletCountByTrainNo(wrkMast.getTrainNo());
    }
    private Date resolveTaskCreateTime(WrkMast wrkMast) {
        if (wrkMast == null) {
            return null;
        }
        return wrkMast.getSourceStaNo() == null ? wrkMast.getStaNo() : wrkMast.getSourceStaNo();
        return wrkMast.getAppeTime() == null ? wrkMast.getIoTime() : wrkMast.getAppeTime();
    }
    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);
    private Long minutesBetween(Date startTime, Date endTime) {
        if (startTime == null || endTime == null) {
            return 0L;
        }
        return calendar.getTime();
        long diff = endTime.getTime() - startTime.getTime();
        if (diff <= 0) {
            return 0L;
        }
        return diff / MILLIS_PER_MINUTE;
    }
}
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
@@ -36,6 +36,12 @@
    @Select("SELECT plt_type FROM asr_wrk_mast_log WHERE io_type = 101 AND plt_type IS NOT NULL AND plt_type > 0 AND user_no = #{userNo} AND ((#{batchSeq} IS NULL AND batch_seq IS NULL) OR batch_seq = #{batchSeq})")
    List<Integer> listOutboundPltTypesByUserNo(@Param("userNo") String userNo, @Param("batchSeq") String batchSeq);
    @Select("SELECT MIN(ISNULL(appe_time, io_time)) FROM asr_wrk_mast_log WHERE train_no = #{trainNo} AND io_type < 100")
    Date selectFirstInboundCreateTimeByTrainNo(@Param("trainNo") String trainNo);
    @Select("SELECT wrk_no FROM asr_wrk_mast_log WHERE train_no = #{trainNo} AND io_type < 100 AND wrk_sts = 5")
    List<Integer> listFinishedInboundWrkNosByTrainNo(@Param("trainNo") String trainNo);
    @Select("SELECT ISNULL(SUM(CAST(ISNULL(cost_time, 0) AS BIGINT)), 0) " +
            "FROM asr_wrk_mast_log " +
            "WHERE wrk_sts = #{wrkSts} " +
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Mapper
@@ -39,4 +40,10 @@
    @Select("SELECT plt_type FROM asr_wrk_mast WHERE io_type = 101 AND plt_type IS NOT NULL AND plt_type > 0 AND user_no = #{userNo} AND ((#{batchSeq} IS NULL AND batch_seq IS NULL) OR batch_seq = #{batchSeq})")
    List<Integer> listOutboundPltTypesByUserNo(@Param("userNo") String userNo, @Param("batchSeq") String batchSeq);
    @Select("SELECT MIN(ISNULL(appe_time, io_time)) FROM asr_wrk_mast WHERE train_no = #{trainNo} AND io_type < 100")
    Date selectFirstInboundCreateTimeByTrainNo(@Param("trainNo") String trainNo);
    @Select("SELECT wrk_no FROM asr_wrk_mast WHERE train_no = #{trainNo} AND io_type < 100 AND wrk_sts = 5")
    List<Integer> listFinishedInboundWrkNosByTrainNo(@Param("trainNo") String trainNo);
}
src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -4,6 +4,7 @@
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
import java.util.Date;
import java.util.List;
public interface WrkMastService extends IService<WrkMast> {
@@ -38,4 +39,8 @@
     */
    int outboundSeqMaxContiguousPlt(String userNo, String batchSeq);
    Date firstInboundCreateTimeByTrainNo(String trainNo);
    int finishedInboundPalletCountByTrainNo(String trainNo);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1628,8 +1628,8 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R outOrderBatch(Map<String, List<OutTaskParam>> linesByBatchSeq) {
        int i = 0;
        for (Map.Entry<String, List<OutTaskParam>> entry : linesByBatchSeq.entrySet()) {
            int i = 0;
            for (OutTaskParam outTaskParam : entry.getValue()) {
                if(outTaskParam.getSeq()!=0){
                    i= outTaskParam.getSeq();
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -13,6 +13,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -98,6 +99,33 @@
        return h;
    }
    @Override
    public Date firstInboundCreateTimeByTrainNo(String trainNo) {
        if (Cools.isEmpty(trainNo)) {
            return null;
        }
        Date fromMast = baseMapper.selectFirstInboundCreateTimeByTrainNo(trainNo);
        Date fromLog = wrkMastLogMapper.selectFirstInboundCreateTimeByTrainNo(trainNo);
        if (fromMast == null) {
            return fromLog;
        }
        if (fromLog == null) {
            return fromMast;
        }
        return fromMast.before(fromLog) ? fromMast : fromLog;
    }
    @Override
    public int finishedInboundPalletCountByTrainNo(String trainNo) {
        if (Cools.isEmpty(trainNo)) {
            return 0;
        }
        Set<Integer> wrkNos = new HashSet<>();
        addPositiveWrkNos(baseMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos);
        addPositiveWrkNos(wrkMastLogMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos);
        return wrkNos.size();
    }
    private static void addPositivePlt(List<Integer> list, Set<Integer> target) {
        if (list == null) {
            return;
@@ -108,4 +136,15 @@
            }
        }
    }
    private static void addPositiveWrkNos(List<Integer> list, Set<Integer> target) {
        if (list == null) {
            return;
        }
        for (Integer wrkNo : list) {
            if (wrkNo != null && wrkNo > 0) {
                target.add(wrkNo);
            }
        }
    }
}