src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/pakStore/stockOut.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/pakStore/stockOut.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@ import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; import com.zy.common.model.MesCombParam; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -63,6 +64,10 @@ private ApiLogService apiLogService; @Autowired private WorkLogHandler workLogHandler; @Autowired private CommonService commonService; @Autowired private LocMastService locMastService; @Override @Transactional @@ -77,11 +82,11 @@ } // todo: 不下线重新入库 WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); if (wrkMast != null && wrkMast.getWrkSts() == 18) { ReturnT<String> start = workLogHandler.start(wrkMast); WrkMast wrkMast18 = wrkMastService.selectByBarcode(param.getBarcode()); if (wrkMast18 != null && wrkMast18.getWrkSts() == 18) { ReturnT<String> start = workLogHandler.start(wrkMast18); if (!start.isSuccess()) { log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo()); log.error("工作档[workNo={}]历史档处理失败", wrkMast18.getWrkNo()); } } @@ -90,40 +95,6 @@ // 无单组托 if (Cools.isEmpty(param.getOrderNo())) { // 生成入库通知档 List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); assert one != null; one.setAnfme(one.getAnfme() + detlDto.getAnfme()); } else { detlDtos.add(detlDto); } }); for (DetlDto detlDto : detlDtos) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setBatch(detlDto.getBatch()); waitPakin.setZpallet(param.getBarcode()); // 托盘码 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(detlDto.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } // 关联组托 } else { Order order = orderService.selectByNo(param.getOrderNo()); @@ -153,30 +124,93 @@ detlDtos.add(detlDto); } }); for (DetlDto detlDto : detlDtos) { Mat mat = matService.selectByMatnr(detlDto.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setOrderNo(order.getOrderNo()); // 单据编号 waitPakin.setBatch(detlDto.getBatch()); // 序列码 waitPakin.setZpallet(param.getBarcode()); // 托盘码 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(detlDto.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } orderService.updateSettle(order.getId(), 2L, userId); } LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocno())); if (Cools.isEmpty(locMast1)) { throw new CoolException("未找到正确的库位信息"); } int workNo = commonService.getWorkNo(0); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(9L); // 工作状态:生成入库ID wrkMast.setIoType(1); // 入出库状态:1.入库 Double ioPri = wrkMastService.getIoPri(1, locMast1.getLocNo()); wrkMast.setIoPri(ioPri); // 优先级 wrkMast.setCrnNo(locMast1.getCrnNo()); wrkMast.setOutMost(locMastService.isOutMost(locMast1.getLocNo(), true)?1:0);; wrkMast.setSourceStaNo(null); wrkMast.setStaNo(null); wrkMast.setLocNo(locMast1.getLocNo()); wrkMast.setBarcode(param.getBarcode()); // 托盘码 wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(null); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } for (CombParam.CombMat paramMat : param.getCombMats() ) { Mat mat = matService.selectByMatnr(paramMat.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(paramMat.getMatnr() + "商品档案不存在"); } // 生成工作档明细 WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(mat); wrkDetl.setAnfme(paramMat.getAnfme()); wrkDetl.setZpallet(param.getBarcode()); // wrkDetl.setAnfme(1.0D); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } } // // 更新入库通知档 ioStatus ===>> Y // Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() // .eq("zpallet", barcode); // WaitPakin setParam = new WaitPakin(); // setParam.setIoStatus("Y"); // setParam.setModiTime(now); // if (!waitPakinService.update(setParam, wrapper)) { // throw new CoolException("更新通知档失败"); // } // 更新目标库位状态 if (locMast1.getLocSts().equals("O")){ locMast1.setLocSts("S"); // S.入库预约 locMast1.setModiTime(now); if (!locMastService.updateById(locMast1)){ throw new CoolException("改变库位状态失败"); } } else { throw new CoolException(locMast1.getLocNo()+"目标库位已被占用"); } } @Override src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -160,57 +160,7 @@ @Override @Transactional public void startupFullTakeStore(StockOutParam param, Long userId) { ArrayList<String> locNos = new ArrayList<>(); for (StockOutParam.LocDetl locDetl:param.getLocDetls()){ locNos.add(locDetl.getLocNo()); } //检测是否为浅库位 List<LocMast> locMasts = null; boolean sign=false; String th = ""; for (StockOutParam.LocDetl locDetl:param.getLocDetls()){ int row = getRow(locDetl.getLocNo()); int bay = getBay(locDetl.getLocNo()); int lev = getLev(locDetl.getLocNo()); if (!(row==4 || row==5)){ if (row>5){ locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5).le("row1", row) .eq("bay1",bay).eq("lev1",lev)); for (LocMast locMast1:locMasts){ if (locNos.contains(locMast1.getLocNo())){ continue; } if (locMast1.getRow1()<row){ if (!locMast1.getLocSts().equals("O")){ sign=true; th="库位号:"+locDetl.getLocNo()+" 浅库位有非空库位!"; break; } } } }else { locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4).ge("row1", row) .eq("bay1",bay).eq("lev1",lev)); for (LocMast locMast1:locMasts){ if (locNos.contains(locMast1.getLocNo())){ continue; } if (locMast1.getRow1()>row){ if (!locMast1.getLocSts().equals("O")){ sign=true; th="库位号:"+locDetl.getLocNo()+" 浅库位有非空库位!"; break; } } } } } } if (sign){ throw new CoolException("出库失败;"+th); } // 目标站点状态检测 BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); // 获取库位明细 List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { @@ -221,7 +171,7 @@ } if (!locDetlDtos.isEmpty()) { // 启动出库开始 101.出库 stockOut(staNo, locDetlDtos, null, userId); stockOut(null, locDetlDtos, null, userId); } else { throw new CoolException("库存不存在"); } @@ -299,22 +249,25 @@ // 获取路径 Boolean outMost = locMastService.isOutMost(dto.getLocNo(), false); Integer outCrnNo = locMastService.getOutCrnNo(locMast); StaDesc staDesc = staDescService.queryCrnStn(ioType, outCrnNo, staNo.getDevNo()); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType); // 入出库状态 wrkMast.setWrkSts(ioType == 101?17L:9L); // 工作状态:11.生成出库ID wrkMast.setIoType(ioType == 101?101:53); // 入出库状态 Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo()); wrkMast.setIoPri(ioPri); // 优先级:13 wrkMast.setOutMost(outMost?1:0);; wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 wrkMast.setSourceLocNo(dto.getLocNo()); // 源库位 if (ioType == 101){ wrkMast.setSourceLocNo(dto.getLocNo()); // 源库位 }else { wrkMast.setLocNo(dto.getLocNo()); } wrkMast.setFullPlt("Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 @@ -349,7 +302,7 @@ // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 locMast = locMastService.selectById(dto.getLocNo()); if (locMast.getLocSts().equals("F")) { locMast.setLocSts(ioType==101?"R":"P"); locMast.setLocSts(ioType==101?"R":"Q"); locMast.setModiUser(userId); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -67,37 +67,24 @@ if (wrkMast.getIoType() == 1) { // 入库通知单 if (!Cools.isEmpty(wrkMast.getBarcode())) { // 保存入库通知档历史档 if (!waitPakinLogService.save(wrkMast.getBarcode())) { exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); } // 删除入库通知档 if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) { exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); } // // 保存入库通知档历史档 // if (!waitPakinLogService.save(wrkMast.getBarcode())) { // exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); // } // // 删除入库通知档 // if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) { // exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); // } } // 手动入库生成单据 【 上报三方平台 】 if (!Cools.isEmpty(wrkDetls)) { if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); } } // 拣料再入库 } else if (wrkMast.getIoType() == 53) { if (!Cools.isEmpty(wrkDetls)) { if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); } } } // 出库 -------------------------------------------------------------------------------- } else if (wrkMast.getWrkSts() == 18) { if (!Cools.isEmpty(wrkDetls)) { if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); } } } // 保存工作主档历史档 src/main/webapp/static/js/pakStore/stockOut.js
@@ -70,13 +70,7 @@ if (locDetlData.length === 0){ layer.msg('请先提取商品库存', {icon: 2}); } else { var staNo = $("#staNoSelect").val(); if (staNo === "" || staNo === null){ layer.msg("请选择出库口", {icon: 2}); return; } let param = { outSite: staNo, locDetls: locDetlData } $.ajax({ src/main/webapp/views/pakStore/stockOut.html
@@ -95,11 +95,6 @@ <script type="text/html" id="toolbar"> <div class="layui-form"> <div class="layui-btn-container"> <!-- 1.选择出库口 --> <span id="staNoSpan">出库口:</span> <select id="staNoSelect" lay-verify="required"> <option value="">请选择站点</option> </select> <!-- 2.启动出库 --> <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">启动出库</button> </div>