自动化立体仓库 - WMS系统
LSH
2023-07-24 ef8488aef9f2b4ddae0a387d161a7e4cfba8f8d2
#徐工汉云上饶江铜自动空板出库
2个文件已添加
180 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/task/BareBoardScheduler.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BareBoardScheduler.java
New file
@@ -0,0 +1,38 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.handler.BareBoardHandler;
import com.zy.asrs.task.handler.WorkMastHandler;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
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;
/**
 * Created by Monkey D. Luffy on 2023.07.24
 * 徐工汉云..............以下.............上饶江铜.............自动补空板
 */
@Component
public class BareBoardScheduler {
    @Autowired
    private BareBoardHandler bareBoardHandler;
    @Autowired
    private ConfigService configService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
        Config config = configService.selectById(10468);
        if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("Y")){
            bareBoardHandler.start();
        }
    }
}
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
New file
@@ -0,0 +1,142 @@
package com.zy.asrs.task.handler;
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.BasCrnp;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.StaDesc;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.StaDescService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.07.24
 * 徐工汉云..............以下.............上饶江铜.............自动补空板
 */
@Slf4j
@Service
@Transactional
public class BareBoardHandler extends AbstractHandler<String> {
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private BasCrnpService basCrnpService;
    public ReturnT<String> start() {
        try {
            if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("staNo", 213)))){
                return null;
            }
            // 获取工作号
            int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
            ArrayList<Integer> crns =new ArrayList<>();
            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
            for (BasCrnp basCrnp : basCrnps){
                crns.add(basCrnp.getCrnNo());
            }
            crns.add(1);
            crns.add(2);
            crns.add(3);
            crns.add(4);
            crns.add(5);
            crns.add(6);
            boolean sign = true;
            for (Integer crnNo : crns){
                sign = true;
                // 获取库位
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
                if (Cools.isEmpty(locMast)) {
//                    throw new CoolException("库中无空板!!!");
                    sign=false;
                }
                if (sign && !locMast.getLocSts().equals("D")){
//                    throw new CoolException("所选库位存在状态不为D的库位,库位号:"+locMast.getLocNo()+" 、当前状态:"+locMast.getLocSts()+"-"+locMast.getLocSts$());
                    sign=false;
                }
                if (sign){
                    // 获取源站
                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                            .eq("type_no", 110)
                            .eq("stn_no", 213)
                            .eq("crn_no", locMast.getCrnNo());
                    StaDesc staDesc = staDescService.selectOne(wrapper);
                    Integer sourceStaNo = staDesc.getCrnStn();
                    if (!Cools.isEmpty(sourceStaNo)) {
//                    throw new CoolException("检索源站失败");
                        sign = false;
                    }
                    if (sign){
                        Date now = new Date();
                        // 保存工作档
                        WrkMast wrkMast = new WrkMast();
                        wrkMast.setWrkNo(workNo);
                        wrkMast.setIoTime(now);
                        wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
                        wrkMast.setIoType(110); // 入出库状态: 110.空板出库
                        wrkMast.setIoPri(10D);
                        wrkMast.setSourceStaNo(sourceStaNo); // 源站
                        wrkMast.setStaNo(213); // 目标站
                        wrkMast.setCrnNo(locMast.getCrnNo());
                        wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
                        wrkMast.setFullPlt("N"); // 满板:Y
                        wrkMast.setPicking("N"); // 拣料
                        wrkMast.setExitMk("N"); // 退出
                        wrkMast.setEmptyMk("Y"); // 空板
                        wrkMast.setLinkMis("N");
                        wrkMast.setAppeUser(9999L);
                        wrkMast.setAppeTime(now);
                        wrkMast.setModiUser(9999L);
                        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(9999L);
                            locMast.setModiTime(now);
                            if (!locMastService.updateById(locMast)) {
                                throw new CoolException("更新库位状态失败");
                            }else {
                                return SUCCESS;
                            }
                        }
                    }
                }
            }
            if (!sign){
                log.error("未查到可出库的空板!!!");
                return null;
            }
        }catch (Exception e){
            log.error("异常!!!"+e);
            return null;
        }
        return SUCCESS;
    }
}