| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/OrderDetlPakoutMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/locAroundBind/locAroundBind.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/locAroundBind/locAroundBind.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -466,8 +466,7 @@ LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() .in("loc_no", locs) .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) .orderAsc(Arrays.asList("loc_no")) .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); .orderAsc(Arrays.asList("loc_no"))); if (Objects.isNull(locMasts)) { binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>() @@ -478,18 +477,24 @@ locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() .in("loc_no", nlocs) .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) .orderAsc(Arrays.asList("loc_no")) .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY")); .orderAsc(Arrays.asList("loc_no"))); if (Objects.isNull(locMasts)) { throw new CoolException("暂无可用工作位!!"); } } LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMasts.getLocNo())); bLocNo.setLocType(LocStsType.LOC_STS_TYPE_S.type); LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMasts.getLocNo())); bLocNo.setLocType(LocStsType.LOC_STS_TYPE_S.type); if (!locAroundBindService.updateById(bLocNo)) { throw new CoolException("工位预约失败!!"); } if (!locAroundBindService.updateById(bLocNo)) { throw new CoolException("工位预约失败!!"); } locMasts.setLocSts(LocStsType.LOC_STS_TYPE_S.type); locMasts.setModiUser(userId); locMasts.setModiTime(now); if (!locMastService.updateById(locMasts)) { throw new CoolException("预约库位状态失败,库位号:" + locMasts.getLocNo()); } List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(), 1); @@ -542,7 +547,7 @@ wrkDetl.setIoTime(now); wrkDetl.setWrkNo(workNo); wrkDetl.setOrderNo(locDto.getOrderNo()); wrkDetl.setAnfme(locDto.getAnfme()); // 数量 // wrkDetl.setAnfme(locDto.getAnfme()); // 数量 wrkDetl.setStandby1(locDto.getStandby1()); LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>() .eq("loc_no", locDto.getLocNo()) @@ -557,7 +562,7 @@ wrkDetl.setUnit(locDel.getUnit()); wrkDetl.setSpecs(locDel.getSpecs()); wrkDetl.setBatch(locDel.getBatch()); // wrkDetl.setAnfme(locDel.getAnfme()); wrkDetl.setAnfme(locDel.getAnfme()); wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); wrkDetl.setModiTime(now); @@ -1206,11 +1211,20 @@ if (!Objects.isNull(wrkMast.getWrkCode())) { LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo())); if (!Objects.isNull(aroundBind)) { aroundBind.setLocType(LocStsType.LOC_STS_TYPE_O.type); aroundBind.setLocType(LocStsType.LOC_STS_TYPE_F.type); if (!locAroundBindService.updateById(aroundBind)) { throw new CoolException("工位状态修改失败!!"); } } LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo())); if (!Objects.isNull(locMast)) { locMast.setLocSts(LocStsType.LOC_STS_TYPE_F.type); if (!locMastService.updateById(locMast)) { throw new CoolException("库位状态修改失败!!"); } } } // 出库取消(修改源库位) } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -6,10 +6,7 @@ import com.zy.asrs.entity.*; import com.zy.asrs.enums.LocStsType; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.BasStationServiceImpl; import com.zy.asrs.service.impl.LocCacheServiceImpl; import com.zy.asrs.service.impl.OrderPakinServiceImpl; import com.zy.asrs.service.impl.TaskDetlServiceImpl; import com.zy.asrs.service.impl.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import lombok.extern.slf4j.Slf4j; @@ -58,6 +55,8 @@ private BasStationServiceImpl basStationService; @Autowired private WorkService workService; @Autowired private LocAroundBindService locAroundBindService; public ReturnT<String> start(WrkMast wrkMast) { // 4.入库完成 @@ -489,7 +488,8 @@ } private ReturnT<String> doOut(WrkMast wrkMast) { @Transactional(rollbackFor = Exception.class) public ReturnT<String> doOut(WrkMast wrkMast) { Date now = new Date(); LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); try { @@ -507,7 +507,18 @@ if (!Objects.isNull(wrkMast.getWrkCode())) { //TODO 移库 // workService.locMove(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), wrkMast.getAppeUser()); movLoc(wrkMast); //修改工位库态 LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getLocNo())); if (Objects.isNull(bLocNo)) { throw new CoolException("数据错误, 目标工位不存在!!"); } bLocNo.setLocType(LocStsType.LOC_STS_TYPE_F.type); if (!locAroundBindService.updateById(bLocNo)) { throw new CoolException("工位状态修改失败!!"); } } else { // // 出库确认信号位 // if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) { src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -57,7 +57,9 @@ <sql id="standbyAll"> and batch = #{batch} and brand = #{brand} <if test="brand != null and brand != ''"> and brand = #{brand} </if> and standby1 = #{standby1} and standby2 = #{standby2} and standby3 = #{standby3} src/main/webapp/static/js/locAroundBind/locAroundBind.js
@@ -12,7 +12,7 @@ // 数据渲染 tableIns = table.render({ elem: '#locAroundBind', headers: { token: localStorage.getItem('token') }, headers: {token: localStorage.getItem('token')}, url: baseUrl + '/locAroundBind/list/auth', page: true, limit: 15, @@ -21,16 +21,16 @@ cellMinWidth: 50, height: 'full-120', cols: [[ { type: 'checkbox' } , { field: 'id', align: 'center', title: 'ID' , hide: true } , { field: 'devId', align: 'center', title: '机台ID', hide: true } , { field: 'devNo', align: 'center', title: '机台号' } , { field: 'devName', align: 'center', title: '设备名称' } , { field: 'blocId', align: 'center', title: '库位ID', hide: true } , { field: 'blocNo', align: 'center', title: '工位' } ,{field: 'locType$', align:'center', title: '工位状态'} , { field: 'def$', align: 'center', title: '工位类型' } , { fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 120 } {type: 'checkbox'} , {field: 'id', align: 'center', title: 'ID', hide: true} , {field: 'devId', align: 'center', title: '机台ID', hide: true} , {field: 'devNo', align: 'center', title: '机台号'} , {field: 'devName', align: 'center', title: '设备名称'} , {field: 'blocId', align: 'center', title: '库位ID', hide: true} , {field: 'blocNo', align: 'center', title: '工位'} , {field: 'locType$', align: 'center', title: '工位状态'} , {field: 'def$', align: 'center', title: '工位类型'} , {fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 240} ]], request: { pageName: 'curr', @@ -66,7 +66,7 @@ searchData['orderByType'] = obj.type; tableIns.reload({ where: searchData, page: { curr: 1 } page: {curr: 1} }); }); @@ -79,7 +79,7 @@ break; case 'deleteData': if (checkStatus.length === 0) { layer.msg('请选择要删除的数据', { icon: 2 }); layer.msg('请选择要删除的数据', {icon: 2}); return; } del(checkStatus.map(function (d) { @@ -87,7 +87,7 @@ })); break; case 'exportData': admin.confirm('确定导出Excel吗', { shadeClose: true }, function () { admin.confirm('确定导出Excel吗', {shadeClose: true}, function () { var titles = []; var fields = []; obj.config.cols[0].map(function (col) { @@ -106,7 +106,7 @@ }; $.ajax({ url: baseUrl + "/locAroundBind/export/auth", headers: { 'token': localStorage.getItem('token') }, headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(param), dataType: 'json', contentType: 'application/json;charset=UTF-8', @@ -118,15 +118,15 @@ } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg, { icon: 2 }) layer.msg(res.msg, {icon: 2}) } } }); }); break; case "init": layer.prompt({ title: '请输入口令,并重置库位', formType: 1, shadeClose: true }, function (pass, idx) { http.get(baseUrl + "/locMast/init/pwd", { pwd: pass }, function (res) { layer.prompt({title: '请输入口令,并重置库位', formType: 1, shadeClose: true}, function (pass, idx) { http.get(baseUrl + "/locMast/init/pwd", {pwd: pass}, function (res) { if (res.data) { layer.open({ type: 1, @@ -149,11 +149,26 @@ } }); // iframe物料详情 function locDetlToLayer(val) { locNo = val; layer.open({ type: 2, title: '库存明细', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: true, content: '../report/locDetl.html', success: function(layero, index){ } }); } // 初始化保存 form.on('submit(initDo)', function (data) { $.ajax({ url: baseUrl + "/locAroundBind/bind/init", headers: { 'token': localStorage.getItem('token') }, headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(data.field), contentType: 'application/json;charset=UTF-8', method: 'POST', @@ -182,6 +197,17 @@ case "del": del([data.id]); break; // 查看明细 case 'locDetl': if (data.locType.trim() === '' || data.locType.trim() === 'S' || data.locType.trim() === 'D' || data.locType.trim() === 'O') { layer.msg("工位的状态不存在物料"); return; } locDetlToLayer(data.blocNo); break; } }); @@ -199,19 +225,19 @@ var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/locAroundBind/" + (mData ? 'update' : 'add') + "/auth", headers: { 'token': localStorage.getItem('token') }, headers: {'token': localStorage.getItem('token')}, data: data.field, method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200) { layer.close(dIndex); layer.msg(res.msg, { icon: 1 }); layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, {icon: 2}); } } }) @@ -233,18 +259,18 @@ var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/locAroundBind/delete/auth", headers: { 'token': localStorage.getItem('token') }, data: { ids: ids }, headers: {'token': localStorage.getItem('token')}, data: {ids: ids}, method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200) { layer.msg(res.msg, { icon: 1 }); layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg, { icon: 2 }); layer.msg(res.msg, {icon: 2}); } } }) @@ -270,6 +296,7 @@ }, 300); } layDateRender(); }); @@ -286,6 +313,6 @@ }); tableIns.reload({ where: searchData, page: { curr: pageCurr } page: {curr: pageCurr} }); } src/main/webapp/views/locAroundBind/locAroundBind.html
@@ -13,51 +13,54 @@ </head> <body> <div class="layui-fluid"> <div class="layui-card"> <div class="layui-card-body"> <div class="layui-form toolbar" id="search-box"> <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> </div> </div> <div class="layui-inline">  <button class="layui-btn icon-btn" lay-filter="search" lay-submit> <i class="layui-icon"></i>搜索 </button> <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> <i class="layui-icon"></i>重置 </button> <div class="layui-fluid"> <div class="layui-card"> <div class="layui-card-body"> <div class="layui-form toolbar" id="search-box"> <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> </div> </div> <div class="layui-inline">  <button class="layui-btn icon-btn" lay-filter="search" lay-submit> <i class="layui-icon"></i>搜索 </button> <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> <i class="layui-icon"></i>重置 </button> </div> </div> <table class="layui-hide" id="locAroundBind" lay-filter="locAroundBind"></table> </div> <table class="layui-hide" id="locAroundBind" lay-filter="locAroundBind"></table> </div> </div> </div> <script type="text/html" id="toolbar"> <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button> <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button> <button class="layui-btn layui-btn-primary" id="btn-init" lay-event="init">初始化</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出 </button> </div> </script> <script type="text/html" id="operate"> <script type="text/html" id="operate"> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a> <a class="layui-btn layui-btn-xs loc-detl" lay-event="locDetl">查看明细</a> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/locAroundBind/locAroundBind.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/locAroundBind/locAroundBind.js" charset="utf-8"></script> </body> <!-- 表单弹窗 --> <script type="text/html" id="editDialog"> @@ -68,7 +71,8 @@ <div class="layui-form-item"> <label class="layui-form-label layui-form-required">机台: </label> <div class="layui-input-block"> <input class="layui-input" name="devNo" placeholder="请输入机台号" lay-vertype="tips" lay-verify="required"> <input class="layui-input" name="devNo" placeholder="请输入机台号" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> @@ -80,7 +84,8 @@ <div class="layui-form-item"> <label class="layui-form-label layui-form-required">工位: </label> <div class="layui-input-block"> <input class="layui-input" name="blocNo" placeholder="请输入库位码" lay-vertype="tips" lay-verify="required"> <input class="layui-input" name="blocNo" placeholder="请输入库位码" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> @@ -97,7 +102,8 @@ <label class="layui-form-label">工位状态</label> <div class="layui-input-inline cool-auto-complete"> <input id="locType" name="locType" class="layui-input" type="text" style="display: none"> <input id="locType$" name="locType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" <input id="locType$" name="locType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="工位状态" onfocus=this.blur()> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts" @@ -109,7 +115,7 @@ </div> </div> </div> </div> </div> </div> <hr class="layui-bg-gray"> <div class="layui-form-item text-right"> @@ -135,12 +141,12 @@ <label class="layui-form-label">起止排</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startRow" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endRow" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> </div> </div> @@ -150,12 +156,12 @@ <label class="layui-form-label">起止列</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startBay" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endBay" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> </div> </div> @@ -165,12 +171,12 @@ <label class="layui-form-label">起止层</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startLev" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endLev" autocomplete="off" class="layui-input" lay-verify="required|number"> lay-verify="required|number"> </div> </div> </div> @@ -184,22 +190,22 @@ <option value="R">S.预约出库</option> </select> </div> <!-- <div class="layui-inline">--> <!-- <label class="layui-form-label">库位状态</label>--> <!-- <div class="layui-inline">--> <!-- <label class="layui-form-label">库位状态</label>--> <!-- <div class="layui-input-inline cool-auto-complete">--> <!-- <input id="locSts" name="loc_sts" class="layui-input" type="text" style="display: none">--> <!-- <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text"--> <!-- placeholder="库位状态" onfocus=this.blur()>--> <!-- <div class="cool-auto-complete-window">--> <!-- <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts"--> <!-- onkeyup="autoLoad2(this.getAttribute('data-key'))">--> <!-- <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect"--> <!-- onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> <!-- </select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- <div class="layui-input-inline cool-auto-complete">--> <!-- <input id="locSts" name="loc_sts" class="layui-input" type="text" style="display: none">--> <!-- <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text"--> <!-- placeholder="库位状态" onfocus=this.blur()>--> <!-- <div class="cool-auto-complete-window">--> <!-- <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts"--> <!-- onkeyup="autoLoad2(this.getAttribute('data-key'))">--> <!-- <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect"--> <!-- onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> <!-- </select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> </div>