自动化立体仓库 - WMS系统
zwl
2025-12-17 29d3f24dc43df41103bc5f483bfc439494a80971
src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -22,6 +22,7 @@
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -90,6 +91,10 @@
    @Resource
    private MobileService mobileService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private OrderService orderService;
    // region MES接口
@@ -124,7 +129,8 @@
        } else {
            throw new CoolException("同步物料信息,生成入库单失败");
        }
        mesReturn.setSuccess("1");
        mesReturn.setMessage("");
        return mesReturn;
    }
@@ -189,20 +195,6 @@
            if (mat == null) {
                if (!matService.insert(newMat))
                    return -2;
            } else {
                JSONObject dbMemo = JSONObject.parseObject(mat.getMemo());
                dbMemo.remove("OrderNo");
                dbMemo.remove("qty");
                dbMemo.remove("ItemBarcode");
                JSONObject newMemo = JSONObject.parseObject(newMat.getMemo());
                newMemo.remove("OrderNo");
                newMemo.remove("qty");
                dbMemo.remove("ItemBarcode");
                if (!dbMemo.equals(newMemo)) {
                    newMat.setId(mat.getId());
                    if (!matService.updateById(newMat))
                        return -2;
                }
            }
        } else {
            return -1;
@@ -214,13 +206,12 @@
    /**
     * 物料同步入库单,按OrderNo生成多个订单
     *
     *
     * @param matRecvForm
     * @return
     */
    public int inBoundOrder_List(MesMatRecvForm matRecvForm){
    public int inBoundOrder_List(MesMatRecvForm matRecvForm) {
        long docType = 4;   // docType根据库类型确定
        long docType = 1;   // docType根据库类型确定  来料申请单
        long settle = 1;
        Date now = new Date();
@@ -232,8 +223,12 @@
            // 校验订单是否重复
            OrderPakin order = orderPakinService.selectByNo(entry.getKey());
            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
                return -1;
            // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
            if (!Cools.isEmpty(order)) {
                if (order.getSettle() > 1L) {
                    throw new CoolException(entry.getKey() + "正在出库,无法修改单据");
                }
                orderPakinService.remove(order.getId());
            }
            // 生成订单
@@ -243,52 +238,56 @@
            newMemo.put("operuser", matRecvForm.getOperuser());
            newMemo.put("itemdata", list);
            // 生成订单
            OrderPakin orderPakin = new OrderPakin();
            orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
            orderPakin.setOrderNo(entry.getKey());
            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
            orderPakin.setDocType(docType);
            orderPakin.setSettle(settle);
            orderPakin.setSettle(1L);
            orderPakin.setStatus(1);
            orderPakin.setCreateBy(defaultUserId);
            orderPakin.setCreateTime(now);
            orderPakin.setUpdateBy(defaultUserId);
            orderPakin.setUpdateTime(now);
            orderPakin.setMemo(newMemo.toJSONString());  //为领料入库完成反馈保存   JSONObject.toJSONString(matRecvForm)
            orderPakin.setMemo(JSONObject.toJSONString(newMemo));  //为出库完成反馈保存
            orderPakin.setPakinPakoutStatus(1);
            if (!orderPakinService.insert(orderPakin)) {
                log.error("MES保存入库订单主档失败");
                throw new CoolException("保存入库订单主档失败");
            }
            orderPakinService.insert(orderPakin);
            if (list != null && !list.isEmpty()) {
                for (MesMatInfo mesMatInfo : list) {
            // 生成明细
            for (MesMatInfo mesMat : list) {
                Mat mat = matService.selectByMatnr(mesMat.getItemNo());
                OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
                orderDetlPakin.setOrderId(orderPakin.getId());
                orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
                orderDetlPakin.setAnfme(Double.valueOf(mesMat.getQty()));
                orderDetlPakin.setQty(0.0);
                orderDetlPakin.setMatnr(mat.getMatnr());
                orderDetlPakin.setMaktx(mat.getMaktx());
                orderDetlPakin.setSpecs(mat.getSpecs());
                orderDetlPakin.setModel(mat.getModel());
                orderDetlPakin.setStandby1(JSONObject.toJSONString(mesMat.getItemBarcode()));   // 零件二维码
                orderDetlPakin.setStandby2("1");  //保存齐套性检查标识,1 检查;0 不检查;
                orderDetlPakin.setCreateBy(defaultUserId);
                orderDetlPakin.setCreateTime(now);
                orderDetlPakin.setUpdateBy(defaultUserId);
                orderDetlPakin.setUpdateTime(now);
                orderDetlPakin.setStatus(1);
                orderDetlPakin.setPakinPakoutStatus(1);
                if (!orderDetlPakinService.insert(orderDetlPakin)) {
                    log.error("MES保存入库订单明细档失败1");
                    throw new CoolException("保存入库订单明细档失败1");
                    // 生成明细
                    Mat mat = matService.selectByMatnr(mesMatInfo.getItemNo());
                    if(Cools.isEmpty(mat)){
                        log.error("该物料编号立库没有="+mesMatInfo.getItemNo());
                        continue;
                    }
                    OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
                    orderDetlPakin.setOrderId(orderPakin.getId());
                    orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
                    orderDetlPakin.setAnfme(Double.valueOf(mesMatInfo.getQty()));
                    orderDetlPakin.setQty(0.0);
                    orderDetlPakin.setMatnr(mat.getMatnr());
                    orderDetlPakin.setMaktx(mat.getMaktx());
                    orderDetlPakin.setSpecs(mat.getSpecs());
                    orderDetlPakin.setModel(mat.getModel());
//                    orderDetlPakin.setThreeCode(mesOutApplyItem.getItemBarcode());
//                    orderDetlPakin.setStandby1(mesOutApplyItem.getTrayid());   //保存配盘号,非托盘号
                    orderDetlPakin.setStandby2("0");  //保存齐套性检查标识,1 检查;0 不检查;
                    orderDetlPakin.setCreateBy(defaultUserId);
                    orderDetlPakin.setCreateTime(now);
                    orderDetlPakin.setUpdateBy(defaultUserId);
                    orderDetlPakin.setUpdateTime(now);
                    orderDetlPakin.setStatus(1);
                    orderDetlPakin.setPakinPakoutStatus(1);
                    orderDetlPakinService.insert(orderDetlPakin);
                }
            }
        }
        return 1;
    }
    /**
@@ -348,9 +347,9 @@
            String url = MES_URL + "MaterialReceiptAndReturn";
            String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesRecvFeedback));
            if (!StringUtils.isEmpty(response) && response.contains("Success")){
            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                if("1".equals(mesReturn.getSuccess())) {
                if ("1".equals(mesReturn.getSuccess())) {
                    return 1;
                }
            }
@@ -367,137 +366,137 @@
     * @param mesOutApply
     * @return 1 成功;-1 订单重复;
     */
    public int outBoundOrder(MesOutApply mesOutApply){
    public int outBoundOrder(MesOutApply mesOutApply) {
        // 空托出库
        if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
            // 生成空托出库任务
            mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1,"1",defaultUserId);
            try {
                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
                    TransTask transTask = new TransTask();
                    transTask.setTaskno(mesOutApply.getTaskno());
                    transTask.setTaskname(mesOutApply.getTaskname());
                    transTask.setOrderNo(mesOutApply.getOrderNo());
                    transTask.setTransType(mesOutApply.getTransType());
                    transTask.setCurStationId(WMS_TRANS_START_STATION_1);
                    transTask.setNextProcess(mesOutApply.getProductLineId());
                    transTask.setNextStationId(mesOutApply.getStationId());
                    transTask.setItemno(WMS_ZPALLET_ID);  // 固定为空托的编码
                    transTask.setQty(1);    // 空托只出1个
                    transTask.setProductLineId(mesOutApply.getProductLineId());
                    transTask.setOperateType(1);
                    transTask.setAgvFactory(1);
                    JSONObject sendAgvTask = submitTask(transTask);
                    if (!"1".equals(sendAgvTask.getString("Success"))) {
                        log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask));
                    }
                }
            } catch (Exception e) {
                log.error("下发AGV运输任务失败", e);
            }
            return 1;
        } else {    // 毛坯(物料)出库
            // docType根据库类型确定
            long docType = 7;
            long settle = 1;
            // 校验订单是否重复
            OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
                log.error("出库订单号重复:{}",mesOutApply.getOrderNo());
                return -1;
            }
            // 生成订单
            Date now = new Date();
            OrderPakout orderPakout = new OrderPakout();
            orderPakout.setUuid( String.valueOf(snowflakeIdWorker.nextId()));
            orderPakout.setOrderNo(mesOutApply.getOrderNo());
            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
            orderPakout.setDocType(docType);
            orderPakout.setSettle(settle);
            orderPakout.setStatus(1);
            orderPakout.setCreateBy(defaultUserId);
            orderPakout.setCreateTime(now);
            orderPakout.setUpdateBy(defaultUserId);
            orderPakout.setUpdateTime(now);
            orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
            orderPakout.setPakinPakoutStatus(2);
            if (!orderPakoutService.insert(orderPakout)) {
                log.error("MES保存出库订单主档失败");
                throw new CoolException("保存出库订单主档失败");
            }
            // 生成明细
            Mat mat = matService.selectByMatnr(mesOutApply.getItemno());
            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
            orderDetlPakout.setOrderId(orderPakout.getId());
            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
            orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
            orderDetlPakout.setQty(0.0);
            orderDetlPakout.setMatnr(mat.getMatnr());
            orderDetlPakout.setMaktx(mat.getMaktx());
            orderDetlPakout.setSpecs(mat.getSpecs());
            orderDetlPakout.setModel(mat.getModel());
            orderDetlPakout.setStandby1(barCodeListToStr(mesOutApply.getItemBarcode()));
            orderDetlPakout.setCreateBy(defaultUserId);
            orderDetlPakout.setCreateTime(now);
            orderDetlPakout.setUpdateBy(defaultUserId);
            orderDetlPakout.setUpdateTime(now);
            orderDetlPakout.setStatus(1);
            orderDetlPakout.setPakinPakoutStatus(2);
            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
                log.error("MES保存出库订单明细档失败");
                throw new CoolException("保存出库订单明细档失败");
            }
            // TODO:若AGV和输送线没有安全交互,则要保证立库出货完成后再呼叫AGV。
            // 立库生成订单后,自动调度AGV运送到站点,目前多托生成多个。
            try {
                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
                    // 按零件二维码查询有几个托,多托生成多个任务,每托对应零件二维码
                    String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
                    EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
                    matItemBarcodeEntityWrapper.in("item_barcode", barCode);
                    List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
                     if (barcodes != null) {
                        Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
                        for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
                            List<MatItemBarcode> list = entry.getValue();
                            List<String> codes = new ArrayList<>();
                            for (MatItemBarcode zapllet : list) {
                                codes.add(zapllet.getItemBarcode());
                            }
                            TransTask transTask = new TransTask();
                            transTask.setTaskno(mesOutApply.getTaskno());
                            transTask.setTaskname(mesOutApply.getTaskname());
                            transTask.setOrderNo(mesOutApply.getOrderNo());
                            transTask.setTransType(mesOutApply.getTransType());
                            transTask.setCurStationId(WMS_TRANS_START_STATION_3);
                            transTask.setNextProcess(mesOutApply.getProductLineId());
                            transTask.setNextStationId(mesOutApply.getStationId());
                            transTask.setItemno(mesOutApply.getItemno());
                            transTask.setQty(list.size());
                            transTask.setProductLineId(mesOutApply.getProductLineId());
                            transTask.setItemBarcode(codes);
                            transTask.setTuoPanId(entry.getKey());
                            transTask.setOperateType(1);
                            transTask.setAgvFactory(1);
                            JSONObject sendAgvTask = submitTask(transTask);
                            if (!"1".equals(sendAgvTask.getString("Success"))) {
                                log.error("出库下发agv运输任务失败", JSONObject.toJSONString(transTask));
                            }
                        }
                    }
                }
            } catch (Exception e) {
                log.error("下发AGV运输任务失败", e);
            }
        }
//        // 空托出库
//        if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
//            // 生成空托出库任务
//            mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1, "1", defaultUserId);
//
//            try {
//                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
//                    TransTask transTask = new TransTask();
//                    transTask.setTaskno(mesOutApply.getTaskno());
//                    transTask.setTaskname(mesOutApply.getTaskname());
//                    transTask.setOrderNo(mesOutApply.getOrderNo());
//                    transTask.setTransType(mesOutApply.getTransType());
//                    transTask.setCurStationId(WMS_TRANS_START_STATION_1);
//                    transTask.setNextProcess(mesOutApply.getProductLineId());
//                    transTask.setNextStationId(mesOutApply.getStationId());
//                    transTask.setItemno(WMS_ZPALLET_ID);  // 固定为空托的编码
//                    transTask.setQty(1);    // 空托只出1个
//                    transTask.setProductLineId(mesOutApply.getProductLineId());
//                    transTask.setOperateType(1);
//                    transTask.setAgvFactory(1);
//                    JSONObject sendAgvTask = submitTask(transTask);
//                    if (!"1".equals(sendAgvTask.getString("Success"))) {
//                        log.error("出库下发agv运输任务失败:{}", JSONObject.toJSONString(transTask));
//                    }
//                }
//            } catch (Exception e) {
//                log.error("下发AGV运输任务失败", e);
//            }
//
//            return 1;
//        } else {    // 毛坯(物料)出库
//            // docType根据库类型确定
//            long docType = 7;
//            long settle = 1;
//
//            // 校验订单是否重复
//            OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
//            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
//                log.error("出库订单号重复:{}", mesOutApply.getOrderNo());
//                return -1;
//            }
//
//            // 生成订单
//            Date now = new Date();
//            OrderPakout orderPakout = new OrderPakout();
//            orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
//            orderPakout.setOrderNo(mesOutApply.getOrderNo());
//            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
//            orderPakout.setDocType(docType);
//            orderPakout.setSettle(settle);
//            orderPakout.setStatus(1);
//            orderPakout.setCreateBy(defaultUserId);
//            orderPakout.setCreateTime(now);
//            orderPakout.setUpdateBy(defaultUserId);
//            orderPakout.setUpdateTime(now);
//            orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
//            orderPakout.setPakinPakoutStatus(2);
//            if (!orderPakoutService.insert(orderPakout)) {
//                log.error("MES保存出库订单主档失败");
//                throw new CoolException("保存出库订单主档失败");
//            }
//
//            // 生成明细
//            Mat mat = matService.selectByMatnr(mesOutApply.getItemno());
//            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
//            orderDetlPakout.setOrderId(orderPakout.getId());
//            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
//            orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
//            orderDetlPakout.setQty(0.0);
//            orderDetlPakout.setMatnr(mat.getMatnr());
//            orderDetlPakout.setMaktx(mat.getMaktx());
//            orderDetlPakout.setSpecs(mat.getSpecs());
//            orderDetlPakout.setModel(mat.getModel());
//            orderDetlPakout.setStandby1(barCodeListToStr(mesOutApply.getItemBarcode()));
//            orderDetlPakout.setCreateBy(defaultUserId);
//            orderDetlPakout.setCreateTime(now);
//            orderDetlPakout.setUpdateBy(defaultUserId);
//            orderDetlPakout.setUpdateTime(now);
//            orderDetlPakout.setStatus(1);
//            orderDetlPakout.setPakinPakoutStatus(2);
//            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
//                log.error("MES保存出库订单明细档失败");
//                throw new CoolException("保存出库订单明细档失败");
//            }
//
//            // TODO:若AGV和输送线没有安全交互,则要保证立库出货完成后再呼叫AGV。
//            // 立库生成订单后,自动调度AGV运送到站点,目前多托生成多个。
//            try {
//                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
//                    // 按零件二维码查询有几个托,多托生成多个任务,每托对应零件二维码
//                    String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
//                    EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
//                    matItemBarcodeEntityWrapper.in("item_barcode", barCode);
//                    List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
//                    if (barcodes != null) {
//                        Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
//                        for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
//                            List<MatItemBarcode> list = entry.getValue();
//                            List<String> codes = new ArrayList<>();
//                            for (MatItemBarcode zapllet : list) {
//                                codes.add(zapllet.getItemBarcode());
//                            }
//
//                            TransTask transTask = new TransTask();
//                            transTask.setTaskno(mesOutApply.getTaskno());
//                            transTask.setTaskname(mesOutApply.getTaskname());
//                            transTask.setOrderNo(mesOutApply.getOrderNo());
//                            transTask.setTransType(mesOutApply.getTransType());
//                            transTask.setCurStationId(WMS_TRANS_START_STATION_3);
//                            transTask.setNextProcess(mesOutApply.getProductLineId());
//                            transTask.setNextStationId(mesOutApply.getStationId());
//                            transTask.setItemno(mesOutApply.getItemno());
//                            transTask.setQty(list.size());
//                            transTask.setProductLineId(mesOutApply.getProductLineId());
//                            transTask.setItemBarcode(codes);
//                            transTask.setTuoPanId(entry.getKey());
//                            transTask.setOperateType(1);
//                            transTask.setAgvFactory(1);
//                            JSONObject sendAgvTask = submitTask(transTask);
//                            if (!"1".equals(sendAgvTask.getString("Success"))) {
//                                log.error("出库下发agv运输任务失败", JSONObject.toJSONString(transTask));
//                            }
//                        }
//                    }
//                }
//            } catch (Exception e) {
//                log.error("下发AGV运输任务失败", e);
//            }
//        }
        return 1;
    }
@@ -509,33 +508,33 @@
     * @param mesInApply
     */
    @Transactional
    public int inBoundOrder(MesInApply mesInApply){
    public int inBoundOrder(MesInApply mesInApply) {
        // 空托回库
        if (StringUtils.isEmpty(mesInApply.getOrderNo()) && StringUtils.isEmpty(mesInApply.getItemno())) {
                if (!StringUtils.isEmpty(mesInApply.getTaskno()) && !StringUtils.isEmpty(mesInApply.getStationID())) {
                    TransTask transTask = new TransTask();
                    transTask.setTaskno(mesInApply.getTaskno());
                    transTask.setTaskname(mesInApply.getTaskname());
                    transTask.setOrderNo(mesInApply.getOrderNo());
                    transTask.setTransType(mesInApply.getTransType());
                    transTask.setCurProcess(mesInApply.getProductLineId());
                    transTask.setCurStationId(mesInApply.getStationID());
                    transTask.setNextStationId(WMS_TRANS_START_STATION_2);
                    transTask.setItemno(WMS_ZPALLET_ID);  // 固定为空托的编码
                    transTask.setQty(1);    // 空托只回1个
                    transTask.setProductLineId(mesInApply.getProductLineId());
                    transTask.setOperateType(1);
                    transTask.setAgvFactory(1);
                    JSONObject sendAgvTask = submitTask(transTask);
                    if (!"1".equals(sendAgvTask.getString("Success"))) {
                        log.error("出库下发agv运输任务失败,{}", JSONObject.toJSONString(transTask));
                        return 2;
                    }
                } else {
                    log.error("无任务号:{},或无物料编码:{}",mesInApply.getTaskno(),mesInApply.getItemno() );
            if (!StringUtils.isEmpty(mesInApply.getTaskno()) && !StringUtils.isEmpty(mesInApply.getStationID())) {
                TransTask transTask = new TransTask();
                transTask.setTaskno(mesInApply.getTaskno());
                transTask.setTaskname(mesInApply.getTaskname());
                transTask.setOrderNo(mesInApply.getOrderNo());
                transTask.setTransType(mesInApply.getTransType());
                transTask.setCurProcess(mesInApply.getProductLineId());
                transTask.setCurStationId(mesInApply.getStationID());
                transTask.setNextStationId(WMS_TRANS_START_STATION_2);
                transTask.setItemno(WMS_ZPALLET_ID);  // 固定为空托的编码
                transTask.setQty(1);    // 空托只回1个
                transTask.setProductLineId(mesInApply.getProductLineId());
                transTask.setOperateType(1);
                transTask.setAgvFactory(1);
                JSONObject sendAgvTask = submitTask(transTask);
                if (!"1".equals(sendAgvTask.getString("Success"))) {
                    log.error("出库下发agv运输任务失败,{}", JSONObject.toJSONString(transTask));
                    return 2;
                }
            } else {
                log.error("无任务号:{},或无物料编码:{}", mesInApply.getTaskno(), mesInApply.getItemno());
                return 2;
            }
            return 1;
        } else {    // 毛坯、成品回库
@@ -716,9 +715,9 @@
            String url = MES_URL + "issueComplete";
            String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
            if (!StringUtils.isEmpty(response) && response.contains("Success")){
            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                if("1".equals(mesReturn.getSuccess())) {
                if ("1".equals(mesReturn.getSuccess())) {
                    success = 1;
                }
            }
@@ -759,9 +758,9 @@
            String url = MES_URL + "loadComplete";
            String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
            if (!StringUtils.isEmpty(response) && response.contains("Success")){
            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                if("1".equals(mesReturn.getSuccess())) {
                if ("1".equals(mesReturn.getSuccess())) {
                    success = 1;
                }
            }
@@ -819,9 +818,9 @@
                    String url = MES_URL + "loadComplete";
                    String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
                    if (!StringUtils.isEmpty(response) && response.contains("Success")){
                    if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                        MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                        if("1".equals(mesReturn.getSuccess())) {
                        if ("1".equals(mesReturn.getSuccess())) {
                            success++;
                        }
                    }
@@ -885,9 +884,9 @@
                    String url = MES_URL + "issueComplete";
                    String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
                    if (!StringUtils.isEmpty(response) && response.contains("Success")){
                    if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                        MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                        if("1".equals(mesReturn.getSuccess())) {
                        if ("1".equals(mesReturn.getSuccess())) {
                            success++;
                        }
                    }
@@ -934,67 +933,144 @@
     * @param mesCallOutApply
     * @return
     */
    public int callOutBoundOrder(MesCallOutApply mesCallOutApply){
        // docType根据库类型确定
        long docType = 7;
        long settle = 1;
        // 校验订单是否重复
        OrderPakout order = orderPakoutService.selectByNo(mesCallOutApply.getOrderNo());
        if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
            return -1;
    public int callOutBoundOrder(MesCallOutApply mesCallOutApply) {
        DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", mesCallOutApply.getTransType()));
        if (docType == null) {
            return 0;
        }
        //生成出库单
        if (docType.getPakout() == 1) {
            long settle = 1;
        // 生成订单
        Date now = new Date();
        OrderPakout orderPakout = new OrderPakout();
        orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
        orderPakout.setOrderNo(mesCallOutApply.getOrderNo());
        orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
        orderPakout.setDocType(docType);
        orderPakout.setSettle(settle);
        orderPakout.setStatus(1);
        orderPakout.setCreateBy(defaultUserId);
        orderPakout.setCreateTime(now);
        orderPakout.setUpdateBy(defaultUserId);
        orderPakout.setUpdateTime(now);
        orderPakout.setMemo(JSONObject.toJSONString(mesCallOutApply));
        orderPakout.setPakinPakoutStatus(2);
        if (!orderPakoutService.insert(orderPakout)) {
            log.error("MES保存出库订单(叫料)主档失败");
            throw new CoolException("保存出库订单(叫料)主档失败");
        }
            // 校验订单是否重复
            OrderPakout order = orderPakoutService.selectByNo(mesCallOutApply.getOrderNo());
            // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
            if (!Cools.isEmpty(order)) {
                if (order.getSettle() > 1L) {
                    throw new CoolException(mesCallOutApply.getOrderNo() + "正在出库,无法修改单据");
                }
                orderPakoutService.remove(order.getId());
            }
        // 生成明细
        if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
            for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()) {
                Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
                OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
                orderDetlPakout.setOrderId(orderPakout.getId());
                orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
                orderDetlPakout.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
                orderDetlPakout.setQty(0.0);
                orderDetlPakout.setMatnr(mat.getMatnr());
                orderDetlPakout.setMaktx(mat.getMaktx());
                orderDetlPakout.setSpecs(mat.getSpecs());
                orderDetlPakout.setModel(mat.getModel());
                orderDetlPakout.setThreeCode(mesOutApplyItem.getItemBarcode());
                orderDetlPakout.setStandby1(mesOutApplyItem.getTrayid());   //保存配盘号,非托盘号
                orderDetlPakout.setCreateBy(defaultUserId);
                orderDetlPakout.setCreateTime(now);
                orderDetlPakout.setUpdateBy(defaultUserId);
                orderDetlPakout.setUpdateTime(now);
                orderDetlPakout.setStatus(1);
                orderDetlPakout.setPakinPakoutStatus(2);
                if (!orderDetlPakoutService.insert(orderDetlPakout)) {
                    log.error("MES保存出库订单(叫料)明细档失败");
                    throw new CoolException("保存出库订单(叫料)明细档失败");
            // 生成订单
            Date now = new Date();
            OrderPakout orderPakout = new OrderPakout();
            orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
            orderPakout.setOrderNo(mesCallOutApply.getOrderNo());
            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
            orderPakout.setDocType(docType.getDocId());
            orderPakout.setSettle(settle);
            orderPakout.setStatus(1);
            orderPakout.setCreateBy(defaultUserId);
            orderPakout.setCreateTime(now);
            orderPakout.setUpdateBy(defaultUserId);
            orderPakout.setUpdateTime(now);
            orderPakout.setMemo(JSONObject.toJSONString(mesCallOutApply));
            orderPakout.setPakinPakoutStatus(2);
            if (!orderPakoutService.insert(orderPakout)) {
                log.error("MES保存出库订单(叫料)主档失败");
                throw new CoolException("保存出库订单(叫料)主档失败");
            }
            Set<String> set = new HashSet<>();
            // 生成明细
            if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
                for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()) {
                    set.add(mesOutApplyItem.getTrayid());
                    Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
                    OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
                    orderDetlPakout.setOrderId(orderPakout.getId());
                    orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
                    orderDetlPakout.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
                    orderDetlPakout.setQty(0.0);
                    orderDetlPakout.setMatnr(mat.getMatnr());
                    orderDetlPakout.setMaktx(mat.getMaktx());
                    orderDetlPakout.setSpecs(mat.getSpecs());
                    orderDetlPakout.setModel(mat.getModel());
                    orderDetlPakout.setThreeCode(mesOutApplyItem.getItemBarcode());
                    orderDetlPakout.setStandby1(mesOutApplyItem.getTrayid());   //保存配盘号,非托盘号
                    orderDetlPakout.setCreateBy(defaultUserId);
                    orderDetlPakout.setCreateTime(now);
                    orderDetlPakout.setUpdateBy(defaultUserId);
                    orderDetlPakout.setUpdateTime(now);
                    orderDetlPakout.setStatus(1);
                    orderDetlPakout.setPakinPakoutStatus(2);
                    if (!orderDetlPakoutService.insert(orderDetlPakout)) {
                        log.error("MES保存出库订单(叫料)明细档失败");
                        throw new CoolException("保存出库订单(叫料)明细档失败");
                    }
                }
            }
            //有多少种不同的配盘号   只有配盘出库单需要知道
            if (mesCallOutApply.getTransType().equals("配盘出库单")){
                orderPakout.setPayType(set.size());
                String shipCode =mesCallOutApply.getItemdata().get(0).getTrayid().split("-")[2];
                orderPakout.setShipCode(shipCode);//区域  是否是特殊托盘
                orderPakoutService.updateById(orderPakout);
            }
            return 1;
        } else {
            // 校验订单是否重复
            OrderPakin order = orderPakinService.selectByNo(mesCallOutApply.getOrderNo());
            // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
            if (!Cools.isEmpty(order)) {
                if (order.getSettle() > 1L) {
                    throw new CoolException(mesCallOutApply.getOrderNo() + "正在出库,无法修改单据");
                }
                orderPakinService.remove(order.getId());
            }
            // 生成订单
            Date now = new Date();
            OrderPakin orderPakin = new OrderPakin();
            orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
            orderPakin.setOrderNo(mesCallOutApply.getOrderNo());
            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
            orderPakin.setDocType(docType.getDocId());
            orderPakin.setSettle(1L);
            orderPakin.setStatus(1);
            orderPakin.setCreateBy(defaultUserId);
            orderPakin.setCreateTime(now);
            orderPakin.setUpdateBy(defaultUserId);
            orderPakin.setUpdateTime(now);
            orderPakin.setMemo(JSONObject.toJSONString(mesCallOutApply));  //为出库完成反馈保存
            orderPakin.setPakinPakoutStatus(1);
            orderPakinService.insert(orderPakin);
            if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
                for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()){
                    // 生成明细
                    Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
                    if(Cools.isEmpty(mat)){
                        log.error("该物料编号立库没有="+mesOutApplyItem.getItemno());
                        continue;
                    }
                    OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
                    orderDetlPakin.setOrderId(orderPakin.getId());
                    orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
                    orderDetlPakin.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
                    orderDetlPakin.setQty(0.0);
                    orderDetlPakin.setMatnr(mat.getMatnr());
                    orderDetlPakin.setMaktx(mat.getMaktx());
                    orderDetlPakin.setSpecs(mat.getSpecs());
                    orderDetlPakin.setModel(mat.getModel());
                    orderDetlPakin.setThreeCode(mesOutApplyItem.getItemBarcode());
                    orderDetlPakin.setStandby1(mesOutApplyItem.getTrayid());   //保存配盘号,非托盘号
                    orderDetlPakin.setStandby2("0");  //保存齐套性检查标识,1 检查;0 不检查;
                    orderDetlPakin.setCreateBy(defaultUserId);
                    orderDetlPakin.setCreateTime(now);
                    orderDetlPakin.setUpdateBy(defaultUserId);
                    orderDetlPakin.setUpdateTime(now);
                    orderDetlPakin.setStatus(1);
                    orderDetlPakin.setPakinPakoutStatus(1);
                    orderDetlPakinService.insert(orderDetlPakin);
                }
            }
            return 1;
        }
        return 1;
    }
    // endregion
@@ -1046,18 +1122,18 @@
        rcsTaskSubmit.setTargetRoute(targetRouteList);
        // 转发给海康或华晓RCS
//        int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
        int success = 1;
        int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
        if (success == 1) {
            int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);
            Date now = new Date();
            Task task = new Task();
            task.setWrkNo(workNo);
            task.setTaskType("AGV");
            task.setWrkSts(301L);
            task.setIoType(3);
            task.setTaskType("ZX-AGV");
            task.setWrkSts(302L);//302.AGV任务执行中
            task.setIoType(3);//3.站到站
            task.setIoPri(10.00);
            task.setWrkDate(now);
            task.setBarcode(transTask.getBarcode());
            task.setSourceStaNo(transTask.getCurStationId());
            task.setStaNo(transTask.getNextStationId());
            task.setBarcode(transTask.getTuoPanId());
@@ -1067,25 +1143,27 @@
            task.setAppeTime(now);
            task.setTaskNo(transTask.getTaskno());
            task.setMemo(JSONObject.toJSONString(transTask));
            task.setPltType(transTask.getAgvFactory());//华晓AGV
            task.setPacked(transTask.getRackNumber());//料架号
            taskService.insert(task);
            Mat mat = matService.selectByMatnr(transTask.getItemno());
            TaskDetl taskDetl = new TaskDetl();
            taskDetl.setWrkNo(task.getWrkNo());
            taskDetl.setIoTime(task.getIoTime());
            taskDetl.setMatnr(transTask.getItemno());
            taskDetl.setAnfme(0.0);
            taskDetl.setStandby1(String.valueOf(transTask.getQty()));
            taskDetl.setMaktx(mat.getMaktx());
            taskDetl.setSpecs(mat.getSpecs());
            taskDetl.setOrderNo(transTask.getOrderNo());
            taskDetl.setZpallet(transTask.getTuoPanId());
            taskDetl.setMemo(JSONObject.toJSONString(transTask.getItemBarcode()));
            taskDetl.setModiUser(defaultUserId);
            taskDetl.setModiTime(now);
            taskDetl.setAppeUser(defaultUserId);
            taskDetl.setAppeTime(now);
            taskDetlService.insert(taskDetl);
//            Mat mat = matService.selectByMatnr(transTask.getItemno());
//            TaskDetl taskDetl = new TaskDetl();
//            taskDetl.setWrkNo(task.getWrkNo());
//            taskDetl.setIoTime(task.getIoTime());
//            taskDetl.setMatnr(transTask.getItemno());
//            taskDetl.setAnfme(0.0);
//            taskDetl.setStandby1(String.valueOf(transTask.getQty()));
//            taskDetl.setMaktx(mat.getMaktx());
//            taskDetl.setSpecs(mat.getSpecs());
//            taskDetl.setOrderNo(transTask.getOrderNo());
//            taskDetl.setZpallet(transTask.getTuoPanId());
//            taskDetl.setMemo(JSONObject.toJSONString(transTask.getItemBarcode()));
//            taskDetl.setModiUser(defaultUserId);
//            taskDetl.setModiTime(now);
//            taskDetl.setAppeUser(defaultUserId);
//            taskDetl.setAppeTime(now);
//            taskDetlService.insert(taskDetl);
            result.put("Success", "1");
            result.put("Message", "任务接收成功");
        } else {
@@ -1125,9 +1203,9 @@
            String url = MES_URL + "api/task/reporter";
            String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(transTaskFeedback));
            if (!StringUtils.isEmpty(response) && response.contains("Success")){
            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
                if("1".equals(mesReturn.getSuccess())) {
                if ("1".equals(mesReturn.getSuccess())) {
                    return 1;
                }
            }
@@ -1146,9 +1224,9 @@
        String url = MES_URL + "api/apply/inLine";
        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
        if (!StringUtils.isEmpty(response) && response.contains("Success")){
        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
            JSONObject jsonObject = JSONObject.parseObject(response);
            if("1".equals(jsonObject.getString("Success"))) {
            if ("1".equals(jsonObject.getString("Success"))) {
                return jsonObject.getJSONObject("Data").getString("status");
            }
        }
@@ -1163,12 +1241,12 @@
     * @return
     */
    public int applyInStation(TransParent apply) {
        String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "AprsAGVTransportPalletNotice";
        String path = "AGVTransportPalletNotice";
        String url = MES_URL + path;
        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
        if (!StringUtils.isEmpty(response) && response.contains("Success")){
        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
            if("1".equals(mesReturn.getSuccess())) {
            if ("1".equals(mesReturn.getSuccess())) {
                return 1;
            }
        }
@@ -1185,19 +1263,34 @@
    public MesReturn allowInStation(TransInOutStationAllow allow) {
        MesReturn mesReturn = new MesReturn();
        mesReturn.setSuccess("1");
        mesReturn.setSuccess("2");
        if ("Y".equals(allow.getStatus())) {
            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
            rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
            rcsTaskContinue.setTriggerType("TASK");
            rcsTaskContinue.setTriggerCode(allow.getTaskno());
            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
            if (Cools.isEmpty(task)) {
                mesReturn.setMessage("没有找个该任务编号=" + allow.getTaskno() + "的AGV移动任务");
            } else {
                //查看申请站点的是海康还是华晓
                //海康
                if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1) {
                    RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
                    rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
                    rcsTaskContinue.setTriggerType("TASK");
                    rcsTaskContinue.setTriggerCode(allow.getTaskno());
//            rcsTaskContinue.setTriggerType("ROBOT");
//            rcsTaskContinue.setTriggerCode(allow.getAgvCode());
            int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
            mesReturn.setSuccess(success == 1 ? "1" : "2");
            mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                    int success = rcsService.continueTask(rcsTaskContinue, 1);
                    mesReturn.setSuccess(success == 1 ? "1" : "2");
                    mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                } else {
                    allow.setMethod("APPLY_IN_STATION");
                    int success = rcsService.continueTask(allow, 2);
                    mesReturn.setSuccess(success == 1 ? "1" : "2");
                    mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                }
            }
        }
        return mesReturn;
@@ -1219,9 +1312,9 @@
        String url = MES_URL + "AGVArrivalCompleted";
        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(arrivalStation));
        if (!StringUtils.isEmpty(response) && response.contains("Success")){
        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
            if("1".equals(mesReturn.getSuccess())) {
            if ("1".equals(mesReturn.getSuccess())) {
                return 1;
            }
        }
@@ -1237,11 +1330,11 @@
     */
    public int applyOutStation(TransParent apply) {
        String url = MES_URL + "api/apply/outStation";
        String url = MES_URL + "AGVDepartureRequest";
        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
        if (!StringUtils.isEmpty(response) && response.contains("Success")){
        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
            if("1".equals(mesReturn.getSuccess())) {
            if ("1".equals(mesReturn.getSuccess())) {
                return 1;
            }
        }
@@ -1258,17 +1351,34 @@
    public MesReturn allowOutStation(TransInOutStationAllow allow) {
        MesReturn mesReturn = new MesReturn();
        mesReturn.setSuccess("1");
        mesReturn.setSuccess("2");
        if ("Y".equals(allow.getStatus())) {
            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
            rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
            rcsTaskContinue.setTriggerType("TASK");
            rcsTaskContinue.setTriggerCode(allow.getTaskno());
            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
            if (Cools.isEmpty(task)) {
                mesReturn.setMessage("没有找个该任务编号=" + allow.getTaskno() + "的AGV移动任务");
            } else {
                //查看申请站点的是海康还是华晓
                //海康
                if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1) {
                    RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
                    rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
                    rcsTaskContinue.setTriggerType("TASK");
                    rcsTaskContinue.setTriggerCode(allow.getTaskno());
//            rcsTaskContinue.setTriggerType("ROBOT");
//            rcsTaskContinue.setTriggerCode(allow.getAgvCode());
            int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
            mesReturn.setSuccess(success == 1 ? "1" : "2");
            mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                    int success = rcsService.continueTask(rcsTaskContinue, 1);
                    mesReturn.setSuccess(success == 1 ? "1" : "2");
                    mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                } else {
                    allow.setMethod("APPLY_OFF_STATION");
                    int success = rcsService.continueTask(allow, 2);
                    mesReturn.setSuccess(success == 1 ? "1" : "2");
                    mesReturn.setMessage(success == 1 ? "" : "转发给RCS失败");
                }
            }
        }
        return mesReturn;
@@ -1284,9 +1394,9 @@
        String url = MES_URL + "AGVDepartureCompleted";
        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
        if (!StringUtils.isEmpty(response) && response.contains("Success")){
        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
            if("1".equals(mesReturn.getSuccess())) {
            if ("1".equals(mesReturn.getSuccess())) {
                return 1;
            }
        }
@@ -1295,13 +1405,13 @@
    }
    @Override
    public MesReturn queryInventory(String itemno,String orderNo) {
    public MesReturn queryInventory(String itemno, String orderNo) {
        MesReturn mesReturn = new MesReturn();
        mesReturn.setSuccess("1");
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", itemno).eq("order_no",orderNo));
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", itemno).eq("order_no", orderNo));
        int count = 0;
        for(LocDetl locDetl:locDetls) {
        for (LocDetl locDetl : locDetls) {
            count += locDetl.getAnfme();
        }
        mesReturn.setMessage(String.valueOf(count));