自动化立体仓库 - WMS系统
74fd6eb7fb0322078f7946f51073f20e90231df1..d9eeceed86c1ce43c73dda00a108595a078a8f3d
8 天以前 lsh
*
d9eece 对比 | 目录
8 天以前 lsh
*
c21062 对比 | 目录
8 天以前 lsh
*
501f26 对比 | 目录
8 天以前 lsh
*
970192 对比 | 目录
8 天以前 lsh
*
4f1220 对比 | 目录
8 天以前 lsh
新增PDA并板操作
07fcae 对比 | 目录
8 天以前 lsh
新增PDA并板操作
ec31df 对比 | 目录
5个文件已修改
3个文件已添加
348 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocMastMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocMastService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WrkMastCrnHandler.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocMastMapper.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/errorTaskOperate.html 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java
New file
@@ -0,0 +1,56 @@
package com.zy.asrs.controller;
import com.core.annotations.ManagerAuth;
import com.core.common.R;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.param.ErrorDeviceParam;
import com.zy.asrs.service.LocMastService;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("error/device")
public class BasErrorDeviceController extends BaseController {
    @Autowired
    private LocMastService locMastService;
    @RequestMapping(value = "/task/depthAndShallowness")
    @ManagerAuth
    public R taskDepthAndShallowness() {
        ArrayList<ErrorDeviceParam> errorDeviceParamList = new ArrayList<>();
        List<LocMast> locMastList1 = locMastService.asrLocMastNotInDetl1();
        for (LocMast locMast : locMastList1){
            ErrorDeviceParam errorDeviceParam = new ErrorDeviceParam();
            errorDeviceParam.setErrorM("库位为F但没有明细");
            errorDeviceParam.setCategory("库位");
            errorDeviceParam.setEquipmentNo(locMast.getLocNo());
            errorDeviceParamList.add(errorDeviceParam);
        }
        List<LocMast> locMastList2 = locMastService.asrLocMastNotInDetl2();
        for (LocMast locMast : locMastList2){
            ErrorDeviceParam errorDeviceParam = new ErrorDeviceParam();
            errorDeviceParam.setErrorM("库位为SRQP但没有工作档案");
            errorDeviceParam.setCategory("库位");
            errorDeviceParam.setEquipmentNo(locMast.getLocNo());
            errorDeviceParamList.add(errorDeviceParam);
        }
        return R.ok(errorDeviceParamList);
    }
    @RequestMapping(value = "/locSts/adjacentLocMast")
    @ManagerAuth
    public R adjacentLocMast() {
        return R.ok(locMastService.adjacentLocMast());
    }
}
src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java
New file
@@ -0,0 +1,16 @@
package com.zy.asrs.entity.param;
import lombok.Data;
/**
 * Created by vincent on 2020/6/28
 */
@Data
public class ErrorDeviceParam {
    private String category = "-";//        字符串    类别
    private String equipmentNo = "-";//    是    字符串    设备号
    private String categoryOther = "-";//        字符串    相关设备类别
    private String equipmentNoOther = "-";//        字符串    相关设备号
    private String errorM = "-";//        字符串    异常描述
}
src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.param.ErrorDeviceParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -14,6 +15,9 @@
public interface LocMastMapper extends BaseMapper<LocMast> {
    LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1);
    List<LocMast> asrLocMastNotInDetl1();
    List<LocMast> asrLocMastNotInDetl2();
    List<ErrorDeviceParam> adjacentLocMast();
    @Select("select loc_no from asr_loc_mast where 1=1 and loc_sts = 'O' and crn_no = #{crnNo}")
    List<String> queryGroupEmptyStock(Integer crnNo);
src/main/java/com/zy/asrs/service/LocMastService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.param.ErrorDeviceParam;
import java.util.List;
@@ -12,6 +13,9 @@
     * 检索可用库位
     */
    LocMast queryFreeLocMast(Integer row, Short locType1);
    List<LocMast>  asrLocMastNotInDetl1();
    List<LocMast>  asrLocMastNotInDetl2();
    List<ErrorDeviceParam>  adjacentLocMast();
    /**
     * 获取同组货架的空库位
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -4,6 +4,7 @@
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.param.ErrorDeviceParam;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.RowLastnoService;
@@ -25,6 +26,21 @@
    }
    @Override
    public List<LocMast> asrLocMastNotInDetl1() {
        return this.baseMapper.asrLocMastNotInDetl1();
    }
    @Override
    public List<LocMast>  asrLocMastNotInDetl2() {
        return this.baseMapper.asrLocMastNotInDetl2();
    }
    @Override
    public List<ErrorDeviceParam>  adjacentLocMast() {
        return this.baseMapper.adjacentLocMast();
    }
    @Override
    public List<String> queryGroupEmptyStock(String sourceLocNo) {
        if (Cools.isEmpty(sourceLocNo)) {
            return null;
src/main/java/com/zy/asrs/task/handler/WrkMastCrnHandler.java
@@ -20,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
 * Created by Monkey D. Luffy on 2023.11.21
@@ -52,56 +53,61 @@
                    .eq("loc_sts", "O");
            int row1 = locMastService.selectCount(wrapper);
            int row2 = locMastService.selectCount(wrapperOther);
            LocMast locMast1 = null;
            List<LocMast> locMastList = null;
            if (row1>=row2){
                locMast1 = locMastService.selectOne(wrapper.orderBy("lev1", true)
                locMastList = locMastService.selectList(wrapper.orderBy("lev1", true)
                        .orderBy("bay1", true));
            }else {
                locMast1 = locMastService.selectOne(wrapperOther.orderBy("lev1", true)
                locMastList = locMastService.selectList(wrapperOther.orderBy("lev1", true)
                        .orderBy("bay1", true));
            }
            if (Cools.isEmpty(locMast1)){
            if (locMastList.isEmpty()){
                return FAIL;
            }
            String[] strings = staNoOther(locMast1.getLocNo());
            if (Cools.isEmpty(strings) || Cools.isEmpty(strings[0]) || Cools.isEmpty(strings[1])){
                return FAIL;
            }
            wrkMast.setLocNo(strings[0]);
            wrkMastOther.setLocNo(strings[1]);
            for (LocMast locMast1 : locMastList){
                String[] strings = staNoOther(locMast1.getLocNo());
                if (Cools.isEmpty(strings) || Cools.isEmpty(strings[0]) || Cools.isEmpty(strings[1])){
                    continue;
                }
                wrkMast.setLocNo(strings[0]);
                wrkMastOther.setLocNo(strings[1]);
            WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now);
                WrkMastCrn wrkMastCrn = new WrkMastCrn(wrkMast,wrkMastOther,now);
            // 更新目标库位状态
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
            if (locMast.getLocSts().equals("O")){
                locMast.setLocSts("S"); // S.入库预约
                locMast.setModiTime(now);
                // 更新目标库位状态
                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                if (locMast.getLocSts().equals("O")){
                    locMast.setLocSts("S"); // S.入库预约
                    locMast.setModiTime(now);
                } else {
                    continue;
                }
                // 更新目标库位状态
                LocMast locMastOther = locMastService.selectById(wrkMastOther.getLocNo());
                if (locMastOther.getLocSts().equals("O")){
                    locMastOther.setLocSts("S"); // S.入库预约
                    locMastOther.setModiTime(now);
                } else {
                    continue;
                }
                if (!locMastService.updateById(locMast)){
                    throw new CoolException("改变库位状态失败");
                    return FAIL;
                }
            } else {
                throw new CoolException(locMast1.getLocNo()+"目标库位已被占用");
            }
            // 更新目标库位状态
            LocMast locMastOther = locMastService.selectById(wrkMastOther.getLocNo());
            if (locMastOther.getLocSts().equals("O")){
                locMastOther.setLocSts("S"); // S.入库预约
                locMastOther.setModiTime(now);
                if (!locMastService.updateById(locMastOther)){
                    throw new CoolException("改变库位状态失败");
                    return FAIL;
                }
            } else {
                throw new CoolException(locMast1.getLocNo()+"目标库位已被占用");
            }
            wrkMastService.updateById(wrkMast);
            wrkMastService.updateById(wrkMastOther);
                wrkMastService.updateById(wrkMast);
                wrkMastService.updateById(wrkMastOther);
            wrkMastCrnService.insert(wrkMastCrn);
                wrkMastCrnService.insert(wrkMastCrn);
                return SUCCESS;
            }
        }catch (Exception e){
            log.error("异常!!!"+e);
src/main/resources/mapper/LocMastMapper.xml
@@ -37,6 +37,16 @@
    </resultMap>
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMapError" type="com.zy.asrs.entity.param.ErrorDeviceParam">
        <result column="category" property="category" />
        <result column="equipmentNo" property="equipmentNo" />
        <result column="categoryOther" property="categoryOther" />
        <result column="equipmentNoOther" property="equipmentNoOther" />
        <result column="errorM" property="errorM" />
    </resultMap>
    <select id="queryFreeLocMast" resultMap="BaseResultMap">
        select top 1 *
        from asr_loc_mast
@@ -48,6 +58,59 @@
        order by loc_sts desc ,lev1 asc,bay1 asc
    </select>
<!--    库位为F但没有明细-->
    <select id="asrLocMastNotInDetl1" resultMap="BaseResultMap">
        SELECT a.*
        FROM asr_loc_mast AS a
                 LEFT JOIN asr_loc_detl AS b ON a.loc_no = b.loc_no
        WHERE a.loc_sts = 'F'
          AND b.loc_no IS NULL
    </select>
<!--    库位为SRQP但没有工作档案-->
    <select id="asrLocMastNotInDetl2" resultMap="BaseResultMap">
        SELECT a.*
        FROM asr_loc_mast AS a
        WHERE a.loc_sts IN ('S','R','Q','P')
          AND NOT EXISTS (
            SELECT 1
            FROM asr_wrk_mast AS d
            WHERE a.loc_no = d.loc_no OR a.loc_no = d.source_loc_no
          )
    </select>
    <!--    深浅库位不一致-->
    <select id="adjacentLocMast" resultMap="BaseResultMapError">
        SELECT
            a.loc_no AS category,
            a.loc_sts AS equipmentNo,
            neighbor.loc_no AS categoryOther,
            neighbor.loc_sts AS equipmentNoOther,
            '深浅库位不一致' AS errorM
        FROM
            asr_loc_mast AS a
                JOIN
            asr_loc_mast AS neighbor ON
                a.bay1 = neighbor.bay1 AND
                a.lev1 = neighbor.lev1 AND
                (
                    (a.row1 = 1 AND neighbor.row1 = 2) OR
                    (a.row1 = 2 AND neighbor.row1 = 1) OR
                    (a.row1 = 3 AND neighbor.row1 = 4) OR
                    (a.row1 = 4 AND neighbor.row1 = 3) OR
                    (a.row1 = 5 AND neighbor.row1 = 6) OR
                    (a.row1 = 6 AND neighbor.row1 = 5) OR
                    (a.row1 = 7 AND neighbor.row1 = 8) OR
                    (a.row1 = 8 AND neighbor.row1 = 7)
                    )
        WHERE
            a.row1 IN (2,3,6,7)
          AND NOT (
            a.loc_sts = neighbor.loc_sts OR
            (a.loc_sts IN ('F', 'D') AND neighbor.loc_sts IN ('F', 'D'))
            )
    </select>
    <select id="queryShallowLocFMast" resultMap="BaseResultMap">
        select * from asr_loc_mast
        where 1=1
src/main/webapp/views/deviceOperate/errorTaskOperate.html
New file
@@ -0,0 +1,117 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>硫化罐设备</title>
    <link rel="stylesheet" href="../../static/css/element.css">
    <link rel="stylesheet" href="../../static/css/element-ui.css">
    <link rel="icon" href="../../static/images/favicon.ico" type="image/x-icon">
    <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../../static/js/common.js"></script>
    <script type="text/javascript" src="../../static/js/vue.min.js"></script>
    <script type="text/javascript" src="../../static/js/element.js"></script>
</head>
<style scoped>
</style>
<body>
    <div id="app" style="display: flex;justify-content: center;flex-wrap: wrap;">
        <div style="width: 100%;">
            <el-table border ref="singleTable" :data="tableData" highlight-current-row
                      max-height="350" style="width: 100%">
                <el-table-column property="category" label="类别">
                </el-table-column>
                <el-table-column property="equipmentNo" label="设备号">
                </el-table-column>
                <el-table-column property="categoryOther" label="相关设备类别">
                </el-table-column>
                <el-table-column property="equipmentNoOther" label="相关设备号">
                </el-table-column>
                <el-table-column property="errorM" label="异常描述">
                </el-table-column>
            </el-table>
        </div>
        <div style="width: 100%;">
            <el-table border ref="singleTable" :data="adjacentLocMast" highlight-current-row
                      max-height="350" style="width: 100%">
                <el-table-column property="category" label="当前库位">
                </el-table-column>
                <el-table-column property="equipmentNo" label="当前库位状态">
                </el-table-column>
                <el-table-column property="categoryOther" label="相邻库位">
                </el-table-column>
                <el-table-column property="equipmentNoOther" label="相邻库位状态">
                </el-table-column>
                <el-table-column property="errorM" label="异常描述">
                </el-table-column>
            </el-table>
        </div>
    </div>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                tableData: [],
                adjacentLocMast: []
            },
            created() {
                this.init()
            },
            watch: {
            },
            methods: {
                init() {
                    this.getTableData()
                    this.getAdjacentLocMast()
                    setInterval(() => {
                        this.getTableData()
                        this.getAdjacentLocMast()
                        // this.demoStatus()
                    }, 1000)
                },
                confirmEvent() {
                },
                cancelEvent() {
                },
                getTableData() {
                    let that = this;
                    $.ajax({
                        url: baseUrl + "/error/device/task/depthAndShallowness",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
                        data: {},
                        dataType: 'json',
                        contentType: 'application/json;charset=UTF-8',
                        method: 'post',
                        success: function (res) {
                            that.tableData = res.data
                        }
                    });
                },
                getAdjacentLocMast() {
                    let that = this;
                    $.ajax({
                        url: baseUrl + "/error/device/locSts/adjacentLocMast",
                        headers: {
                            'token': localStorage.getItem('token')
                        },
                        data: {},
                        dataType: 'json',
                        contentType: 'application/json;charset=UTF-8',
                        method: 'post',
                        success: function (res) {
                            that.adjacentLocMast = res.data
                        }
                    });
                }
            }
        })
    </script>
</body>
</html>