自动化立体仓库 - WMS系统
#
lsh
2024-01-21 04b1ba2cf7f144079f1ae65d5d24fdcda330d1f9
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -2,18 +2,17 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
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;
@@ -21,6 +20,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.List;
/**
 * 移动端接口控制器
@@ -51,33 +51,232 @@
    @Autowired
    private PackService packService;
    @Autowired
    private  WorkService workService;
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    // 商品上架
    @RequestMapping("/mat/onSale/auth")
    @ManagerAuth
    public R matOnSale(@RequestBody CombParam combParam){
        mobileService.onSale(combParam);
        return R.ok("上架成功");
    }
    // 商品下架
    @RequestMapping("/mat/offSale/auth")
    //@ManagerAuth
    public R matOffSale(@RequestBody OffSaleParam offSaleParam){
        mobileService.offSale(offSaleParam);
        return R.ok("下架成功");
    }
    @RequestMapping("/search/sign/auth/v2")
//    @ManagerAuth(memo = "拆叠盘模式切换")
    public R orderSearchByBarcodeV2(@RequestParam boolean sign){
        Integer signRu = 1;
        return R.ok(signRu);
    }
    // 组托 ----------------------------------------------------------------------------------------------------
    /**
     * 根据单号检索单据数据
     * http://localhost:8081/jkwms/mobile/order/serach/orderNo/auth?orderNo=123123
     * http://localhost:8081/jtwms/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().add(orderDetls);
//    }
    @RequestMapping("/order/search/orderNo/auth")
    @ManagerAuth
    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) {
        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);
            }
        }
        return R.ok().add(combParams);
    }
    @RequestMapping("/order/search/orderNo/auth/v2")
    @ManagerAuth(memo = "退库单获取")
    public R orderSearchByBarcodeV2(@RequestParam String orderNo){
        if (Cools.isEmpty(orderNo)){
            orderNo=null;
        }
        List<Order> orders = orderService.selectorderNoL(orderNo);
        if (Cools.isEmpty(orders)){
            return R.ok();
        }
        if (order.getSettle() > 2) {
            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 || !docType.getDocName().equals("退货入库单")) {
                    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){
                        if (orderDetl.getWorkQty()!=0){
                            continue;
                        }
                        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());
                        combMat.setWeight(orderDetl.getWeight());
                        combMats.add(combMat);
                    }
                    if (combMats.size()==0){
                        continue;
                    }
                    combParam.setCombMats(combMats);
                }
                combParam.setOrderNo(order.getOrderNo());
                combParams.add(combParam);
            }
        }
        List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
        if (Cools.isEmpty(orderDetls)) {
            return R.ok();
        return R.ok().add(combParams);
    }
    @RequestMapping("/wrkDetl/search/batch/auth")
    @ManagerAuth(memo = "出库确认获取信息")
    public R wrkDetlSearchByBatch(@RequestBody String batch){
        if (Cools.isEmpty(batch)){
            return R.error("参数为空");
        }
        return R.ok().add(orderDetls);
//        List<Order> orders = orderService.selectorderNoL(batch);
        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", batch));
        if (Cools.isEmpty(wrkDetl)){
            WrkDetlLog wrkDetlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>().eq("batch", batch));
            if (Cools.isEmpty(wrkDetlLog)){
                return R.error("未查到数据");
            }
            wrkDetl = new WrkDetl();
            wrkDetl.sync(wrkDetlLog);
            wrkDetl.setBatch(wrkDetlLog.getBatch());
            wrkDetl.setBarcode(wrkDetlLog.getBarcode());
            wrkDetl.setDeadTime(wrkDetlLog.getDeadTime());
        }
        if (Cools.isEmpty(wrkDetl)){
            return R.error("未查到数据");
        }
        return R.ok().add(wrkDetl);
    }
    @RequestMapping("/order/search/batch/auth")
    @ManagerAuth(memo = "出库确认")
    public R orderSearchByBatch(@RequestBody String batch){
        if (Cools.isEmpty(batch)){
            return R.error("参数为空");
        }
        String orderNo = "";
        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", batch));
        if (Cools.isEmpty(wrkDetl)) {
            WrkDetlLog wrkDetlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>().eq("batch", batch));
            if (Cools.isEmpty(wrkDetlLog)) {
                return R.error("未查到数据");
            }
            orderNo=wrkDetlLog.getOrderNo();
        }else {
            orderNo=wrkDetl.getOrderNo();
        }
//        List<Order> orders = orderService.selectorderNoL(batch);
        OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("batch", batch).eq("order_no",orderNo));
        if (Cools.isEmpty(orderDetl)){
            return R.error("未查到数据");
        }
        if (!orderDetl.getQty$().equals("已完成")){
            return R.error("任务未完成");
        }
        orderDetl.setSource(1);
        orderDetlService.updateById(orderDetl);
        return R.ok();
    }
    @RequestMapping("/truss/auth")
    @ManagerAuth(memo = "退库,1楼桁架退库")
    public R trussComb(@RequestBody TrussCombParam combParam){
        mobileService.trussComb(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/truss/order/auth")
    @ManagerAuth(memo = "退库,1楼桁架退库,退库单退库")
    public R trussCombOrder(@RequestBody TrussCombParam combParam){
        mobileService.trussCombOrder(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/truss/comd/auth")
    @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库")
    public R trussComb2(@RequestBody PalletizingCompleteParam combParam){
        mobileService.trussComb2(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/comb/auth")
@@ -151,6 +350,16 @@
            return R.ok().add(Cools.add("wrkNo", wrkMast.getWrkNo()).add("ioType", wrkMast.getIoType()).add("list", wrkDetls));
        }
        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));
    }
    /**
@@ -299,58 +508,14 @@
        return R.ok("盘点成功");
    }
    @PostMapping("/out/pakout/auth")
//    @ManagerAuth(memo = "根据订单出库")
    @PostMapping("/order/out/pakout/auth")
    @ManagerAuth(memo = "订单出库")
    public synchronized R pakoutByOrder(@RequestBody JSONObject param) {
        if(!param.containsKey("staNo") || !param.containsKey("orderNo")){
            return R.parse(BaseRes.PARAM);
        }
        Integer staNo = param.containsKey("staNo") ? Integer.parseInt(param.get("staNo").toString()) : 0;
        String orderNo = param.containsKey("orderNo") ? param.get("orderNo").toString() : "";
        BasDevp sta = basDevpService.checkSiteStatus(staNo);
        //根据订单号生成出库任务工作档,待实现
        List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
        for(OrderDetl orderDetl : orderDetls){
        }
//        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();
        mobileService.pakoutByOrder(param,getUserId());
        return R.ok("出库成功");
    }
}