自动化立体仓库 - WMS系统
#
zjj
5 天以前 4b6e6d95ae6fbbccc4351db366b99fa05288877f
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -11,7 +11,9 @@
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.OffSaleParam;
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;
@@ -21,6 +23,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -51,6 +54,26 @@
    private BasDevpService basDevpService;
    @Autowired
    private PackService packService;
    @Autowired
    private ManLocDetlMapper manLocDetlMapper;
    // 商品上架
    @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("下架成功");
    }
    // 组托 ----------------------------------------------------------------------------------------------------
@@ -73,16 +96,23 @@
            return R.ok();
        }
        List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
        if (Cools.isEmpty(orderDetls)) {
        ArrayList<OrderDetl> orderDetls2 = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls){
            orderDetl.setAnfme(new BigDecimal(orderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
            orderDetl.setWorkQty(new BigDecimal(orderDetl.getWorkQty()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
            orderDetl.setQty(new BigDecimal(orderDetl.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue());
            orderDetls2.add(orderDetl);
        }
        if (Cools.isEmpty(orderDetls) || Cools.isEmpty(orderDetls2)) {
            return R.ok();
        }
        return R.ok().add(orderDetls);
        return R.ok().add(orderDetls2);
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
//    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam){
        mobileService.comb(combParam, getUserId());
        mobileService.comb(combParam, 9527L);
        return R.ok("组托成功");
    }
@@ -102,7 +132,7 @@
    @RequestMapping("/pack/comb/auth")
    @ManagerAuth(memo = "下线组托")
    public R packComb(@RequestBody CombParam combParam){
        mobileService.packComb(combParam, getUserId());
//        mobileService.packComb(combParam, getUserId());
        return R.ok("组托成功");
    }
@@ -150,6 +180,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,49 +339,102 @@
    }
    @PostMapping("/order/out/pakout/auth")
//    @ManagerAuth(memo = "根据订单出库")
    @ManagerAuth(memo = "订单出库")
    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();
    //平库pda上架
    @RequestMapping("/manDetl/in")
    @ManagerAuth(memo = "订单上架")
    public R manDetlAdd(@RequestBody JSONObject json){
        if (json == null){
            return R.error("传入数据为空");
        }
        return mobileService.manDetlIn(json, getUser());
    }
    //平库pda下架
    @RequestMapping("/manDetl/out")
    @ManagerAuth(memo = "订单下架")
    public R manDetlDelete(@RequestBody JSONObject json){
        if (json == null){
            return R.error("传入数据为空");
        }
        return mobileService.manDetlOut(json , getUser());
    }
    @RequestMapping("/manDetl/barcode/out")
    @ManagerAuth(memo = "订单下架(托盘码)")
    public R barcodeDelete(@RequestBody JSONObject json){
        if (json == null){
            return R.error("传入数据为空");
        }
        return mobileService.barcodeDelete(json , getUser());
    }
    @RequestMapping("/manDetl/in/barcode")
    @ManagerAuth(memo = "订单上架(托盘码)")
    public R manDetlAddbarcode(@RequestBody JSONObject json){
        if (json == null){
            return R.error("传入数据为空");
        }
        return mobileService.manDetlInBarcode(json,getUser());
    }
    @RequestMapping("/piking/auth")
    @ManagerAuth
    @Transactional
    public R pikingAuth(String barcode) {
        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException(barcode + "暂无工作档");
        }
        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 107){
            throw new CoolException(barcode + "不为拣料/盘点出库");
        }
        if (wrkMast.getIoType() == 107){
            wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("zpallet",barcode));
            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
            for (LocDetl locDetl : locDetls) {
                String uuid = String.valueOf(System.currentTimeMillis());
                WrkDetl wrkDetl = new WrkDetl();
                Date now = new Date();
                wrkDetl.sync(locDetl);
                wrkDetl.setZpallet(wrkMast.getBarcode());
                wrkDetl.setIoTime(now);
                wrkDetl.setWrkNo(wrkMast.getWrkNo());
                wrkDetl.setBatch(locDetl.getBatch());
                wrkDetl.setOrderNo(locDetl.getOrderNo());
                wrkDetl.setAnfme(locDetl.getAnfme()); // 数量
                wrkDetl.setAppeTime(now);
                wrkDetl.setAppeUser(9527L);
                wrkDetl.setModiTime(now);
                wrkDetl.setModiUser(9527L);
                wrkDetl.setUuid(uuid);
                wrkDetl.setOwner(locDetl.getOwner());
                wrkDetl.setPayment(locDetl.getPayment());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
            }
        }
        wrkMast.setIoType(101);
        if (!wrkMastService.updateById(wrkMast)) {
            throw new CoolException("保存工作档失败,");
        }
        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
        locMast.setLocSts("R");
        if (!locMastService.updateById(locMast)) {
            throw new CoolException("预约库位状态失败,库位号:"+locMast.getLocNo());
        }
        return R.ok();
    }
}