自动化立体仓库 - WMS系统
skyouc
4 天以前 08915b05c42b2ba97a8bb0809aeb48802ae63b46
no message
1个文件已添加
16个文件已修改
1283 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 659 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/constant/MesConstant.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/TaskDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlPakoutMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/CheckOrderDetlParams.java
New file
@@ -0,0 +1,101 @@
package com.zy.asrs.entity.param;
import com.baomidou.mybatisplus.annotations.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel(value = "CheckOrderDetlParams", description = "盘点调整参数")
public class CheckOrderDetlParams implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    @TableField("order_no")
    private String orderNo;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private BigDecimal anfme;
    @ApiModelProperty(value= "")
    @TableField("diff_qty")
    private BigDecimal diffQty;
    /**
     * 商品编码
     */
    @ApiModelProperty(value= "商品编码")
    private String matnr;
    /**
     * 商品名称
     */
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    /**
     * 规格
     */
    @ApiModelProperty(value= "规格")
    private String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    private String model;
    /**
     * 三方编码
     */
    @ApiModelProperty(value= "三方编码")
    @TableField("three_code")
    private String threeCode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    private String supp;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    @TableField("supp_code")
    private String suppCode;
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    private String standby1 = "";
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    @TableField("box_type1")
    private String boxType1 = "1";
}
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -133,7 +133,7 @@
        locMast.setLocSts("Q");
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        if (!locCacheService.updateById(locMast)) {
        if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
            throw new CoolException("修改库位状态失败");
        }
    }
@@ -174,7 +174,7 @@
                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F");
                locMast.setModiTime(now);
                locMast.setModiUser(userId);
                locCacheService.updateById(locMast);
                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
            }
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
@@ -189,7 +189,7 @@
                throw new CoolException("更新源站点状态失败,目标库位状态:" + station.getLocSts());
            }
            // 出库取消(修改源库位)
        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() < 14) {
        } else if (wrkMast.getWrkSts() > 300 && wrkMast.getWrkSts() < 304) {
            locNo = wrkMast.getSourceLocNo();
            // 出库 ===>> F.在库
            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -208,7 +208,8 @@
                locMast.setLocSts("O");
                locMast.setModiTime(now);
                locMast.setModiUser(userId);
                locCacheService.updateById(locMast);
                locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
//                locCacheService.updateById(locMast);
            }
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
@@ -334,7 +335,8 @@
        locMast.setLocSts(locSts);
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        boolean locMastRes = locCacheService.updateById(locMast);
        boolean locMastRes = locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()));
        if (!wrkMastRes || !locMastRes) {
            throw new CoolException("保存数据失败");
        }
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -517,7 +517,8 @@
    @Transactional(rollbackFor = Exception.class)
    public void checkStockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
        Date now = new Date();
        List<LocDto> locDtos = taskDto.getLocDtos();
        List<LocDto> locDtos = taskDto.getLocDtos().stream().distinct().collect(Collectors.toList());
//        Map<String, List<LocDto>> collect = taskDto.getLocDtos().stream().collect(Collectors.groupingBy(LocDto::getLocNo));
        for (LocDto locDto : locDtos) {
            if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
                throw new CoolException("订单出库异常,请联系管理员");
@@ -554,25 +555,24 @@
            throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo());
        }
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
        for (LocDto locDto : locDtos) {
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
            List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>()
            CheckOrderDetl checkOrderDetls = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                    .eq("loc_no", locDto.getLocNo())
                    .eq("matnr", locDto.getMatnr())
                    .eq(!Cools.isEmpty(locDto.getBatch()),"batch", locDto.getBatch())
                    .eq("order_no", locDto.getOrderNo())
            );
                    .eq("supp_code", locDto.getSuppCode())
                    .eq("order_no", locDto.getOrderNo()));
            if (checkOrderDetls.size() > 1) {
            if (Objects.isNull(checkOrderDetls)) {
                throw new CoolException("数据大于1,请检查数据");
            }
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(checkOrderDetls.get(0));
            wrkDetl.setOrderId(checkOrderDetls.get(0).getId());
            wrkDetl.sync(checkOrderDetls);
            wrkDetl.setOrderId(checkOrderDetls.getId());
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
@@ -587,8 +587,8 @@
                throw new CoolException("保存工作档明细失败");
            }
            // 修改订单明细
            checkOrderDetls.get(0).setStatus(2);
            if (!checkOrderDetlService.updateById(checkOrderDetls.get(0))) {
            checkOrderDetls.setStatus(2);
            if (!checkOrderDetlService.updateById(checkOrderDetls)) {
                throw new CoolException("保存订单明细失败");
            }
        }
@@ -618,9 +618,9 @@
        }
        // 获取库位
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", taskDto.getLocNo()));
        int ioType = (taskDto.isAll() ? 101 : 103);
        int ioType = 103;
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        int workNo = commonService.getWorkNo(4);
        Task task = new Task();
        task.setWrkNo(workNo)
@@ -690,7 +690,7 @@
            locCache.setLocSts(ioType == 101 ? "R" : "P");
            locCache.setModiUser(userId);
            locCache.setModiTime(now);
            if (!locCacheService.updateById(locCache)) {
            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                throw new CoolException("预约库位状态失败,库位号:" + taskDto.getLocNo());
            }
        } else {
@@ -1388,8 +1388,7 @@
        if (wrkMast.getIoType() == 107) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
            if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
                for (WrkDetl wrkDetl : wrkDetls) {
                    CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectOne(new EntityWrapper<CheckOrderDetl>()
                            .eq("loc_no", wrkMast.getSourceLocNo())
@@ -1397,8 +1396,10 @@
                            .eq("batch", wrkDetl.getBatch())
                            .eq("order_no", wrkDetl.getOrderNo())
                    );
                    checkOrderDetl.setStatus(1);
                    checkOrderDetlService.updateById(checkOrderDetl);
                    if (!Objects.isNull(checkOrderDetl)) {
                        checkOrderDetl.setStatus(1);
                        checkOrderDetlService.updateById(checkOrderDetl);
                    }
                }
                CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", wrkDetls.get(0).getOrderNo()));
                List<CheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", checkOrder.getId()));
@@ -1406,8 +1407,10 @@
                checkOrder.setSettle(is ? 1L : 12L);
                checkOrderService.updateById(checkOrder);
            }
//            if (!Cools.isEmpty(wrkDetls.get(0).getOrderNo())) {
//
//
//            }
        }
//        // 订单关联
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
@@ -1,20 +1,49 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.exception.CoolException;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastLog;
import com.zy.asrs.mapper.WrkDetlLogMapper;
import com.zy.asrs.entity.WrkDetlLog;
import com.zy.asrs.service.WrkDetlLogService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.service.WrkDetlService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service("wrkDetlLogService")
public class WrkDetlLogServiceImpl extends ServiceImpl<WrkDetlLogMapper, WrkDetlLog> implements WrkDetlLogService {
    @Autowired
    private WrkDetlService wrkDetlService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean save(Integer workNo) {
        return this.baseMapper.save(workNo) > 0;
        List<WrkDetl> detlLogs = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
        if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) {
            log.error("数据错误:任务不存在!!");
//            throw new CoolException("数据错误:任务不存在!!");
        } else {
            detlLogs.forEach(WrkDetl -> {
                WrkDetlLog detlLog = new WrkDetlLog();
                BeanUtils.copyProperties(WrkDetl, detlLog);
                if (!this.insert(detlLog)) {
                    throw new CoolException("任务日志保存失败!!");
                }
            });
        }
        return true;
    }
    @Override
src/main/java/com/zy/asrs/task/OrderMoveHistoryScheduler.java
@@ -14,7 +14,7 @@
    /**
     * 将已完成order和orderDetl移动到log表
     */
    @Scheduled(cron = "0/30 * * * * ?")
    @Scheduled(cron = "0 0 04 * * ?")
    public void execute(){
        orderMoveHistoryHandler.start();
    }
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,11 +1,15 @@
package com.zy.asrs.task;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.CheckOrder;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderPakout;
import com.zy.asrs.enums.OrderTypeEnum;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderPakoutService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.OrderSyncHandler;
import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -17,6 +21,7 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
/**
@@ -35,6 +40,8 @@
    @Value("${erp.switch.ErpReportOld}")
    private boolean ErpReportOld;
    @Autowired
    private OrderPakoutService orderPakoutService;
    @Scheduled(cron = "0 0 1 * * ? ")
    public void clearApiLog() {
@@ -53,9 +60,9 @@
            try {
                ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]再次转执行表失败:{}", order.getOrderNo(),result.getMsg());
                    log.error("单据[orderNo={}]再次转执行表失败:{}", order.getOrderNo(), result.getMsg());
                }
            } catch (Exception e){
            } catch (Exception e) {
                log.error(e.getMessage());
                log.error("单据[orderNo={}]再次转执行表失败", order.getOrderNo());
            }
@@ -67,19 +74,19 @@
    public void completeAndReportOrderIssued() {
//        String erpReport = Parameter.get().getErpReport();
//        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
            List<Order> orderList = orderService.selectComplete1();
        List<Order> orderList = orderService.selectComplete1();
//            List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).eq("status", 1).orderBy("create_time", true));
            for (Order order : orderList) {
                try {
                    ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
                    if (!result.isSuccess()) {
                        log.error("单据[orderNo={}]转执行表失败", order.getOrderNo());
                    }
                } catch (Exception e){
                    log.error(e.getMessage());
        for (Order order : orderList) {
            try {
                ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]转执行表失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error(e.getMessage());
                log.error("单据[orderNo={}]转执行表失败", order.getOrderNo());
            }
        }
//        }
    }
@@ -88,25 +95,46 @@
    public void completeAndReportOrderInAndOutUtil() {
//        String erpReport = Parameter.get().getErpReport();
//        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
            List<Order> orders = OrderInAndOutUtil.selectComplete(null);
            for (Order order : orders) {
                try {
                    ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
                    if (!result.isSuccess()) {
                        log.error("单据[orderNo={}]转上报表失败", order.getOrderNo());
                    }
                } catch (Exception e){
                    log.error(e.getMessage());
        List<Order> orders = OrderInAndOutUtil.selectComplete(null);
        for (Order order : orders) {
            try {
                ReturnT<String> result = orderSyncHandler.startOrderInAndOutUtil(order);
                if (!result.isSuccess()) {
                    log.error("单据[orderNo={}]转上报表失败", order.getOrderNo());
                }
            } catch (Exception e) {
                log.error(e.getMessage());
                log.error("单据[orderNo={}]转上报表失败", order.getOrderNo());
            }
        }
//        }
    }
//    @Scheduled(cron = "0/5 * * * * ? ")
    @Async("orderThreadPool")
    public void completePakoutOrder() {
        List<OrderPakout> orderPakouts = orderPakoutService.selectList(new EntityWrapper<OrderPakout>()
                .in("doc_type", Arrays.asList(2))
                .eq("settle", 4));
        if (orderPakouts != null && orderPakouts.size() > 0) {
            for (OrderPakout orderPakout : orderPakouts) {
                try {
                    ReturnT<String> result = orderSyncHandler.startConvertOrders(orderPakout);
                    if (!result.isSuccess()) {
                        log.error("单据[orderNo={}]转上报表失败", orderPakout.getOrderNo());
                    }
                } catch (Exception e) {
                    log.error(e.getMessage());
                    log.error("单据[orderNo={}]转上报表失败", orderPakout.getOrderNo());
                }
            }
        }
    }
    @Scheduled(cron = "0/30 * * * * ? ")
    @Async("orderThreadPool")
    public void completeAndReportOrderReport() {
        if (!ErpReportOld){
        if (!ErpReportOld) {
            return;
        }
        String erpReport = Parameter.get().getErpReport();
@@ -118,7 +146,6 @@
                    if (!result.isSuccess()) {
                        log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
                    }
                } catch (Exception e) {
                    log.error(e.getMessage());
                    log.error("单据[orderNo={}]上报erp失败", order.getOrderNo());
@@ -127,11 +154,13 @@
        }
    }
    /**损溢单完结上报 */
    /**
     * 损溢单完结上报
     */
    @Scheduled(cron = "0/15 * * * * ?")
    @Async("orderThreadPool")
    public void completeCheckOrderReport() {
        if (!ErpReportOld){
        if (!ErpReportOld) {
            return;
        }
        String erpReport = Parameter.get().getErpReport();
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -89,7 +89,9 @@
     */
    @Scheduled(cron = "0/5 * * * * ? ")
    private void autoPubTasks() {
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", Arrays.asList(11L, 1L)));
        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                .in("wrk_sts", Arrays.asList(11L, 1L))
                .orderDesc(Arrays.asList("io_pri")));
        if (wrkMasts.isEmpty()) {
            return;
        }
@@ -97,8 +99,7 @@
        listMap.keySet().forEach(key -> {
            List<WrkMast> wrkMasts1 = listMap.get(key);
            Collections.shuffle(wrkMasts1);
            Integer crnNos = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", key));
            if (crnNos < 6) {
            try {
                wrkMasts1.forEach(wrkMast -> {
                    WorkTaskParams params = new WorkTaskParams();
                    if (wrkMast.getIoType().equals(11)) {
@@ -117,6 +118,8 @@
                        wcsApiService.pubWrkToWcs(params);
                    }
                });
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        });
    }
@@ -173,11 +176,17 @@
        Collections.shuffle(tasks);
        tasks.forEach(wrkMast -> {
            CallAgvParams param = new CallAgvParams();
            if (wrkMast.getIoType() == 1) {
                param.setWrkNo(wrkMast.getWrkNo() + "");
                param.setOrgSite(wrkMast.getSourceStaNo());
                param.setTarSite(wrkMast.getLocNo());
            } else if (wrkMast.getIoType() == 110 ||wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){
            if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 53) {
                if (wrkMast.getIsNewIn().equals("XM1")) {
                    param.setWrkNo(wrkMast.getWrkNo() + "");
                    param.setOrgSite(wrkMast.getSourceStaNo());
                    param.setTarSite(wrkMast.getStaNo());
                } else {
                    param.setWrkNo(wrkMast.getWrkNo() + "");
                    param.setOrgSite(wrkMast.getSourceStaNo());
                    param.setTarSite(wrkMast.getLocNo());
                }
            } else if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103){
                param.setWrkNo(wrkMast.getWrkNo() + "");
                param.setOrgSite(wrkMast.getSourceLocNo());
                param.setTarSite(wrkMast.getStaNo());
src/main/java/com/zy/asrs/task/handler/OrderMoveHistoryHandler.java
@@ -68,7 +68,7 @@
                orderDetl.setUpdateTime(now);
//                orderDetlService.addToLogTable(orderDetl);
                OrderInAndOutUtil.addToLogTableOrderDetl(order.getPakinPakoutStatus$(),orderDetl);
                if (order.getPakinPakoutStatus() == 1){
                if (order.getPakinPakoutStatus() == 1) {
                    orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>()
                            .eq("id",orderDetl.getId()));
                } else {
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,6 +1,7 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
@@ -19,9 +20,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.OrderTypeEnum;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.TaskDetlLogServiceImpl;
import com.zy.asrs.service.impl.TaskDetlServiceImpl;
import com.zy.asrs.service.impl.WrkDetlLogServiceImpl;
import com.zy.asrs.service.impl.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -75,7 +74,13 @@
    @Autowired
    private TaskDetlLogService taskDetlLogService;
    @Autowired
    private WrkDetlLogServiceImpl wrkDetlLogService;
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private OrderDetlPakoutService orderDetlPakoutService;
    @Autowired
    private OrderPakoutService orderPakoutService;
    @Transactional
@@ -279,15 +284,15 @@
            orderDetls.forEach(detl -> {
                Mat material = matService.selectByMatnr(detl.getMatnr());
                if (Objects.isNull(material)) {
                    throw new CoolException(material.getMatnr() +  "物料不存在");
                    throw new CoolException(material.getMatnr() + "物料不存在");
                }
                ReportOrderParams itemParam = new ReportOrderParams();
                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                List<WrkDetlLog> wrkDetls = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                        .eq("matnr", detl.getMatnr())
                        .eq("three_code", detl.getThreeCode())
                        .eq("supp_code", detl.getSuppCode())
                        .eq("order_no", detl.getOrderNo()));
                if (Objects.isNull(locDetl)) {
                if (Objects.isNull(wrkDetls) || wrkDetls.isEmpty()) {
                    ReportOrderParams itemParam = new ReportOrderParams();
                    // BS Code
                    itemParam.setTotal_serial(detl.getThreeCode())
                            // 上报时,默认产品类型是null
@@ -307,30 +312,34 @@
                            .setDamage_qty(0)
                            // 上报时,默认差异数量是0
                            .setDiff_qty(0);
                    reportOrderParams.add(itemParam);
                } else {
                    // BS Code
                    itemParam.setTotal_serial(detl.getThreeCode())
                            // 上报时,默认产品类型是null
                            .setPro_type(material.getProType())
                            // 上报时,默认产品编码
                            .setPro_komcode(detl.getMatnr())
                            // 上报时,默认产品id是供应商编码
                            .setPro_id(detl.getSuppCode())
                            .setLocation_no(locDetl.getZpallet())
                            .setSj_emp(locDetl.getModiUser$())
                            .setLocation_type(MatLocType.getMatTag(material.getTagId() + ""))
                            // 上报时,默认上报时间是更新时间
                            .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
                            // 上报时,默认上报数量是订单数量
                            .setPick_qty(locDetl.getAnfme().intValue())
                            // 上报时,默认损坏数量是0
                            .setDamage_qty(0)
                            // 上报时,默认差异数量是0
                            .setDiff_qty(0);
                    wrkDetls.forEach(wrkDetl -> {
                        ReportOrderParams itemParam = new ReportOrderParams();
                        // BS Code
                        itemParam.setTotal_serial(detl.getThreeCode())
                                // 上报时,默认产品类型是null
                                .setPro_type(material.getProType())
                                // 上报时,默认产品编码
                                .setPro_komcode(detl.getMatnr())
                                // 上报时,默认产品id是供应商编码
                                .setPro_id(detl.getSuppCode())
                                .setLocation_no(wrkDetl.getZpallet())
                                .setSj_emp(wrkDetl.getModiUser$())
                                .setLocation_type(MatLocType.getMatTag(material.getTagId() + ""))
                                // 上报时,默认上报时间是更新时间
                                .setSj_date(Utils.dateToStr(order.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"))
                                // 上报时,默认上报数量是订单数量
                                .setPick_qty(wrkDetl.getAnfme().intValue())
//                                .setPick_qty(detl.getQty().intValue())
                                // 上报时,默认损坏数量是0
                                .setDamage_qty(0)
                                // 上报时,默认差异数量是0
                                .setDiff_qty(0);
                        reportOrderParams.add(itemParam);
                    });
                }
                reportOrderParams.add(itemParam);
            });
            orderParam.setDetails(reportOrderParams);
            XSR response = null;
@@ -389,41 +398,48 @@
            orderDetls.forEach(detl -> {
                Mat material = matService.selectByMatnr(detl.getMatnr());
                if (Objects.isNull(material)) {
                    throw new CoolException(material.getMatnr() +  "物料不存在");
                    throw new CoolException(material.getMatnr() + "物料不存在");
                }
                TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
                TaskDetlLog taskDetlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
                        .eq("matnr", detl.getMatnr())
                        .eq("supp_code", detl.getStandby1())
                        .eq("order_no", detl.getOrderNo()));
                if (Objects.isNull(detlLog)) {
                    throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!");
                if (Objects.isNull(taskDetlLog) || Objects.isNull(taskDetlLog.getAreaType())) {
                    orderParam.setTarget_location("2");
//                    throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!");
                } else {
                    orderParam.setTarget_location(taskDetlLog.getAreaType());
                }
/*                WrkDetlLog detlLog = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>()
                List<WrkDetlLog> detlLog = wrkDetlLogService.selectList(new EntityWrapper<WrkDetlLog>()
                        .eq("matnr", detl.getMatnr())
                        .eq("supp_code", detl.getStandby1())
                        .eq("order_no", detl.getOrderNo()));
                if (Objects.isNull(detlLog)) {
                    throw new CoolException("物料编码:" + detl.getMatnr() + "数据错误 ,请检查堆垛机任务档是否已完成!!");
                }*/
                //目标库区
//                orderParam.setTarget_location("2");
                orderParam.setTarget_location(detlLog.getAreaType());
                OrderItemsParam itemParam = new OrderItemsParam();
                // BS Code
                itemParam
                        // 上报时,默认产品类型是null
                        .setPro_type(material.getProType())
                        // 上报时,默认产品编码
                        .setPro_komcode(detl.getMatnr())
                        // 上报时,默认产品id是供应商编码
                        .setPro_id(detl.getSuppCode())
                detlLog.forEach(item -> {
                    OrderItemsParam itemParam = new OrderItemsParam();
                    if (Objects.isNull(item)) {
                        itemParam.setLocation_no("LX99999999");
                    } else {
                        itemParam.setLocation_no(item.getZpallet());
                    }
                    itemParam
                            // 上报时,默认产品类型是null
                            .setPro_type(material.getProType())
                            // 上报时,默认产品编码
                            .setPro_komcode(detl.getMatnr())
                            // 上报时,默认产品id是供应商编码
                            .setPro_id(detl.getSuppCode())
//                        // 上报时,默认来源位置是null
                        .setLocation_no(detlLog.getZpallet())
                        // 上报时,默认上报数量是订单数量
                        .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue());
                reportOrderParams.add(itemParam);
//                              .setLocation_no(detlLog.getZpallet())
                            // 上报时,默认上报数量是订单数量
                            .setPick_qty(item.getAnfme().intValue());
//                            .setPick_qty(Objects.isNull(detl.getQty()) ? 0 : detl.getQty().intValue());
                    reportOrderParams.add(itemParam);
                });
            });
            //目标库区
//          orderParam.setTarget_location("2");
            // BS Code
            if (orderParam.getTarget_location().equals("2")) {
                orderParam.setType("11");
            } else if (orderParam.getTarget_location().equals("3")) {
@@ -438,26 +454,29 @@
            try {
                List<ReportOrderParam> orderParams = new ArrayList<>();
                orderParams.add(orderParam);
                log.info("派工单入参---------->{}", JSONArray.toJSONString(orderParams));
                if (order.getReportOnce() < 4) {
                    response = kopenApiService.reportOutDetailsResult(orderParams, order);
                } else {
                    return FAIL;
                }
                if (response.getSuccess()) {
                    success = true;
                    // 修改订单状态 4.完成 ===>> 6.已上报
                    if (!orderService.updateSettle(order.getId(), settle, null)) {
                        throw new CoolException("服务器内部错误,请联系管理员");
                    if (!Objects.isNull(response)) {
                        if (response.getSuccess()) {
                            success = true;
                            // 修改订单状态 4.完成 ===>> 6.已上报
                            if (!orderService.updateSettle(order.getId(), settle, null)) {
                                throw new CoolException("服务器内部错误,请联系管理员");
                            }
                        } else {
                            log.error("请求接口失败!!!url:{};request:{};response:{}",
                                    MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
                                    JSON.toJSONString(orderParams), JSON.toJSONString(response));
                            throw new CoolException("上报KOPEN系统失败");
                        }
                    } else {
//                            return SUCCESS;
                    }
                } else {
                    log.error("请求接口失败!!!url:{};request:{};response:{}",
                            MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
                            JSON.toJSONString(orderParams), JSON.toJSONString(response));
                    throw new CoolException("上报KOPEN系统失败");
                }
            } catch (Exception e) {
                log.error("fail", e);
                return FAIL.setMsg(e.getMessage());
//                        return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
@@ -490,28 +509,30 @@
            orderDetls.forEach(detl -> {
                Mat material = matService.selectByMatnr(detl.getMatnr());
                if (Objects.isNull(material)) {
                    throw new CoolException(material.getMatnr() +  "物料不存在");
                    throw new CoolException(material.getMatnr() + "物料不存在");
                }
                TaskDetlLog detlLog = taskDetlLogService.selectOne(new EntityWrapper<TaskDetlLog>()
                List<TaskDetlLog> detlLogs = taskDetlLogService.selectList(new EntityWrapper<TaskDetlLog>()
                        .eq("matnr", detl.getMatnr())
                        .eq("supp_code", detl.getStandby1())
                        .eq("order_no", detl.getOrderNo()));
                if (Objects.isNull(detlLog)) {
                if (Objects.isNull(detlLogs) || detlLogs.isEmpty()) {
                    throw new CoolException("数据错误 ,请检查AGV任务档是否已完成!!");
                }
                OrderItemsParam itemParam = new OrderItemsParam();
                // 上报时,默认产品类型是null
                itemParam.setPro_type(material.getProType());
                // 上报时,默认产品编码
                itemParam.setPro_komcode(material.getMatnr());
                // 上报时,默认产品id是供应商编码
                itemParam.setPro_id(detl.getSuppCode());
                //todo 台车编码
                itemParam.setTruck_no(detlLog.getZpallet());
                // 上报时,默认上报时间是更新时间
                itemParam.setPick_qty(detl.getQty().intValue());
                detlLogs.forEach(detlLog -> {
                    OrderItemsParam itemParam = new OrderItemsParam();
                    // 上报时,默认产品类型是null
                    itemParam.setPro_type(material.getProType());
                    // 上报时,默认产品编码
                    itemParam.setPro_komcode(material.getMatnr());
                    // 上报时,默认产品id是供应商编码
                    itemParam.setPro_id(detl.getSuppCode());
                    //todo 台车编码
                    itemParam.setTruck_no(detlLog.getZpallet());
                    // 上报时,默认上报时间是更新时间
                    itemParam.setPick_qty(detlLog.getAnfme().intValue());
                reportOrderParams.add(itemParam);
                    reportOrderParams.add(itemParam);
                });
            });
            pubOrderParams.setPartList(reportOrderParams);
@@ -606,7 +627,7 @@
        detls.forEach(detl -> {
            Mat material = matService.selectByMatnr(detl.getMatnr());
            if (Objects.isNull(material)) {
                throw new CoolException(material.getMatnr() +  "物料不存在");
                throw new CoolException(material.getMatnr() + "物料不存在");
            }
            OrderItemsParam itemParam = new OrderItemsParam();
            itemParam.setLocation_no(detl.getZpallet())
@@ -633,4 +654,38 @@
    }
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> startConvertOrders(OrderPakout orderPakout) {
        if (orderPakout.getSettle() != 4) {
            return FAIL;
        }
        List<OrderDetlPakout> detlPakins = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_no", orderPakout.getOrderNo()));
        if (!Objects.isNull(detlPakins) && !detlPakins.isEmpty()) {
            detlPakins.forEach(detl -> {
                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
                        .eq("matnr", detl.getMatnr())
                        .eq("supp_code", detl.getSuppCode())
                        .eq("order_no", detl.getOrderNo()));
                if (!Objects.isNull(orderDetl)) {
                    orderDetl.setQty(detl.getQty());
                    orderDetl.setWorkQty(detl.getWorkQty());
                    if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>()
                            .eq("matnr", detl.getMatnr())
                            .eq("supp_code", detl.getSuppCode())
                            .eq("order_no", detl.getOrderNo()))) {
                        throw new CoolException("订单信息更新失败!!");
                    }
                }
            });
            Order orderNo = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo()));
            if (!Objects.isNull(orderNo)) {
                orderNo.setSettle(4L);
                if (!orderService.update(orderNo, new EntityWrapper<Order>().eq("order_no", orderPakout.getOrderNo()))) {
                    throw new CoolException("单据状态更新失败!!");
                }
            }
        }
        return SUCCESS;
    }
}
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -5,6 +5,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.enums.TaskStatusType;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.OrderPakinServiceImpl;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -17,6 +18,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
/**
 * Created by vincent on 2020/7/6
@@ -47,6 +49,8 @@
    private TaskDetlService taskDetlService;
    @Autowired
    private TaskDetlLogService taskDetlLogService;
    @Autowired
    private OrderPakinService orderPakinService;
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> start(WrkMast wrkMast) {
@@ -59,10 +63,18 @@
                    WrkDetl wrkDetl = iterator.next();
                    if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
//                        orderService.checkComplete(wrkDetl.getOrderNo());
                        if (wrkMast.getIoType() ==  1 || wrkMast.getIoType() == 8 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){
                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo());
                        if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 8 || wrkMast.getIoType() == 54 || wrkMast.getIoType() == 104) {
                            OrderInAndOutUtil.checkComplete(Boolean.TRUE, wrkDetl.getOrderNo());
                        } else {
                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo());
                            OrderInAndOutUtil.checkComplete(Boolean.FALSE, wrkDetl.getOrderNo());
                            OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>()
                                    .eq("order_no", wrkDetl.getOrderNo())
                                    .in("doc_type", 7));
                            if (!Objects.isNull(orderPakin)) {
                                OrderInAndOutUtil.checkComplete(Boolean.TRUE, orderPakin.getOrderNo());
                            }
                        }
                        iterator.remove();
                    }
@@ -90,7 +102,7 @@
//                            exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo());
//                        }
//                    }
                // 拣料再入库
                    // 拣料再入库
                } else if (wrkMast.getIoType() == 53) {
//                    //
//                    if (!Cools.isEmpty(wrkDetls)) {
@@ -100,7 +112,7 @@
//                    }
                }
            // 出库 --------------------------------------------------------------------------------
                // 出库 --------------------------------------------------------------------------------
            } else if (wrkMast.getWrkSts() == 15) {
//                if (!Cools.isEmpty(wrkDetls)) {
//                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
@@ -119,10 +131,13 @@
            }
            // 保存工作明细档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
                log.error("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
//                exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
            }
            // 删除工作明细档
            if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
                log.error("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
//                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
            }
        } catch (Exception e) {
@@ -145,10 +160,10 @@
                    TaskDetl taskDetl = iterator.next();
                    if (!Cools.isEmpty(taskDetl.getOrderNo())) {
//                        orderService.checkComplete(wrkDetl.getOrderNo());
                        if (task.getIoType() ==  1 || task.getIoType() == 8 ||  task.getIoType() == 54 ||  task.getIoType() == 104){
                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,taskDetl.getOrderNo());
                        if (task.getIoType() == 1 || task.getIoType() == 8 || task.getIoType() == 54 || task.getIoType() == 104) {
                            OrderInAndOutUtil.checkComplete(Boolean.TRUE, taskDetl.getOrderNo());
                        } else {
                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,taskDetl.getOrderNo());
                            OrderInAndOutUtil.checkComplete(Boolean.FALSE, taskDetl.getOrderNo());
                        }
                        iterator.remove();
                    }
@@ -205,22 +220,26 @@
            if (!taskService.deleteById(task)) {
                exceptionHandle("删除工作主档[workNo={0}]失败", task.getWrkNo());
            }
            List<TaskDetl> taskDetls2 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
            for (TaskDetl taskDetl :taskDetls2){
            for (TaskDetl taskDetl : taskDetls2) {
                TaskDetlLog taskDetlLog = new TaskDetlLog();
                BeanUtils.copyProperties(taskDetl, taskDetlLog);
                taskDetlLog.setLogId(taskLog.getId());
                taskDetlLog.setId(null);
                // 保存工作明细档历史档
                if (!taskDetlLogService.insert(taskDetlLog)) {
                exceptionHandle("保存工作明细历史档[workNo={0}]失败", task.getWrkNo());
                    log.error("保存工作明细历史档[workNo={0}]失败", task.getWrkNo());
//                    exceptionHandle("保存工作明细历史档[workNo={0}]失败", task.getWrkNo());
                }
                // 删除工作明细档
                if (!taskDetlService.deleteById(taskDetl)) {
                exceptionHandle("删除工作明细档[workNo={0}]失败", task.getWrkNo());
                }
                // 删除工作明细
            }
            if (!taskDetlService.delete(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()))) {
                log.error("保存工作明细历史档[workNo={0}]失败", task.getWrkNo());
//                exceptionHandle("删除工作明细档[workNo={0}]失败", task.getWrkNo());
            }
        } catch (Exception e) {
            log.error("fail", e);
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -68,6 +68,8 @@
    private BasAreasService basAreasService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private OrderPakoutService orderPakoutService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -152,9 +154,13 @@
                            locDetl = new LocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setAreaId(locMast.getAreaId());
                            locMast.setAreaName(locMast.getAreaName());
                            locDetl.setAreaName(locMast.getAreaName());
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setBoxType1(wrkDetl.getBoxType1());
                            locDetl.setSuppCode(wrkDetl.getSuppCode());
                            locDetl.setThreeCode(wrkDetl.getThreeCode());
                            locDetl.setStandby1(wrkDetl.getSuppCode());
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
@@ -244,7 +250,11 @@
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setAreaId(locMast.getAreaId());
                            locMast.setAreaName(locMast.getAreaName());
                            locDetl.setAreaName(locMast.getAreaName());
                            locDetl.setBoxType1(wrkDetl.getBoxType1());
                            locDetl.setSuppCode(wrkDetl.getSuppCode());
                            locDetl.setThreeCode(wrkDetl.getThreeCode());
                            locDetl.setStandby1(wrkDetl.getSuppCode());
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
@@ -350,102 +360,83 @@
                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                    if (wrkDetls54.isEmpty()) {
                        // exceptionHandle("并板入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                + wrkMast.getLocNo() + "]");
                    }
                    // 修改库存明细数量,如无库存,曾新增
                    for (WrkDetl wrkDetl : wrkDetls54) {
                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
                                wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                                wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
                                wrkDetl.getBoxType3());
                        if (null != locDetl) {
                            if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(),
                                    wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
                                    wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
                                // exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]",
                                // wrkMast.getWrkNo(), wrkDetl.getMatnr());
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                        + wrkMast.getLocNo() + "]");
                            }
                        } else {
                            locDetl = new LocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setAreaId(locMast.getAreaId());
                            locMast.setAreaName(locMast.getAreaName());
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
                            if (!locDetlService.insert(locDetl)) {
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                        + wrkMast.getLocNo() + "]");
                            }
                        }
//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                        return FAIL.setMsg("并板入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
//                                + wrkMast.getLocNo() + "]");
                    } else {
                        // 修改库存明细数量,如无库存,曾新增
                        for (WrkDetl wrkDetl : wrkDetls54) {
                            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                                    .eq("supp_code", wrkDetl.getSuppCode())
                                    .eq("matnr", wrkDetl.getMatnr())
                                    .eq("loc_no", locMast.getLocNo()));
                            if (null != locDetl) {
                                // 更新订单完成数量
                                OrderDetlPakin detlPakin = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
//                                                .eq("three_code", wrkDetl.getThreeCode()) //TODO 并板时需要修改BSCODE为订单bscode
                                        .eq("supp_code", wrkDetl.getSuppCode())
                                        .eq("matnr", wrkDetl.getMatnr())
                                        .eq("order_no", wrkDetl.getOrderNo()));
                                try {
                                    if (!Cools.isEmpty(detlPakin)) {
                                        double v = Math.round((wrkDetl.getAnfme() - locDetl.getAnfme()) * 10000) / 10000.0;
                                        double v1 = Math.round((detlPakin.getQty() + v) * 10000) / 10000.0;
                                        detlPakin.setQty(v1);
                                        detlPakin.setWorkQty(v1);
                                        detlPakin.setAdjustQty(wrkDetl.getAdjustQty());
                                        detlPakin.setSplusQty(wrkDetl.getSplusQty());
                                        if (!orderDetlPakinService.update(detlPakin, new EntityWrapper<OrderDetlPakin>()
                                                .eq("matnr", detlPakin.getMatnr())
                                                .eq("supp_code", detlPakin.getSuppCode())
                                                .eq("order_no", detlPakin.getOrderNo()))) {
                                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                            return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
                                        }
                                    }
                                } catch (Exception e) {
                                    log.error(e.getMessage());
                                }
//                        OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
//                        if (Objects.isNull(orderPakin)) {
//                            throw new CoolException("数据错误,订单信息不存在!!");
//                        }
//
//                        if (!orderPakin.getDocType().equals(0)) {
//                            // 更新订单完成数量
//                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
//                                    pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
//                                    pakin.getStandby2(), pakin.getStandby3(),
//                                    pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
//                            if (orderDetlPakin == null) {
//                                orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
//                                        pakin.getBatch(),
//                                        pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
//                                        pakin.getStandby3(),
//                                        pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
//                            }
//                            try {
//                                if (!Cools.isEmpty(orderDetlPakin)) {
//                                    if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
//                                            pakin.getMatnr(),
//                                            orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
//                                            pakin.getStandby2(), pakin.getStandby3(),
//                                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
//                                            pakin.getAnfme())) {
//                                        throw new CoolException("AGV全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
//                                                + "],[locNo=" + wrkMast.getLocNo() + "]");
//                                    }
//                                }
//                            } catch (Exception ignore) {
//
//                            }
//                        }
                                LocDetl detl = new LocDetl();
                                detl.setAnfme(wrkDetl.getAnfme());
                                detl.setStandby1(wrkDetl.getSuppCode());
                                detl.setBoxType1(locDetl.getBoxType1());
                                detl.setOrderNo(wrkDetl.getOrderNo());
                        // 更新订单完成数量
                        OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(), "1",
                                wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                        try {
                            if (!Cools.isEmpty(orderDetlPakin)) {
                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                        wrkDetl.getMatnr(),
                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                        "1", wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                        wrkDetl.getAnfme())) {
                                if (!locDetlService.update(detl, new EntityWrapper<LocDetl>()
                                        .eq("loc_no", locMast.getLocNo())
                                        .eq("matnr", wrkDetl.getMatnr())
                                        .eq("supp_code", wrkDetl.getSuppCode()))) {
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                            + "],[locNo=" + wrkMast.getLocNo() + "]");
                                    return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                            + wrkMast.getLocNo() + "]");
                                }
                            } else {
                                locDetl = new LocDetl();
                                locDetl.sync(wrkDetl);
                                locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                                locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                                locDetl.setAreaId(locMast.getAreaId());
                                locDetl.setAreaName(locMast.getAreaName());
                                locDetl.setBoxType1(wrkDetl.getBoxType1());
                                locDetl.setSuppCode(wrkDetl.getSuppCode());
                                locDetl.setThreeCode(wrkDetl.getThreeCode());
                                locDetl.setStandby1(wrkDetl.getSuppCode());
                                locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                                locDetl.setModiTime(now);
                                locDetl.setAppeTime(now);
                                if (!locDetlService.insert(locDetl)) {
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                            + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore) {
                        }
                    }
                    // 修改库位状态 Q ====>> F
                    if (locMast.getLocSts().equals("Q")) {
                        locMast.setLocSts("F");
@@ -462,20 +453,24 @@
                    }
                    String agvSta = null;
                    if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) {
                    if (wrkMast.getIoType().equals(TaskIOType.MERGE_IN.type)) {
                        agvSta = wrkMast.getPauseMk();
                    }
                    // . 删除缓存站点明细
                    if (!Objects.isNull(agvSta)) {
                        // 修改目标站点信息
                        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
                        if (Objects.isNull(station)) {
                            throw new CoolException("站点不存在!!");
                        }
                        basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
                        station.setLocSts(LocStsType.LOC_STS_TYPE_D.type);
                        if (!basStationService.updateById(station)) {
                            throw new CoolException("站点状态更新失败!!");
                    List<BasStationDetl> basStationDetls = basStationDetlService.selectList(new EntityWrapper<BasStationDetl>().eq("dev_no", agvSta));
                    if (Objects.isNull(basStationDetls) || basStationDetls.isEmpty()) {
                        // . 删除缓存站点明细
                        if (!Objects.isNull(agvSta)) {
                            // 修改目标站点信息
                            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
                            if (Objects.isNull(station)) {
                                throw new CoolException("站点不存在!!");
                            }
                            basStationDetlService.delete(new EntityWrapper<BasStationDetl>()
                                    .eq("dev_no", station.getDevNo()));
                            station.setLocSts(LocStsType.LOC_STS_TYPE_D.type);
                            if (!basStationService.updateById(station)) {
                                throw new CoolException("站点状态更新失败!!");
                            }
                        }
                    }
                    break;
@@ -484,34 +479,35 @@
                    // 根据工作号,查询工作明细档
                    List<WrkDetl> wrkDetls57 = wrkDetlService
                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                    if (wrkDetls57.isEmpty()) {
                    if (!wrkDetls57.isEmpty()) {
                        // exceptionHandle("盘点入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                + wrkMast.getLocNo() + "]");
                    }
                    for (WrkDetl wrkDetl : wrkDetls57) {
                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                            // 更新订单完成数量
                            CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
                            LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
                            BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme());
                            locDetl.setAnfme(checkOrderDetl.getDiffQty()
                                    .compareTo(BigDecimal.ZERO) == 0
                                    || checkOrderDetl.getDiffQty()
                                    .compareTo(BigDecimal.ZERO) > 0
                                    ? oriAnfme.doubleValue()
                                    : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
                            locDetl.setBookQty(oriAnfme);
                            locDetl.setDiffQty(checkOrderDetl.getDiffQty());
                            if (!locDetlService.updateById(locDetl)) {
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("盘点入库 ===>> 修改库存差异数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                        + wrkMast.getLocNo() + "]");
                        for (WrkDetl wrkDetl : wrkDetls57) {
                            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                                // 更新订单完成数量
                                CheckOrderDetl checkOrderDetl = checkOrderDetlService.selectById(wrkDetl.getOrderId());
                                if (!Objects.isNull(checkOrderDetl)) {
                                    LocDetl locDetl = locDetlService.selectById(checkOrderDetl.getLocDetlId());
                                    if (!Objects.isNull(locDetl)) {
                                        BigDecimal oriAnfme = new BigDecimal(locDetl.getAnfme());
                                        locDetl.setAnfme(checkOrderDetl.getDiffQty()
                                                .compareTo(BigDecimal.ZERO) == 0
                                                || checkOrderDetl.getDiffQty()
                                                .compareTo(BigDecimal.ZERO) > 0
                                                ? oriAnfme.doubleValue()
                                                : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
                                        locDetl.setBookQty(oriAnfme);
                                        locDetl.setDiffQty(checkOrderDetl.getDiffQty());
                                        if (!locDetlService.updateById(locDetl)) {
                                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                            return FAIL.setMsg("盘点入库 ===>> 修改库存差异数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                                    + wrkMast.getLocNo() + "]");
                                        }
                                    }
                                }
                            }
                        }
                    }
                    // 修改库位状态 Q ====>> F
                    if (locMast.getLocSts().equals("Q")) {
                        locMast.setLocSts(wrkMast.getFullPlt().equals("Y") ? "F" : "D");
@@ -620,6 +616,7 @@
                        return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                + wrkMast.getSourceLocNo() + "]");
                    }
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        // 更新订单完成数量
                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
@@ -668,6 +665,10 @@
                        }
                    }
                    break;
                case 104:
                    break;
                case 103:
//                    List<WrkDetl> wrkDetls103 = wrkDetlService
//                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
@@ -677,7 +678,7 @@
//                        return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
//                                + wrkMast.getSourceLocNo() + "]");
//                    }
//
//                    for (WrkDetl wrkDetl : wrkDetls103) {
//                        // 更新订单完成数量
//                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
@@ -819,14 +820,13 @@
     */
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> agvDoOut(Task task) {
        Date now = new Date();
        LocCache locMast = locCacheService
                .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
        Date now = new Date();
        if (Objects.isNull(locMast)) {
            throw new RuntimeException("数据错误:库位信息不能为空!!");
        }
        if (task.getIoType().equals(101)) {
            if (Objects.isNull(locMast)) {
                throw new RuntimeException("数据错误:库位信息不能为空!!");
            }
            List<TaskDetl> wrkDetls101 = taskDetlService
                    .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
            if (wrkDetls101.isEmpty()) {
@@ -834,6 +834,7 @@
                return FAIL.setMsg(
                        "全板出库 ===>> 工作明细档为空; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
            }
            BasStation devNo = basStationService
                    .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
            if (Objects.isNull(devNo)) {
@@ -847,31 +848,24 @@
            }
            for (TaskDetl wrkDetl : wrkDetls101) {
                // 更新订单完成数量
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                if (orderDetlPakout == null) {
                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                            wrkDetl.getStandby3(),
                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                }
                try {
                    if (!Cools.isEmpty(orderDetlPakout)) {
                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                wrkDetl.getAnfme())) {
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo="
                                    + task.getSourceLocNo() + "]");
                // 更新备货出库单完成数量
                OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("order_no", wrkDetl.getOrderNo()));
                if (!Objects.isNull(orderPakout) && orderPakout.getDocType() == 5) {
                    try {
                        if (!Cools.isEmpty(orderPakout)) {
                            if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                    "1", wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                    wrkDetl.getAnfme())) {
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return FAIL.setMsg("备货出库单 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo="
                                        + task.getSourceLocNo() + "]");
                            }
                        }
                    } catch (Exception ignore) {
                        log.error(ignore.getMessage(), ignore);
                    }
                } catch (Exception ignore) {
                }
                BasStationDetl stationDetl = new BasStationDetl();
@@ -882,6 +876,42 @@
                    throw new CoolException("站点明细保存失败!!");
                }
            }
//            for (TaskDetl wrkDetl : wrkDetls101) {
//                // 更新订单完成数量
//                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
//                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
//                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
//                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
//                if (orderDetlPakout == null) {
//                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
//                            wrkDetl.getStandby3(),
//                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
//                }
//                try {
//                    if (!Cools.isEmpty(orderDetlPakout)) {
//                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
//                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
//                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
//                                wrkDetl.getAnfme())) {
//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                            return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo() + "],[locNo="
//                                    + task.getSourceLocNo() + "]");
//                        }
//                    }
//                } catch (Exception ignore) {
//
//                }
//
//                BasStationDetl stationDetl = new BasStationDetl();
//                BeanUtils.copyProperties(wrkDetl, stationDetl);
//                stationDetl.setDevNo(devNo.getDevNo())
//                        .setOrderNo(wrkDetl.getOrderNo());
//                if (!basStationDetlService.insert(stationDetl)) {
//                    throw new CoolException("站点明细保存失败!!");
//                }
//            }
            // 删除工作档源库位的库存明细
            if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -889,12 +919,12 @@
                        "全板出库 ===>> 删除库存明细失败; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
            }
            // 修改源库位状态 R ===>> O
            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) {
                locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                locMast.setBarcode("");
                locMast.setModiTime(now);
                locMast.setIoTime(now);
                if (!locCacheService.updateById(locMast)) {
                if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo="
                            + task.getSourceLocNo() + "]");
@@ -908,24 +938,19 @@
                throw new CoolException("任务状态修改失败!!");
            }
        } else if (task.getIoType().equals(110)) {
            if (Objects.isNull(locMast)) {
                throw new RuntimeException("数据错误:库位信息不能为空!!");
            }
            // 修改源库位状态 R ===>> O
            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
                locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                locMast.setBarcode("");
                locMast.setModiTime(now);
                locMast.setIoTime(now);
                if (!locCacheService.updateById(locMast)) {
                if (!locCacheService.update(locMast, new EntityWrapper<LocCache>().eq("loc_no", locMast.getLocNo()))) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo="
                            + task.getSourceLocNo() + "]");
                }
            } else {
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
            }
            BasStation devNo = basStationService
                    .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
            if (Objects.isNull(devNo)) {
@@ -948,75 +973,122 @@
                return FAIL.setMsg("拣料出库 ===>> 工作明细档为空; [workNo=" + task.getWrkNo() + "],[locNo="
                        + task.getSourceLocNo() + "]");
            }
            for (TaskDetl wrkDetl : wrkDetls103) {
                // 更新订单完成数量
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.
                        selectOne(new EntityWrapper<OrderDetlPakout>()
                                .eq("matnr", wrkDetl.getMatnr())
                                .eq("supp_code", wrkDetl.getSuppCode())
                                .eq("order_no", wrkDetl.getOrderNo()));
                try {
                    if (!Cools.isEmpty(orderDetlPakout)) {
                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(),
                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                wrkDetl.getAnfme())) {
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo()
                                    + "],[locNo=" + task.getSourceLocNo() + "]");
                        }
                    }
                    //TODO 修改站点状态预约目标库位,以及站点库位信息
                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                            .eq("matnr", wrkDetl.getMatnr())
                            .eq("supp_code", wrkDetl.getSuppCode())
                            .eq("loc_no", task.getSourceLocNo()));
                    if (Objects.isNull(locDetl) ) {
                        throw new CoolException("库存数据错误,请联系管理员!!");
                    }
                    Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
                    locDetl.setAnfme(sulp);
                    if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())
                            .eq("matnr", locDetl.getMatnr())
                            .eq("supp_code", locDetl.getSuppCode()))) {
                        return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo()
                                + "],[locNo=" + task.getSourceLocNo() + "]");
                    }
                } catch (Exception ignore) {
                    log.error(ignore.getMessage());
                }
            }
//            for (TaskDetl wrkDetl : wrkDetls103) {
//                // 更新订单完成数量
//                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.
//                        selectOne(new EntityWrapper<OrderDetlPakout>()
//                                .eq("matnr", wrkDetl.getMatnr())
//                                .eq("supp_code", wrkDetl.getSuppCode())
//                                .eq("order_no", wrkDetl.getOrderNo()));
//                try {
//                    if (!Cools.isEmpty(orderDetlPakout)) {
//                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
//                                wrkDetl.getMatnr(),
//                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
//                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
//                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
//                                wrkDetl.getAnfme())) {
//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                            return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo()
//                                    + "],[locNo=" + task.getSourceLocNo() + "]");
//                        }
//                    }
//                    //TODO 修改站点状态预约目标库位,以及站点库位信息
//                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
//                            .eq("matnr", wrkDetl.getMatnr())
//                            .eq("supp_code", wrkDetl.getSuppCode())
//                            .eq("loc_no", task.getSourceLocNo()));
//                    if (Objects.isNull(locDetl) ) {
//                        throw new CoolException("库存数据错误,请联系管理员!!");
//                    }
//                    Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
//                    locDetl.setAnfme(sulp);
//                    if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())
//                            .eq("matnr", locDetl.getMatnr())
//                            .eq("supp_code", locDetl.getSuppCode()))) {
//                        return FAIL.setMsg("拣料出库 ===>> 更新订单完成数量失败; [workNo=" + task.getWrkNo()
//                                + "],[locNo=" + task.getSourceLocNo() + "]");
//                    }
//                } catch (Exception ignore) {
//                    log.error(ignore.getMessage());
//                }
//            }
//            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type) || locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
//                locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
//                locMast.setBarcode("");
//                locMast.setModiTime(now);
//                locMast.setIoTime(now);
//                if (!locCacheService.updateById(locMast)) {
//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                    return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo="
//                            + task.getSourceLocNo() + "]");
//                }
//            } else {
//                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
//            }
//
//            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
//            // 修改源库位状态 R ===>> O
//            if (basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_F.type) || basStation.getLocSts().equals(LocStsType.LOC_STS_TYPE_P.type)) {
//                basStation.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
//                basStation.setBarcode("");
//                basStation.setModiTime(now);
//                basStation.setIoTime(now);
//                if (!basStationService.updateById(basStation)) {
//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                    return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo="
//                            + task.getSourceLocNo() + "]");
//                }
//            } else {
//                throw new CoolException("当前库位状态" + basStation.getLocSts() + ", 无法执行出库操作!!");
//            }
//            Task task1 = new Task();
//            int workNo = commonService.getWorkNo(0);
            task.setIoType(task.getIoType() - 50);
            task.setLocNo(task.getSourceLocNo());
            task.setWrkSts(TaskStatusType.AGV_IN_START.type);
            if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) {
                throw new CoolException("任务拣货完成状态更新失败!!");
            }
            // 修改源库位状态 R ===>> O
            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
                locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
                locMast.setBarcode("");
                locMast.setModiTime(now);
                locMast.setIoTime(now);
                if (!locCacheService.updateById(locMast)) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return FAIL.setMsg("拣料出库 ===>> 修改源库位状态失败; [workNo=" + task.getWrkNo() + "],[locNo="
                            + task.getSourceLocNo() + "]");
                }
            } else {
                throw new CoolException("当前库位状态" + locMast.getLocSts() + ", 无法执行出库操作!!");
            }
//            task1.setWrkNo(workNo);
//            task1.setIoType(task.getIoType() - 50);
//            task1.setLocNo(task.getSourceLocNo());
//            task1.setIsNewIn("M1");
//            task1.setSourceStaNo(task.getStaNo());
//            task1.setWrkSts(TaskStatusType.AGV_IN_START.type);
//
//            if (!taskService.insert(task1)) {
//                throw new CoolException("拣货入库任务生成失败!!");
//            }
//
//            List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
//            taskDetls.forEach(detl -> {
//                detl.setWrkNo(task1.getWrkNo());
//                if (!taskDetlService.update(detl, new EntityWrapper<TaskDetl>().eq("wrk_no", detl.getWrkNo()))) {
//                    throw new CoolException("任务明细修改失败!!");
//                }
//            });
//            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
//            if (!taskService.updateById(task)) {
//                throw new CoolException("任务状态修改失败!!");
//            }
        }
        return SUCCESS;
    }
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> agvDoIn(Task wrkMast) {
        if (wrkMast.getIsNewIn().equals("XM1")) {
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
            return SUCCESS;
        }
        if (wrkMast.getTaskType().equals("agv_back")) {
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(new Date());
            if (!taskService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
            return SUCCESS;
        }
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
        if (!Objects.isNull(wrkMast.getSourceStaNo())) {
            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
@@ -1028,8 +1100,10 @@
                }
                station.setBarcode("");
                if (!basStationService.updateById(station)) {
                    basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
                    throw new CoolException("站点状态修改失败!!");
                }
                basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
            }
        }
@@ -1110,7 +1184,8 @@
            locCache.setBarcode(wrkMast.getBarcode());
            locCache.setModiTime(new Date());
            locCache.setIoTime(new Date());
            if (!locCacheService.updateById(locCache)) {
            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                throw new CoolException("库位状态修改失败!");
            }
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
@@ -1137,81 +1212,89 @@
            // 根据工作号,查询工作明细档
            List<TaskDetl> wrkDetls53 = taskDetlService
                    .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            if (wrkDetls53.isEmpty()) {
                // exceptionHandle("拣料入库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg("拣料入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                        + wrkMast.getLocNo() + "]");
            }
            for (TaskDetl wrkDetl : wrkDetls53) {
                LocDetl locDetl = locDetlService.selectItem(locCache.getLocNo(), wrkDetl.getMatnr(),
                        wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                        wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
                        wrkDetl.getBoxType3());
                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                        .eq("supp_code", wrkDetl.getSuppCode())
                        .eq("matnr", wrkDetl.getMatnr())
                        .eq("loc_no", wrkMast.getLocNo()));
                if (null != locDetl) {
                    if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locCache.getLocNo(),
                            wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                            wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(),
                            wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
                        // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]",
                        // wrkMast.getWrkNo(), wrkMast.getLocNo());
                    Double v = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
                    locDetl.setBoxType1(wrkDetl.getBoxType1());
                    locDetl.setOrderNo(wrkDetl.getOrderNo());
                    locDetl.setStandby1(wrkDetl.getSuppCode());
                    locDetl.setAnfme(v);
                    if (v.compareTo(0.0) == 0) {
                        if (!locDetlService.delete(new EntityWrapper<LocDetl>()
                                .eq("supp_code", wrkDetl.getSuppCode())
                                .eq("matnr", wrkDetl.getMatnr())
                                .eq("loc_no", wrkMast.getLocNo()))) {
                            return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                    + wrkMast.getLocNo() + "]");
                        }
                    } else {
                        if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
                                .eq("supp_code", wrkDetl.getSuppCode())
                                .eq("matnr", wrkDetl.getMatnr())
                                .eq("loc_no", wrkMast.getLocNo()))) {
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                    + wrkMast.getLocNo() + "]");
                        }
                    }
                }
                // 更新订单完成数量
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService
                        .selectOne(new EntityWrapper<OrderDetlPakout>()
                                .eq("order_no", wrkDetl.getOrderNo())
                                .eq("supp_code", wrkDetl.getSuppCode())
                                .eq("matnr", wrkDetl.getMatnr()));
                if (!Cools.isEmpty(orderDetlPakout)) {
                    double v = Math.round((orderDetlPakout.getQty() + wrkDetl.getAnfme()) * 10000) / 10000.0;
                    orderDetlPakout.setQty(v);
                    if (!orderDetlPakoutService.update(orderDetlPakout, new EntityWrapper<OrderDetlPakout>()
                            .eq("order_no", wrkDetl.getOrderNo())
                            .eq("supp_code", wrkDetl.getSuppCode())
                            .eq("matnr", wrkDetl.getMatnr()))) {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                                + wrkMast.getLocNo() + "]");
                    }
                }
                // 更新订单完成数量
                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
                        wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                if (orderDetlPakout == null) {
                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                            wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                            wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                            wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                }
                try {
                    if (!Cools.isEmpty(orderDetlPakout)) {
                        if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
                                wrkDetl.getMatnr(),
                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
                                wrkDetl.getAnfme())) {
                            // exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
                            // wrkMast.getWrkNo(), wrkMast.getLocNo());
                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                            return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo()
                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
                        }
                    }
                } catch (Exception ignore) {
                }
            }
            Date now = new Date();
            // 修改库位状态 Q ====>> F
            if (locCache.getLocSts().equals("Q")) {
                locCache.setLocSts("F");
                locCache.setBarcode(wrkMast.getBarcode());
                locCache.setIoTime(now);
                locCache.setModiTime(now);
                if (!locCacheService.updateById(locCache)) {
                    // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]",
                    // wrkMast.getWrkNo(), wrkMast.getLocNo());
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                            + wrkMast.getLocNo() + "]");
            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                    .eq("loc_no", locCache.getLocNo()));
            if (Objects.isNull(locDetls) || locDetls.isEmpty()) {
                locCache.setLocSts("D");
            } else {
                Double sum = locDetls.stream().mapToDouble(LocDetl::getAnfme).sum();
                if (sum.compareTo(0.0) == 0) {
                    locCache.setLocSts("D");
                } else {
                    // 修改库位状态 Q ====>> F
                    locCache.setLocSts("F");
                }
            }
            locCache.setBarcode(wrkMast.getBarcode());
            locCache.setIoTime(now);
            locCache.setModiTime(now);
            if (!locCacheService.update(locCache, new EntityWrapper<LocCache>().eq("loc_no", locCache.getLocNo()))) {
                // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]",
                // wrkMast.getWrkNo(), wrkMast.getLocNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg("拣料入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
                        + wrkMast.getLocNo() + "]");
            }
            // 修改工作主档状态
            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
            wrkMast.setModiTime(now);
            if (!taskService.updateById(wrkMast)) {
                // exceptionHandle("更新入库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL
                        .setMsg("更新入库完成状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
src/main/java/com/zy/common/constant/MesConstant.java
@@ -7,16 +7,16 @@
    //小系统接口地址
//    public static final String URL = "http://webservice.kopen.com.cn:1482/kc-api/api/wms/ ";
    public static final String URL = "http://10.143.23.26:1482/kc-api/api/wms/ ";
    public static final String URL = "http://10.143.23.25:1483/kc-api/api/wms/ ";
    //AGV拉口地址
    public static final String AGV_URL = "http://192.168.238.202/rcs/rtas/api/robot/controller";
    //WCS系统接口地址
    public static final String WCS_URL = "http://192.168.238.32:9090/wcs";
//    public static final String WCS_URL = "http://192.168.238.31:9090/wcs";
    public static final String WCS_URL = "http://192.168.238.31:9090/wcs";
    //上架派工单反馈
    public static final String IN_DISPATCH_RESULT = "getInDispatchResult";
    //备货指示派工单反馈
src/main/java/com/zy/common/model/LocDto.java
@@ -28,6 +28,8 @@
    private String boxType2 = "1";
    private String boxType3 = "1";
    private String suppCode;
    private String orderNo;
    private Double anfme;
src/main/java/com/zy/common/model/TaskDto.java
@@ -65,6 +65,31 @@
        return false;
    }
    public static boolean hasAgv(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return false;
        }
        for (TaskDto taskDto : list) {
            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
                return true;
            }
        }
        return false;
    }
    public static TaskDto findAgv(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return null;
        }
        for (TaskDto taskDto : list) {
            if (dto.getLocNo().equals(taskDto.getLocNo()) && taskDto.getAgvStaNo().equals(dto.getAgvStaNo())) {
                return taskDto;
            }
        }
        return null;
    }
    public static TaskDto find(List<TaskDto> list, TaskDto dto) {
        if (Cools.isEmpty(list)) {
            return null;
src/main/java/com/zy/common/service/CommonService.java
@@ -202,13 +202,27 @@
        }
        StartupDto startupDto = new StartupDto();
        locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
//        new EntityWrapper<LocMast>(new EntityWrapper<LocMast>()
//                .ge("row1", rowLastno.getsRow())
//                .le("row1", rowLastno.geteRow())
//                .eq("crn_no", crnNo)
//                .eq("loc_type1", locTypeDto.getLocType1())
//                .eq("loc_sts", "O")
//                .orderAsc(Arrays.asList("lev1", "row1", "bay1")))
        Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>()
                .ge("row1", rowLastno.getsRow())
                .le("row1", rowLastno.geteRow())
                .eq("crn_no", crnNo)
                .eq("loc_type1", locTypeDto.getLocType1())
                .eq("loc_sts", "O")
                .orderAsc(Arrays.asList("lev1", "row1", "bay1")));
                .orderAsc(Arrays.asList( "row1", "lev1", "bay1"));
        if (locTypeDto.getLocType1() != 2) {
            wrapper.eq("crn_no", crnNo);
        }
        locMast = locMastService.selectOne(wrapper);
        // int crnCountO = wrkMastService.selectCount(new
        // EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
        // 生成工作号
src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -56,13 +56,7 @@
    </resultMap>
    <sql id="standbyAll">
        and batch = #{batch}
        and brand = #{brand}
        and standby1 = #{standby1}
        and standby2 = #{standby2}
        and standby3 = #{standby3}
        and box_type2 = #{boxType2}
        and box_type3 = #{boxType3}
    </sql>
    <sql id="standbyAllMemo">
        --         and line_number = #{lineNumber}
src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@
    </resultMap>
    <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
        select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
        select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 )  and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
    </select>