自动化立体仓库 - WMS系统
pang.jiabao
4 天以前 10e6a9a8adad2226f13a4e4704ca5b2ad5b9ef9a
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -30,10 +31,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
@@ -123,6 +126,102 @@
    @Resource
    private RcsService rcsService;
    @Override
    @Transactional
    public R emptyBoxOutbound(int count, Long userId) {
        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().setSqlSelect("TOP " + count + " *").eq("loc_sts", "D").eq("frozen", 0).orderBy("lev1").orderBy("bay1").orderBy("row1"));
        if (locMastList.size() < count) {
            return R.parse("空料箱数量不足(或冻结),剩余数量:" + locMastList.size());
        }
        for (LocMast locMast : locMastList) {
            // 获取工作号
            int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
            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("101"); // 源站
            wrkMast.setStaNo("103"); // 目标站
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceLocNo(locMast.getLocNo()); // 源库位
            wrkMast.setBarcode(locMast.getBarcode());
            wrkMast.setFullPlt("N"); // 满板:Y
            wrkMast.setPicking("N"); // 拣料
            wrkMast.setExitMk("N"); // 退出
            wrkMast.setEmptyMk("Y"); // 空板
            wrkMast.setLinkMis("N");
            wrkMast.setAppeUser(userId);
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiTime(now);
            wrkMastService.insert(wrkMast);
            locMast.setLocSts("R");
            locMast.setModiUser(userId);
            locMast.setModiTime(now);
            if (!locMastService.updateById(locMast)) {
                throw new CoolException("更新库位状态失败");
            }
        }
        return R.ok("出库成功");
    }
    @Value("${wcs-slave.url}")
    private String WCS_URL;
    @Override
    public R inboundStart(int type) {
//        BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 103));
//        if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")) {
//            return R.parse("站点103不是自动/有物状态");
//        }
        Map<String,Object> params = new HashMap<>();
        params.put("siteId",103);
        int wrkNo = type == 1 ? 9998 : 9997;
        params.put("workNo",wrkNo);
        params.put("staNo", 104);
        params.put("pakMk","Y");
        String response;
        boolean success = false;
        String message = "";
        try {
            HashMap<String, Object> headers = new HashMap<>();
            headers.put("token","1");
            response = new HttpHandler.Builder()
                    .setUri(WCS_URL)
                    .setPath("/site/detl/update")
//                    .setHeaders(headers)
                    .setParams(params)
                    .build()
                    .doPost();
            if (Cools.isEmpty(response)) {
                log.error("入库启动调用wcs给输送线下命令失败,返回值为空");
            } else {
                JSONObject jsonObject = JSONObject.parseObject(response);
                if(jsonObject.getInteger("code").equals(200)) {
                    success = true;
                    log.info("入库启动调用wcs给输送线下命成功,wrkNo:{}",wrkNo);
                } else {
                    message = String.valueOf(jsonObject.getString("msg"));
                    log.error("入库启动调用wcs给输送线下命令失败:{}",message);
                }
            }
        } catch (IOException e) {
            log.error("入库启动调用wcs给输送线下命令异常:{}",e.getMessage());
            message = e.getMessage();
            e.printStackTrace();
        }
        return success ? R.ok("下发成功") : R.parse(message);
    }
    @Override
    @Transactional
    public R djReturn(String djNo) {
@@ -140,7 +239,7 @@
            TransTask transTask = JSONObject.parseObject(task.getMemo(), TransTask.class);
            transTask.setTaskno(task.getTaskNo());
            transTask.setCurStationId(sourceStaNo);
            transTask.setCurStationId(task.getSourceStaNo());
            transTask.setNextStationId(task.getStaNo());
            if(transTask.getTransType().equals("06")) {
                transTask.setTransType("01");
@@ -156,7 +255,7 @@
            // 下发给RCS
            RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
            // 模板名
            rcsTaskSubmit.setTaskType("CS");
            rcsTaskSubmit.setTaskType("DJ2");
            rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno());
            rcsTaskSubmit.setInitPriority(10);  //默认10
            List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();