自动化立体仓库 - WMS系统
zwl
7 天以前 b6681bc12173c1179d0185805ba461211472ac18
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -14,16 +14,23 @@
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
import com.zy.asrs.service.impl.OrderDetlPakoutServiceImpl;
import com.zy.asrs.service.impl.OrderPakinServiceImpl;
import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.common.model.WrkDto;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -61,6 +68,18 @@
    @Resource
    private StaDescService staDescService;
    @Autowired
    private OrderPakinServiceImpl orderPakinService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private OrderDetlPakinServiceImpl orderDetlPakinService;
    @Autowired
    private OrderPakoutServiceImpl orderPakoutService;
    @Autowired
    private OrderDetlPakoutServiceImpl orderDetlPakoutService;
    @Value("${wcs.url}")
    private String WCS_URL;
    @RequestMapping("/pda/WarehouseOut/v1")
    @ManagerAuth(memo = "并板途中拣料-参考念初")
@@ -209,48 +228,50 @@
    @RequestMapping("/order/search/orderNo/auth")
    @ManagerAuth
    public R orderSearchByBarcode(@RequestParam String orderNo){
        if (Cools.isEmpty(orderNo)){
            orderNo=null;
        }
//        List<Order> orders = orderService.selectorderNoL(orderNo);
        List<Order> orders = OrderInAndOutUtil.selectOrderNoL(null, orderNo);
        if (Cools.isEmpty(orders)){
        OrderPakin orderPakin = orderPakinService.selectByNo(orderNo);
        if (orderPakin == null) {
            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());
                List<OrderDetl> orderDetls = OrderInAndOutUtil.selectWorkingDetls(order.getPakinPakoutStatus$(), 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);
            }
        DocType docType = docTypeService.selectById(orderPakin.getDocType());
        if (docType.getPakin() != 1) {
            return R.ok();
        }
        return R.ok().add(combParams);
        List<OrderDetlPakin> orderDetlPakins = orderPakinService.selectWorkingDetls(orderPakin.getId());
        if (Cools.isEmpty(orderDetlPakins)) {
            return R.ok();
        }
        List<OrderDetlPakin> orderDetls1= new ArrayList<>();
        for (OrderDetlPakin orderDetl : orderDetlPakins) {
            if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){
                orderDetls1.add(orderDetl);
            }
        }
        return R.ok().add(orderDetls1);
    }
    @RequestMapping("/order/search/orderNo/out/auth")
    @ManagerAuth
    public R orderSearchByBarcodeOut(@RequestParam String orderNo){
        OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
        if (orderPakout == null) {
            return R.ok();
        }
        DocType docType = docTypeService.selectById(orderPakout.getDocType());
        List<OrderDetlPakout> orderDetlPakouts = orderPakoutService.selectWorkingDetls(orderPakout.getId());
        if (Cools.isEmpty(orderDetlPakouts)) {
            return R.ok();
        }
        List<OrderDetlPakout> orderDetls1= new ArrayList<>();
        for (OrderDetlPakout orderDetl : orderDetlPakouts) {
            if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){
                orderDetls1.add(orderDetl);
            }
        }
        return R.ok().add(orderDetls1);
    }
    @RequestMapping("/comb/auth")
@@ -377,7 +398,7 @@
    @RequestMapping("/pakout/confirm/pick/auth")
    @ManagerAuth
    public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
                                , @RequestParam(required = false) String matnr){
            , @RequestParam(required = false) String matnr){
        if (Cools.isEmpty(wrkNo)) {
            return R.ok();
        }
@@ -549,4 +570,165 @@
        return mobileService.callEmptyBinOutBound(locNo,size,getUserId());
    }
    /**
     * 空板回库或者拣料回库
     *
     * @param sourceStaNo
     * @param staNo
     * @return
     */
    @RequestMapping("/AGVStartReturn")
    public synchronized R AGVStartReturn(@RequestParam(required = false) String sourceStaNo
            , @RequestParam(required = false) String staNo
            , @RequestParam(required = false) String taskNo) {
        if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) {
            return R.error("源站点和托盘码不能为空");
        }
        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("source_sta_no", sourceStaNo).eq("barcode", staNo));
        if (tasks.size() > 0) {
            return R.error("该托盘="+staNo+"已经存在搬运任务,请不要重复下发");
        }
        String barcode = staNo.substring(0,1);
        if(barcode.equals("3")){
            taskNo = "307";
        }else if(barcode.equals("4")){
            taskNo = "402";
        }else if(barcode.equals("5")){
            taskNo = "401";
        }
        R r = R.ok();
        //生成AGV搬运出库任务
        // 保存工作档
        Task task = new Task();
        Date date = new Date();
        String TaskNo = 555555 + "aa" + date.getTime();
        task.setWrkNo((int) date.getTime())
                .setTaskNo(TaskNo)
                .setIoTime(date)
                .setWrkSts(301L) // 工作状态:301.任务下发
                .setIoType(3) // 入出库状态: 3.站到站  4.站到区域
                .setTaskType("agv")
                .setIoPri(10D)
                .setFullPlt("Y") // 满板:Y
                .setPicking("N") // 拣料
                .setExitMk("N")// 退出
                .setStaNo(taskNo)
                .setSourceStaNo(sourceStaNo)//agv取货站点
                .setEmptyMk("N")// 空板
                .setBarcode(staNo)// 托盘码
                .setLinkMis("N")
                .setAppeUser(9945L)
                .setAppeTime(date)
                .setModiUser(9945L)
                .setModiTime(date);
        if (!taskService.insert(task)) {
            throw new CoolException("保存工作档失败");
        }
        return r;
    }
    @RequestMapping("/orderIn")
    public synchronized R AGVOrderInReturn() {
        List<OrderPakin> settle = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("settle", 1, 2));
        List<String> list = new ArrayList<>();
        for (OrderPakin orderPakin : settle) {
            if (orderPakin.getSettle()==2){
                List<OrderDetlPakin> orderId = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderPakin.getId()));
                Boolean boo=true;
                for (OrderDetlPakin orderDetlPakin : orderId) {
                    if (orderDetlPakin.getAnfme()>orderDetlPakin.getWorkQty()){
                        boo=false;
                        break;
                    }
                }
                if (boo) {
                    settle.remove(orderPakin);
                }else {
                    list.add(orderPakin.getOrderNo());
                }
            }else {
                list.add(orderPakin.getOrderNo());
            }
        }
        return R.ok(list);
    }
    @RequestMapping("/orderOut")
    public synchronized R AGVOrderOutReturn() {
        List<OrderPakout> settle = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().in("settle", 1, 2).eq("doc_type",11));
        List<String> list = new ArrayList<>();
        for (OrderPakout orderPakout: settle) {
            if (orderPakout.getSettle()==2){
                List<OrderDetlPakout> orderId = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_id", orderPakout.getId()));
                Boolean boo=true;
                for (OrderDetlPakout orderDetlPakout: orderId) {
                    if (orderDetlPakout.getAnfme()>orderDetlPakout.getWorkQty()){
                        boo=false;
                        break;
                    }
                }
                if (boo) {
                    settle.remove(orderPakout);
                }else {
                    list.add(orderPakout.getOrderNo());
                }
            }else {
                list.add(orderPakout.getOrderNo());
            }
        }
        return R.ok(list);
    }
    /**
     * 输送线任务下发
     * @return
     */
    @RequestMapping("/toInSta")
    public synchronized R AGVOrderOutReturn(@RequestParam(required = false) Integer staNo) {
        BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staNo));
        if (Cools.isEmpty(devNo)) {
            return R.error("没有该站点");
        }
        //查看是否已经下发任务,或者已经有出库任务正在运行禁止给输送下下发任务
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().in("io_type", 101, 103).eq("wrk_sts",12));
        if (!Cools.isEmpty(wrkMast)) {
            return R.error("当前输送线有堆垛机正在作业禁止入库");
        }
        Integer wrkNo = 0;
        switch (staNo) {
            case 301: wrkNo = 9991; break;
            case 302: wrkNo = 9992; break;
            case 303: wrkNo = 9993; break;
            case 304: wrkNo = 9994; break;
            case 305: wrkNo = 9995; break;
            case 306: wrkNo = 9996; break;
            case 307: wrkNo = 9997; break;
        }
        try {
            HashMap<String,Object> hashMap=new HashMap<>();
            hashMap.put("staNo",staNo);
            hashMap.put("wrkNo",wrkNo);
            String response = new HttpHandler.Builder()
                    .setUri(WCS_URL)
                    .setPath("/open/toInSta")
                    .setJson(JSON.toJSONString(hashMap))
                    .build()
                    .doPost();
            JSONObject jsonObject = JSON.parseObject(response);
            if (jsonObject.getInteger("code").equals(200)) {
            } else {
                return  R.error(jsonObject.getString("msg"));
            }
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
        return R.ok(staNo);
    }
}