自动化立体仓库 - WMS系统
lty
3 天以前 8e943b7104561c3b14cf223016698709c5ade4b5
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -9,12 +9,10 @@
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.model.WrkDto;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +20,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.List;
/**
 * 移动端接口控制器
@@ -51,6 +50,28 @@
    private BasDevpService basDevpService;
    @Autowired
    private PackService packService;
    @Autowired
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    // 商品上架
    @RequestMapping("/mat/onSale/auth")
    @ManagerAuth(memo = "response.mobile_mat_on_sale")
    public R matOnSale(@RequestBody CombParam combParam){
        mobileService.onSale(combParam);
        return R.ok("response.on_sale_success");
    }
    // 商品下架
    @RequestMapping("/mat/offSale/auth")
    //@ManagerAuth
    public R matOffSale(@RequestBody OffSaleParam offSaleParam){
        mobileService.offSale(offSaleParam);
        return R.ok("response.off_sale_success");
    }
    // 组托 ----------------------------------------------------------------------------------------------------
@@ -58,59 +79,154 @@
     * 根据单号检索单据数据
     * http://localhost:8081/jkwms/mobile/order/serach/orderNo/auth?orderNo=123123
     */
//    @RequestMapping("/order/search/orderNo/auth")
//    @ManagerAuth
//    public R orderSearchByBarcode(@RequestParam String orderNo){
//        Order order = orderService.selectByNo(orderNo);
//        if (order == null) {
//            return R.ok();
//        }
//        DocType docType = docTypeService.selectById(order.getDocType());
//        if (docType.getPakin() == null || docType.getPakin() != 1) {
//            return R.ok();
//        }
//        if (order.getSettle() > 2) {
//            return R.ok();
//        }
//        List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
//        if (Cools.isEmpty(orderDetls)) {
//            return R.ok();
//        }
//        return R.ok().put("data", orderDetls);
//    }
    @RequestMapping("/order/search/orderNo/auth")
    @ManagerAuth
    @ManagerAuth(memo = "response.mobile_order_search")
    public R orderSearchByBarcode(@RequestParam String orderNo){
        Order order = orderService.selectByNo(orderNo);
        if (order == null) {
        if (Cools.isEmpty(orderNo)){
            orderNo=null;
        }
        List<Order> orders = orderService.selectorderNoL(orderNo);
        if (Cools.isEmpty(orders)){
            return R.ok();
        }
        DocType docType = docTypeService.selectById(order.getDocType());
        if (docType.getPakin() == null || docType.getPakin() != 1) {
            return R.ok();
        LinkedList<CombParam> combParams = new LinkedList<>();
        if (!Cools.isEmpty(orders)){
            for (Order order:orders){
                CombParam combParam=new CombParam();
                if (order == null) {
                    continue;
                }
                DocType docType = docTypeService.selectById(order.getDocType());
                if (docType.getPakin() == null || docType.getPakin() != 1) {
                    continue;
                }
                if (order.getSettle() > 2) {
                    continue;
                }
                List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
                if (!Cools.isEmpty(orderDetls)) {
                    LinkedList<CombParam.CombMat> combMats = new LinkedList<>();
                    for (OrderDetl orderDetl:orderDetls){
                        CombParam.CombMat combMat = new CombParam.CombMat();
                        combMat.setMatnr(orderDetl.getMatnr());
                        combMat.setBatch(orderDetl.getBatch());
                        combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty());
                        combMat.setMaktx(orderDetl.getMaktx());
                        combMat.setSpecs(orderDetl.getSpecs());
                        combMats.add(combMat);
                    }
                    combParam.setCombMats(combMats);
                }
                combParam.setOrderNo(order.getOrderNo());
                combParams.add(combParam);
            }
        }
        if (order.getSettle() > 2) {
            return R.ok();
        }
        List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
        if (Cools.isEmpty(orderDetls)) {
            return R.ok();
        }
        return R.ok().add(orderDetls);
        R r = R.ok();
        r.put("data",combParams);
        return r;
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    @ManagerAuth(memo = "response.pallet_comb")
    public R comb(@RequestBody CombParam combParam){
        mobileService.comb(combParam, getUserId());
        return R.ok("组托成功");
        return R.ok("response.comb_success");
    }
    @RequestMapping("/cartonComb/auth")
    @ManagerAuth(memo = "response.pallet_comb")
    public R cartonComb(@RequestBody List<CombCartonParam> params ){
        mobileService.cartonComb(params, getUserId());
        return R.ok("response.comb_success");
    }
    @RequestMapping("/cartonScanReplace/auth")
    @ManagerAuth(memo = "response.carton_scan")
    public R cartonScanReplace(@RequestBody ScanParam scanParam){
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode",scanParam.getCartonLabel()));
        if (wrkDetls.isEmpty()) {
            return R.error("response.no_data");
        }
        WrkDetl wrkDetl = wrkDetls.get(0);
        return R.ok("response.scan_success").add(wrkDetl);
    }
    @RequestMapping("/labelReplace/auth")
    @ManagerAuth(memo = "response.carton_scan_save")
    public R cartonScanReplaceSave(@RequestBody ReplaceBarcodeParam replaceBarcodeParam) {
        if (replaceBarcodeParam == null || Cools.isEmpty(replaceBarcodeParam.getReplaceParam())) {
            return R.error("PARAM IS NULL");
        }
        for (ReplaceBarcodeParam.CombinedData param : replaceBarcodeParam.getReplaceParam()) {
            WrkDetl wrkDetl = wrkDetlService.selectOne(
                    new EntityWrapper<WrkDetl>()
                            .eq("order_no", param.getOrderNo())
                            .eq("barcode", param.getBarcode())
            );
            if (wrkDetl == null) {
                return R.error("DETL IS NULL, barcode=" + param.getBarcode());
            }
            if (!wrkDetlService.updateBuyerLabel(param.getOrderNo(), param.getBuyerLabelBarcode(),param.getBarcode())) {
                return R.error("Failed to update, barcode=" + param.getBarcode());
            }
        }
        return R.ok("response.replace_success");
    }
    @RequestMapping("/cartonScan/auth")
    @ManagerAuth(memo = "response.carton_scan")
    public R cartonScan(@RequestBody ScanParam scanParam){
        OrderDetl orderDetl = mobileService.cartonScan(scanParam, getUserId());
        return R.ok("response.scan_success").add(orderDetl);
    }
    @RequestMapping("/pack/get/auth")
    @ManagerAuth
    @ManagerAuth(memo = "response.mobile_pack_get")
    public R packGet(@RequestParam String barcode){
        Pack pack = packService.selectByBarcode(barcode);
        if (pack == null) {
            return R.ok();
        }
        if (pack.getSettle() == 1L) {
            return R.ok().add(pack);
            R r = R.ok();
            r.put("data",pack);
            return r;
        }
        return R.ok("组托成功");
        return R.ok("response.comb_success");
    }
    @RequestMapping("/pack/comb/auth")
    @ManagerAuth(memo = "下线组托")
    @ManagerAuth(memo = "response.offline_pallet_comb")
    public R packComb(@RequestBody CombParam combParam){
        mobileService.packComb(combParam, getUserId());
        return R.ok("组托成功");
        return R.ok("response.comb_success");
    }
    // 出库 ---------------------------------------------------------------------------------------------------
    @RequestMapping("/pakout/query/auth")
    @ManagerAuth
    @ManagerAuth(memo = "response.mobile_pakout_query")
    @Deprecated
    public R pakoutQuery(@RequestParam(required = false) String barcode,
                         @RequestParam(required = false) Integer staNo,
@@ -120,12 +236,16 @@
        }
        if (!Cools.isEmpty(barcode)) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", barcode));
            return R.ok().add(wrkDetls);
            R r = R.ok();
            r.put("data",wrkDetls);
            return r;
        }
        if (!Cools.isEmpty(matnr)) {
            if (!Cools.isEmpty(staNo)) {
                List<WrkDetl> wrkDetls = wrkDetlService.selectPakoutQuery(staNo, matnr);
                return R.ok().add(wrkDetls);
                R r = R.ok();
                r.put("data",wrkDetls);
                return r;
            }
        }
        return R.ok();
@@ -137,7 +257,7 @@
     * 2.拣料 返回 103
     */
    @RequestMapping("/pakout/confirm/barcode/auth")
    @ManagerAuth
    @ManagerAuth(memo = "response.mobile_pakout_confirm_barcode")
    public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode){
        if (Cools.isEmpty(barcode)) {
            return R.ok();
@@ -147,16 +267,53 @@
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            // 去除已出库确认的明细
            wrkDetls.removeIf(wrkDetl -> wrkDetl.getInspect() != null && wrkDetl.getInspect() != 0);
            return R.ok().add(Cools.add("wrkNo", wrkMast.getWrkNo()).add("ioType", wrkMast.getIoType()).add("list", wrkDetls));
            R r = R.ok();
            r.put("data", Cools.add("wrkNo", wrkMast.getWrkNo()).add("ioType", wrkMast.getIoType()).add("list", wrkDetls));
            return r;
        }
        return R.ok();
    }
    /**
     * 出库确认 - 扫货物  广德宜科版
     * 1.全板 返回 101
     * 2.拣料 返回 103
     */
    @RequestMapping("/pakout/confirm/goods/auth")       //待完善  原因(客户未给出详细信息)
    @ManagerAuth
    public R pakoutQueryByGoods(@RequestBody GDYKConfirmGoodsParam combParam){
        if (Cools.isEmpty(combParam)) {
            return R.ok();
        }
//        List<Order> orders = orderService.selectorderNoL(batch);
        OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", combParam.getMatnr()).eq("batch", combParam.getBatch()).eq("order_no",combParam.getOrderNo()));
        if (Cools.isEmpty(orderDetl)){
            return R.error("response.data_not_found");
        }
        if (!orderDetl.getAnfme().equals(orderDetl.getQty())){
            return R.error("response.task_not_completed");
        }
        //复核数
        orderDetl.setSource(1);
        orderDetlService.updateById(orderDetl);
        return R.ok();
    }
    // 根据库位码和商品码搜索商品
    @RequestMapping("/mat/find/auth")
    public R find(@RequestParam(required = false) String locNo
            , @RequestParam(required = false) String matnr){
        //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr);
        ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr);
        return R.ok(manLocDetl);
        //return R.ok(manLocDetlMapper.selectItem0(locNo, matnr));
    }
    /**
     * 出库确认 - 拣料出库 - 选择具体条码商品
     */
    @RequestMapping("/pakout/confirm/pick/auth")
    @ManagerAuth
    @ManagerAuth(memo = "response.mobile_pakout_confirm_pick")
    public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
                                , @RequestParam(required = false) String matnr){
        if (Cools.isEmpty(wrkNo)) {
@@ -176,7 +333,9 @@
                orderNo = wrkDetl.getOrderNo();
            }
            if ((wrkDetl.getMatnr() + "-" + wrkDetl.getBatch()).equals(matnr)) {
                return R.ok().add(wrkDetl);
                R r = R.ok();
                r.put("data",wrkDetl);
                return r;
            }
        }
        // 替换 明细
@@ -188,10 +347,12 @@
                wrkDetl.setOrderNo(orderNo);
                wrkDetl.setIoTime(wrkMast.getIoTime());
                wrkDetl.setWrkNo(wrkNo);
                return R.ok().add(wrkDetl);
                R r = R.ok();
                r.put("data",wrkDetl);
                return r;
            }
        }
        return R.error("系统错误,条码不存在");
        return R.error("response.system_error_barcode_not_exist");
    }
@@ -230,12 +391,12 @@
                // 103
                if (wrkMast.getIoType() == 103) {
                    if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
                        throw new CoolException("拣料出库确认失败");
                        throw new CoolException("response.confirm_picking_outbound_failed");
                    }
                    for (WrkDetl wrkDetl : dto.getWrkDetls()) {
                        wrkDetl.setInspect(1);
                        if (!wrkDetlService.insert(wrkDetl)) {
                            throw new CoolException("拣料出库确认失败");
                            throw new CoolException("response.confirm_picking_outbound_failed");
                        }
                    }
                }
@@ -257,12 +418,12 @@
                    wrkMast.setInvWh("Y");
                    wrkMast.setModiTime(new Date());
                    if (!wrkMastService.updateById(wrkMast)) {
                        throw new CoolException("修改工作档" + wrkNo + "失败");
                    }
            throw new CoolException("response.modify_work_master_failed");
        }
                }
            }
        }
        return R.ok("完成确认");
        return R.ok("response.confirm_complete");
    }
@@ -284,7 +445,9 @@
                    result.setStaNo(staNo);
                    result.setWrkNo(wrkMast.getWrkNo());
                    result.setWrkDetls(wrkDetls);
                    return R.ok().add(result);
                    R r = R.ok();
                    r.put("data",result);
                    return r;
                }
            }
        }
@@ -292,56 +455,20 @@
    }
    @RequestMapping("/adjust/auth")
    @ManagerAuth(memo = "盘点")
    @ManagerAuth(memo = "response.stock_count")
    public R adjust(@RequestBody MobileAdjustParam combParam){
        mobileService.adjust(combParam, getUserId());
        return R.ok("盘点成功");
        return R.ok("response.stock_adjust_success");
    }
    @PostMapping("/order/out/pakout/auth")
//    @ManagerAuth(memo = "根据订单出库")
    @ManagerAuth(memo = "response.order_outbound")
    public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
        if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
            return R.parse(BaseRes.PARAM);
        }
        mobileService.pakoutByOrder(param,getUserId());
        return R.ok("出库成功");
//        if (Cools.isEmpty(locDtos)) {
//            return R.parse(BaseRes.PARAM);
//        }
//        boolean lack = true;
//        for (LocDto locDto : locDtos) {
//            if (!locDto.isLack()) {
//                lack = false;
//                break;
//            }
//        }
//        if (lack) {
//            return R.error("库存不足");
//        }
//
//        Thread.sleep(1000L);
//
//        List<TaskDto> taskDtos = new ArrayList<>();
//        // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务
//        for (LocDto locDto : locDtos) {
//            if (locDto.isLack()) { continue; }
//            TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
//            if (TaskDto.has(taskDtos, taskDto)) {
//                TaskDto dto = TaskDto.find(taskDtos, taskDto);
//                assert dto != null;
//                dto.getLocDtos().addAll(taskDto.getLocDtos());
//            } else {
//                taskDtos.add(taskDto);
//            }
//        }
//        // -----------------------------------------------------------------------------------------------
//        for (TaskDto taskDto : taskDtos) {
//            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
//            workService.stockOut(staNo, taskDto, getUserId());
//        }
//        return R.ok();
        return R.ok("response.outbound_success");
    }
}