自动化立体仓库 - WMS系统
野心家
2024-11-08 f64082f012503105373eb4ca36a2ecfd2ad8415e
自动出空板到入库口
7个文件已修改
1个文件已添加
170 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/LocMastController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/EmptyOutWing.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/license.lic 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -67,6 +67,7 @@
        excludeTrash(param);
        EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
        convert(param, wrapper);
        wrapper.orderBy("modi_time",true);
        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
        return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper));
    }
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -137,7 +137,7 @@
    @TableField("exit_mk")
    private String exitMk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value= "空板消除标记")
    @TableField("plt_type")
    private Integer pltType;
src/main/java/com/zy/asrs/task/EmptyOutWing.java
New file
@@ -0,0 +1,130 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.StaDesc;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component
public class EmptyOutWing {
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private CommonService commonService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute() {
        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110));
        if (count > 0) {
            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("wrk_sts", 7));
            if (Cools.isEmpty(wrkMast)) {
                return;
            }
            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("wrk_sts", 2).eq("full_plt", "N"));
            if (Cools.isEmpty(wrkMast1)) {
                return;
            }
            wrkMast1.setFullPlt("Y");
            wrkMastService.updateById(wrkMast1);
            wrkMast.setWrkSts(14L);
            wrkMastService.updateById(wrkMast);
        } else {
            List<LocMast> locMastss =locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").orderBy("bay1"));
            if (Cools.isEmpty(locMastss)) {
                return;
            }
            for (LocMast locMasta : locMastss) {
                // 获取工作号
                int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
                // 获取库位
                LocMast locMast = locMastService.selectById(locMasta.getLocNo());
                if (Cools.isEmpty(locMast)) {
                    throw new CoolException(locMasta.getLocNo()+"库位不存在");
                }
                if (!locMast.getLocSts().equals("D")){
                    throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
                }
                boolean res1 = true;
                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                        .eq("lev1", locMast.getLev1())
                        .orderBy("bay1",res1));
                for (LocMast locMast1 : locMasts) {
                    if (locMast1.getLocNo().equals(locMast.getLocNo())) {
                        break;
                    }
                    if (locMast1.getLocSts().equals("D") || locMast1.getLocSts().equals("F")) {
                        throw new CoolException(locMasta.getLocNo()+"库位堵塞,禁止出库");
                    }
                }
                // 获取源站
                Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                        .eq("type_no", 110)
                        .eq("stn_no", 100)
                        .eq("crn_no", locMast.getCrnNo());
                StaDesc staDesc = staDescService.selectOne(wrapper);
                Integer sourceStaNo = staDesc.getCrnStn();
                if (Cools.isEmpty(sourceStaNo)) {
                    throw new CoolException("检索源站失败");
                }
                Date now = new Date();
                // 保存工作档
                WrkMast wrkMast = new WrkMast();
                wrkMast.setWrkNo(workNo);
                wrkMast.setIoTime(now);
                wrkMast.setWrkSts(0L); // 工作状态:0.待发送
                wrkMast.setIoType(110); // 入出库状态: 110.空板出库
                wrkMast.setIoPri(10D);
                wrkMast.setSourceStaNo(sourceStaNo); // 源站
                wrkMast.setStaNo(100); // 目标站
                wrkMast.setCrnNo(locMast.getCrnNo());
                wrkMast.setSourceLocNo(locMasta.getLocNo()); // 源库位
                wrkMast.setFullPlt("N"); // 满板:Y
                wrkMast.setPicking("N"); // 拣料
                wrkMast.setExitMk("N"); // 退出
                wrkMast.setEmptyMk("Y"); // 空板
                wrkMast.setLinkMis("N");
                wrkMast.setAppeUser(9998L);
                wrkMast.setAppeTime(now);
                wrkMast.setModiUser(9998L);
                wrkMast.setModiTime(now);
                boolean res = wrkMastService.insert(wrkMast);
                if (!res) {
                    throw new CoolException("保存工作档失败");
                }
                // 更新库位状态 D.空板 -> R.出库预约
                if (locMast.getLocSts().equals("D")){
                    locMast.setLocSts("R");
                    locMast.setModiUser(9998L);
                    locMast.setModiTime(now);
                    if (!locMastService.updateById(locMast)) {
                        throw new CoolException("更新库位状态失败");
                    }
                    break;
                }
            }
        }
    }
}
src/main/java/com/zy/common/service/CommonService.java
@@ -475,7 +475,7 @@
                    if (Cools.isEmpty(locMast1)) {
                        continue;
                    }
                    if (locMast1.getLev1() != lev && locMast1.getLev1() !=2) {
                    if (locMast1.getLev1() != lev && locMast1.getLev1() !=3) {
                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("lev1", locMast1.getLev1())
                                .orderBy("bay1",false));
@@ -501,11 +501,25 @@
                        if (locMast2.getLocSts().equals("O") ) {
                            if (locMast == null){
                                locMast = locMast2;
                            }
                            }else if (locMast2.getLocSts().equals("F")){
                                locMast = null;
                            }
                        }
                    }
                if(Cools.isEmpty(locMast)){
                    List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                            .eq("lev1", 2)
                            .orderBy("bay1",false));
                    for (LocMast locMast2 : locMasts) {
                        if (locMast2.getLocSts().equals("O") ) {
                            if (locMast == null){
                                locMast = locMast2;
                            }
                        }else if (locMast2.getLocSts().equals("F")){
                            locMast = null;
                        }
                    }
                }
            }else {
                for (int i = 1; i<=2;i++){
src/main/java/com/zy/common/web/WcsController.java
@@ -76,7 +76,7 @@
        if (param.getFromPort().equals("100")) {
            //有空板出库时禁止入库
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100));
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100).notIn("wrk_sts",7));
            if(wrkCount > 0){
                return Re.error("有空板出库到100站时时禁止入库");
            }
@@ -216,6 +216,7 @@
        wrkMast.setLinkMis("Y");
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型
        wrkMast.setMk("N");//是否完成上报wcs
        wrkMast.setFullPlt("N");//出库空板消除标记
        // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
@@ -321,8 +322,12 @@
    @ResponseBody
    public Re status(@RequestBody StatusParam statusParam) {
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", statusParam.getTaskId()));
        if(Cools.isEmpty(wrkMast)){
        if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()!=8){
            return Re.error("没有找到:"+statusParam.getTaskId()+"这条任务");
        }else if(Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8){
            return Re.ok();
        }else if(!Cools.isEmpty(wrkMast)&&statusParam.getTaskStatus()==8&&wrkMast.getIoType()==110){
            return Re.ok();
        }
        /**
         * 任务状态
@@ -341,13 +346,14 @@
            wrkMast.setWrkSts(3L);//3.取货完成
        }else if (statusParam.getTaskStatus()==3){
            wrkMast.setWrkSts(6L);//6.任务中断
        } else if (statusParam.getTaskStatus()==4){
            wrkMast.setWrkSts(7L);//6.放货完成
        }if (statusParam.getTaskStatus()==8){
        } else if (statusParam.getTaskStatus()==4 || statusParam.getTaskStatus()==8){
//            wrkMast.setWrkSts(7L);//6.放货完成
            if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10){
                wrkMast.setWrkSts(4L);//4.入库完成
            }else if (wrkMast.getIoType()==101 || wrkMast.getIoType() == 110){
            }else if (wrkMast.getIoType()==101){
                wrkMast.setWrkSts(14L);//14.已出库未确认
            } else if (wrkMast.getIoType()==110) {
                wrkMast.setWrkSts(7L);
            }
        }
        wrkMastService.updateById(wrkMast);
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 8085
  servlet:
    context-path: /@pom.build.finalName@
src/main/resources/license.lic
Binary files differ
src/main/resources/mapper/LocDetlMapper.xml
@@ -123,6 +123,7 @@
            and b.loc_sts = 'F'
            <include refid="stockOutCondition"></include>
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
            order by appe_time
    </select>
    <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">