|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.core.annotations.ManagerAuth; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.core.common.R; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.FullStoreParam; | 
|---|
|  |  |  | import com.zy.asrs.entity.WaitPakin; | 
|---|
|  |  |  | import com.zy.asrs.entity.param.*; | 
|---|
|  |  |  | import com.zy.asrs.service.BasDevpService; | 
|---|
|  |  |  | import com.zy.asrs.service.WorkService; | 
|---|
|  |  |  | import com.zy.common.model.StartupDto; | 
|---|
|  |  |  | import com.zy.common.web.BaseController; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestBody; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestParam; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 工作流接口控制器 | 
|---|
|  |  |  | 
|---|
|  |  |  | private BasDevpService basDevpService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/available/put/site") | 
|---|
|  |  |  | @ManagerAuth(memo = "获取有效的入库站点") | 
|---|
|  |  |  | @ManagerAuth() | 
|---|
|  |  |  | public R availablePutSite(){ | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableDevp()); | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableInSite()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/available/empty/put/site") | 
|---|
|  |  |  | @ManagerAuth() | 
|---|
|  |  |  | public R availableEmptyPutSite(){ | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableEmptyInSite()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/available/take/site") | 
|---|
|  |  |  | @ManagerAuth(memo = "获取有效的出库站点") | 
|---|
|  |  |  | @ManagerAuth() | 
|---|
|  |  |  | public R availableTakeSite(){ | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableDevp()); | 
|---|
|  |  |  | List<Map<String, Object>> result = new ArrayList<>(); | 
|---|
|  |  |  | List<Integer> outSite = basDevpService.getAvailableOutSite(101); | 
|---|
|  |  |  | for (Integer siteId : outSite) { | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("siteId", siteId); | 
|---|
|  |  |  | map.put("desc", siteId + "(全板出库口)"); | 
|---|
|  |  |  | result.add(map); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103); | 
|---|
|  |  |  | for (Integer siteId : pickOutSite) { | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("siteId", siteId); | 
|---|
|  |  |  | map.put("desc", siteId + "(拣料出库口)"); | 
|---|
|  |  |  | result.add(map); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/full/store/start") | 
|---|
|  |  |  | @RequestMapping("/available/take/check/site") | 
|---|
|  |  |  | @ManagerAuth() | 
|---|
|  |  |  | public R availableTakeCheckSite(){ | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableOutSite(107)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/available/empty/take/site") | 
|---|
|  |  |  | @ManagerAuth() | 
|---|
|  |  |  | public R availableEmptyTakeSite(){ | 
|---|
|  |  |  | return R.ok().add(basDevpService.getAvailableEmptyOutSite()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/full/store/put/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "全板入库") | 
|---|
|  |  |  | public R start(@RequestBody FullStoreParam fullStoreParam) { | 
|---|
|  |  |  | workService.startupFullStore(fullStoreParam,getUserId()); | 
|---|
|  |  |  | public R fullStorePutStart(@RequestBody FullStoreParam fullStoreParam) { | 
|---|
|  |  |  | return R.ok("入库启动成功").add(workService.startupFullPutStore(fullStoreParam,getUserId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/plate/out/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "出库作业") | 
|---|
|  |  |  | public R fullStoreTakeStart(@RequestBody StockOutParam param) { | 
|---|
|  |  |  | workService.startupFullTakeStore(param, getUserId()); | 
|---|
|  |  |  | return R.ok("出库启动成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @RequestMapping("/plate/out/start") | 
|---|
|  |  |  | //    @ManagerAuth(memo = "出库作业") | 
|---|
|  |  |  | //    public R fullStoreTakeStart(@RequestBody StockOutFloorParam param) { | 
|---|
|  |  |  | //        if (param.getFloor() != null) { | 
|---|
|  |  |  | //            List<Integer> siteIdList = new ArrayList<>(); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            // 第一步:根据楼层选择站点集合 | 
|---|
|  |  |  | //            switch (param.getFloor()) { | 
|---|
|  |  |  | //                case 1: // 一楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(121, 124, 125, 126); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 2: // 二楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(221, 224, 226, 229); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 3: // 四楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(411, 412, 413, 414); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 4: // 一楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(103); // 只有一个站点 | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 5: // 二楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(201, 204, 206, 209); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 6: // 四楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(401, 402, 403, 404); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                default: | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            // 第二步:根据 locNo 的排号,给每个 locDetl 设置 siteId | 
|---|
|  |  |  | //            if (param.getLocDetls() != null) { | 
|---|
|  |  |  | //                for (StockOutFloorParam.LocDetl locDetl : param.getLocDetls()) { | 
|---|
|  |  |  | //                    String locNo = locDetl.getLocNo(); // 如:0312001 | 
|---|
|  |  |  | //                    if (locNo != null && locNo.length() >= 2) { | 
|---|
|  |  |  | //                        String rowStr = locNo.substring(0, 2); // 前两位为排号 | 
|---|
|  |  |  | //                        int row = Integer.parseInt(rowStr); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        Integer siteId = null; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        // 站点分布规则 | 
|---|
|  |  |  | //                        if (row == 1 || row == 2) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 0 ? siteIdList.get(0) : null; | 
|---|
|  |  |  | //                        } else if (row == 3 || row == 4) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 1 ? siteIdList.get(1) : null; | 
|---|
|  |  |  | //                        } else if (row == 5 || row == 6) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 2 ? siteIdList.get(2) : null; | 
|---|
|  |  |  | //                        } else if (row == 7 || row == 8) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 3 ? siteIdList.get(3) : null; | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        // 设置 siteId | 
|---|
|  |  |  | //                        locDetl.setSiteId(siteId); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        workService.startupFullTakeStore(param, getUserId()); | 
|---|
|  |  |  | //        return R.ok("出库启动成功"); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/empty/plate/in/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "空板入库") | 
|---|
|  |  |  | public R emptyPlateInStart(@RequestParam Integer sourceStaNo) { | 
|---|
|  |  |  | return R.ok("入库启动成功").add(workService.emptyPlateIn(sourceStaNo, getUserId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/empty/plate/out/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "空板出库") | 
|---|
|  |  |  | public R emptyPlateOutStart(EmptyPlateOutParam param) { | 
|---|
|  |  |  | workService.emptyPlateOut(param, getUserId()); | 
|---|
|  |  |  | return R.ok("出库启动成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/locCheck/out/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "盘点出库") | 
|---|
|  |  |  | public R locCheckOutStart(@RequestBody StockOutParam param) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | workService.locCheckOut(param, getUserId()); | 
|---|
|  |  |  | return R.ok("出库启动成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @RequestMapping("/locCheck/out/start") | 
|---|
|  |  |  | //    @ManagerAuth(memo = "盘点出库") | 
|---|
|  |  |  | //    public R locCheckOutStart(@RequestBody StockOutFloorParam param) { | 
|---|
|  |  |  | //        if (param.getFloor() != null) { | 
|---|
|  |  |  | //            List<Integer> siteIdList = new ArrayList<>(); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            // 第一步:根据楼层选择站点集合 | 
|---|
|  |  |  | //            switch (param.getFloor()) { | 
|---|
|  |  |  | //                case 1: // 一楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(121, 124, 125, 126); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 2: // 二楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(221, 224, 226, 229); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 3: // 四楼(东区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(411, 412, 413, 414); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 4: // 一楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(103); // 只有一个站点 | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 5: // 二楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(201, 204, 206, 209); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                case 6: // 四楼(西区) | 
|---|
|  |  |  | //                    siteIdList = Arrays.asList(401, 402, 403, 404); | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //                default: | 
|---|
|  |  |  | //                    break; | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            // 第二步:根据 locNo 的排号,给每个 locDetl 设置 siteId | 
|---|
|  |  |  | //            if (param.getLocDetls() != null) { | 
|---|
|  |  |  | //                for (StockOutFloorParam.LocDetl locDetl : param.getLocDetls()) { | 
|---|
|  |  |  | //                    String locNo = locDetl.getLocNo(); // 如:0312001 | 
|---|
|  |  |  | //                    if (locNo != null && locNo.length() >= 2) { | 
|---|
|  |  |  | //                        String rowStr = locNo.substring(0, 2); // 前两位为排号 | 
|---|
|  |  |  | //                        int row = Integer.parseInt(rowStr); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        Integer siteId = null; | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        // 站点分布规则 | 
|---|
|  |  |  | //                        if (row == 1 || row == 2) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 0 ? siteIdList.get(0) : null; | 
|---|
|  |  |  | //                        } else if (row == 3 || row == 4) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 1 ? siteIdList.get(1) : null; | 
|---|
|  |  |  | //                        } else if (row == 5 || row == 6) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 2 ? siteIdList.get(2) : null; | 
|---|
|  |  |  | //                        } else if (row == 7 || row == 8) { | 
|---|
|  |  |  | //                            siteId = siteIdList.size() > 3 ? siteIdList.get(3) : null; | 
|---|
|  |  |  | //                        } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //                        // 设置 siteId | 
|---|
|  |  |  | //                        locDetl.setSiteId(siteId); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        workService.locCheckOut(param, getUserId()); | 
|---|
|  |  |  | //        return R.ok("出库启动成功"); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/loc/move/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "库位移转") | 
|---|
|  |  |  | public R locMoveStart(@RequestParam String sourceLocNo, | 
|---|
|  |  |  | @RequestParam String targetLocNo) { | 
|---|
|  |  |  | workService.locMove(sourceLocNo, targetLocNo, getUserId()); | 
|---|
|  |  |  | return R.ok("移库启动成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/mat/turn/over/out/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "品号移交") | 
|---|
|  |  |  | public R turnMatLocDetl(@RequestBody EmptyPlateOutParam param) { | 
|---|
|  |  |  | if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls(),param.getMatId()) || Cools.isEmpty(param.getLocDetls().get(0)) || Cools.isEmpty(param.getLocDetls().get(0).getMatnr())){ | 
|---|
|  |  |  | return R.error("参数为空"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (param.getLocDetls().size()>1){ | 
|---|
|  |  |  | return R.error("请单条数据修改,谨慎操作!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | workService.turnMatLocDetl(param, getUserId()); | 
|---|
|  |  |  | return R.ok("品号移交成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/locDdetl/adjust/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "库存调整") | 
|---|
|  |  |  | public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) { | 
|---|
|  |  |  | workService.adjustLocDetl(param, getUserId()); | 
|---|
|  |  |  | return R.ok("库存调整成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/hand/control/wrkMast") | 
|---|
|  |  |  | @ManagerAuth(memo = "手动处理工作档") | 
|---|
|  |  |  | public R handControlWrkMast(@RequestParam String workNo, | 
|---|
|  |  |  | @RequestParam Integer type){ | 
|---|
|  |  |  | if (type == 1) { | 
|---|
|  |  |  | workService.completeWrkMast(workNo, getUserId()); | 
|---|
|  |  |  | return R.ok("工作档已完成"); | 
|---|
|  |  |  | } else if (type == 2) { | 
|---|
|  |  |  | workService.cancelWrkMast(workNo, getUserId()); | 
|---|
|  |  |  | return R.ok("工作档已取消"); | 
|---|
|  |  |  | } else if (type == 3) { | 
|---|
|  |  |  | workService.pickWrkMast(workNo, getUserId()); | 
|---|
|  |  |  | return R.ok("工作档已拣料"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/create/waitPain/wrkMast/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "生成任务") | 
|---|
|  |  |  | public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) { | 
|---|
|  |  |  | StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId()); | 
|---|
|  |  |  | return R.ok("任务号:" + startupDto.getWorkNo() + ";目标库位:" + startupDto.getLocNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping("/deal/preHave/start") | 
|---|
|  |  |  | @ManagerAuth(memo = "先入品处理") | 
|---|
|  |  |  | public R dealPreHave(@RequestParam Integer wrkNo) { | 
|---|
|  |  |  | String locNo = workService.dealPreHaveStart(wrkNo, getUserId()); | 
|---|
|  |  |  | return R.ok("任务重新入库,目标库位:" + locNo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|