src/main/java/com/zy/asrs/controller/BasErrorDeviceController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/ErrorDeviceParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/LocMastMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/LocMastService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/WrkMastCrnHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/deviceOperate/errorTaskOperate.html | ●●●●● 补丁 | 查看 | 原始文档 | 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>