自动化立体仓库 - WMS系统
zyx
2023-10-02 cda03cb23bc12f582029ac8d6df103d86e61fc8b
AGV调试更改 工作档自增
30个文件已修改
240 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvOpenController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/StaDescMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/AgvWrkMastService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/AppAuthUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvLocDetl/locDetl.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWaitPakin/waitPakin.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWrkDetl/wrkDetl.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWrkMast/wrkMast.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -170,7 +170,7 @@
        if("F".equals(agvBasDevp.getLocSts()) || "R".equals(agvBasDevp.getLocSts())){
            //先去入库通知档找明细
            Page<AgvWaitPakin> agvWaitPakinPage = agvWaitPakinService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWaitPakin>()
                    .eq("zpallet", agvBasDevp.getBarcode()));
                    .eq("supp_code", agvBasDevp.getBarcode()));
            if(agvWaitPakinPage.getRecords().size()>0){
                return R.ok(agvWaitPakinPage);
            }else {
src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -1,5 +1,7 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.AppAuth;
import com.core.common.Cools;
@@ -55,17 +57,29 @@
    @AppAuth(memo = "ESS任务回调")
    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){
        apiLogService.save(
                "ESS任务回调",
                "/tzskwms/agv/task/event/status",
                null,
                null,
                JSON.toJSONString(JSONObject.toJSONString(param)),
                null,
                true
        );
        //save api log (appkey 后续添加)
        AppAuthUtil.auth("test-appkey",param, request);
        AppAuthUtil.auth("",param, request);
        AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", param.getTaskCode()));
        if(Cools.isEmpty(agvWrkMast)){
            return R.error("任务编号错误");
        }
        if(!checkParam(param,agvWrkMast)){
            return R.error("任务参数与工作档参数不符合");
        }
//        if(!checkParam(param,agvWrkMast)){
//            return R.error("任务参数与工作档参数不符合");
//        }
        AgvTask agvTask = AgvTask.valueOf(param.getEventType());
        Class<AgvTask> clz = AgvTask.class;
src/main/java/com/zy/asrs/mapper/AgvWaitPakinLogMapper.java
@@ -10,7 +10,7 @@
@Repository
public interface AgvWaitPakinLogMapper extends BaseMapper<AgvWaitPakinLog> {
    @Insert("insert into agv_cust_wait_pakin_log select * from agv_cust_wait_pakin where zpallet=#{zpallet}")
    @Insert("insert into agv_cust_wait_pakin_log select * from agv_cust_wait_pakin where supp_code=#{zpallet}")
    int save(String zpallet);
}
src/main/java/com/zy/asrs/mapper/AgvWrkMastLogMapper.java
@@ -1,6 +1,7 @@
package com.zy.asrs.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.AgvWrkMast;
import com.zy.asrs.entity.AgvWrkMastLog;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
@@ -13,4 +14,18 @@
    @Insert("insert into agv_wrk_mast_log select * from agv_wrk_mast where wrk_no=#{workNo}")
    int save(Integer workNo);
    @Insert("INSERT INTO agv_wrk_mast_log(wrk_no,wrk_sts," +
            "io_type," +
            "io_time," +
            "io_pri," +
            "source_loc_no," +
            "loc_no," +
            "barcode," +
            "appe_user," +
            "appe_time," +
            "modi_user," +
            "modi_time) " +
            "VALUES(#{wrkNo},#{wrkSts},#{ioType},#{ioTime},#{ioPri},#{sourceLocNo},#{locNo},#{barcode},#{appeUser},#{appeTime},#{modiUser},#{modiTime})")
    int saveByWrkMast(AgvWrkMast agvWrkMast);
}
src/main/java/com/zy/asrs/mapper/AgvWrkMastMapper.java
@@ -2,9 +2,24 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.AgvWrkMast;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AgvWrkMastMapper extends BaseMapper<AgvWrkMast> {
    @Insert("INSERT INTO agv_wrk_mast(wrk_sts," +
            "io_type," +
            "io_time," +
            "io_pri," +
            "source_loc_no," +
            "loc_no," +
            "barcode," +
            "appe_user," +
            "appe_time," +
            "modi_user," +
            "modi_time) " +
            "VALUES(#{wrkSts},#{ioType},#{ioTime},#{ioPri},#{sourceLocNo},#{locNo},#{barcode},#{appeUser},#{appeTime},#{modiUser},#{modiTime})")
    public int insertByIncrease(AgvWrkMast agvWrkMast);
}
src/main/java/com/zy/asrs/mapper/StaDescMapper.java
@@ -4,6 +4,7 @@
import com.zy.asrs.entity.StaDesc;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -18,4 +19,7 @@
    StaDesc queryCrnStn(Integer crnNo);
    @Select("SELECT dev_no FROM [dbo].[asr_bas_devp] WHERE out_enable = 'Y' AND loading = 'N' AND autoing = 'Y'")
    List<Integer> queryOutStation();
}
src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
@@ -1,10 +1,11 @@
package com.zy.asrs.service;
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.AgvWrkMast;
import com.zy.asrs.entity.AgvWrkMastLog;
public interface AgvWrkMastLogService extends IService<AgvWrkMastLog> {
    boolean save(Integer workNo);
    boolean save(AgvWrkMast workNo);
}
src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -15,4 +15,6 @@
    public int containerMove(List<AgvWrkMast> agvWrkMastList) throws IOException;
    public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) throws IOException;
    public boolean insertByIncrease(AgvWrkMast agvWrkMast);
}
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -122,7 +122,7 @@
                if("F".equals(agvBasDevpDto.getLocSts()) || "R".equals(agvBasDevpDto.getLocSts())){
                    AgvWaitPakin agvWaitPakin = agvWaitPakinService.selectOne(new EntityWrapper<AgvWaitPakin>()
                            .eq("zpallet", agvBasDevpDto.getBarcode()));
                            .eq("supp_code", agvBasDevpDto.getBarcode()));
                    agvBasDevpDto.setAgvWaitPakin(agvWaitPakin);
@@ -134,7 +134,9 @@
                    }
                }
                setFlagForAgvBasDevpDto(agvWrkMast,agvBasDevpDto);
                if(!Cools.isEmpty(agvWrkMast)){
                    setFlagForAgvBasDevpDto(agvWrkMast,agvBasDevpDto);
                }
                return agvBasDevpDto;
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -34,7 +34,7 @@
    public void addLocDetlInfo(String locNo, int taskCode) {
        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", taskCode));
        List<AgvLocDetl> agvLocDetlList = agvWrkDetls.stream().map(agvWrkDetl -> {
        agvWrkDetls.stream().map(agvWrkDetl -> {
            AgvLocDetl agvLocDetl = new AgvLocDetl();
            BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
            agvLocDetl.setLocNo(locNo);
@@ -69,7 +69,7 @@
                LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNo, anfme);
                locDto.setCsocode(csocode);
                locDto.setIsoseq(isoseq);
                locDto.setContainerCode(agvLocDetl.getZpallet());
                locDto.setContainerCode(agvLocDetl.getSuppCode());
                //当前库位所处楼层
                int floor = Integer.parseInt(agvLocDetl.getLocNo().split("@")[1]);
                locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
@@ -157,7 +157,8 @@
    private void wapperSetCondition(Wrapper wrapper,String column, String condition){
        if(Cools.isEmpty(condition)){
            wrapper.isNull(column);
            wrapper.andNew().eq(column,"").or().isNull(column);
            //wrapper.isNull(column);
        }else {
            wrapper.eq(column,condition);
        }
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -51,7 +51,7 @@
        //检查是否已存在相同的托盘条码,存在则抛出异常
        if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().
                eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
                eq("supp_code", param.getBarcode()).eq("io_status", "N")) > 0) {
            throw new CoolException(param.getBarcode() + "数据正在进行入库");
        }
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.common.model.OrderDto;
import com.zy.common.model.StartupDto;
import com.zy.common.model.TaskDto;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.AgvCommonService;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
@@ -79,7 +78,7 @@
                throw new CoolException("选中的站点中含有货位状态不为F.在库的站点,请重新选择");
            }
            List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("zpallet", agvBasDevp.getBarcode()));
            List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
            //检索库位,选择合适的库位
            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor());
@@ -89,7 +88,7 @@
            //生成工作档明细
            //createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId);
            agvWaitPakinList.forEach(wp -> {
                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getZpallet(),now,userId,wp.getThreeCode(),wp.getDeadTime());
                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
            });
            //更新源站点信息
            updateAgvBasDevp(agvBasDevp,"R");
@@ -119,7 +118,7 @@
            long wrkSts = 21L;
            String sourceLocNo = taskDto.getLocNo();
            String targetLocNo = taskDto.getAgvStaNo();
            String barcode = agvLocDetl.getZpallet();
            String barcode = agvLocDetl.getSuppCode();
            //明细档所需参数
            String mantr = taskDto.getLocDtos().get(0).getMatnr();
            String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
@@ -514,8 +513,8 @@
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode,  Date now, Long userId){
        AgvWrkMast wrkMast = new AgvWrkMast();
        //生成工作号
        int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        wrkMast.setWrkNo(workNo);
//        int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
//        wrkMast.setWrkNo();
        //工作状态
        wrkMast.setWrkSts(wrkSts);
        //入出库类型
@@ -542,9 +541,16 @@
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        if (!agvWrkMastService.insert(wrkMast)) {
        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        int i = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>());
        log.info(i + "");
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
        return wrkMast;
    }
@@ -556,8 +562,8 @@
    private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){
        AgvWrkMast wrkMast = new AgvWrkMast();
        //生成工作号
        int workNo = agvCommonService.getWorkNo(0);
        wrkMast.setWrkNo(workNo);
        //int workNo = agvCommonService.getWorkNo(0);
        //wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        // 工作状态:201.生成入库任务ID
        wrkMast.setWrkSts(201L);
src/main/java/com/zy/asrs/service/impl/AgvWrkMastLogServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.zy.asrs.entity.AgvWrkMast;
import com.zy.asrs.entity.AgvWrkMastLog;
import com.zy.asrs.mapper.AgvWrkMastLogMapper;
import com.zy.asrs.service.AgvWrkMastLogService;
@@ -10,8 +11,8 @@
public class AgvWrkMastLogServiceImpl extends ServiceImpl<AgvWrkMastLogMapper, AgvWrkMastLog> implements AgvWrkMastLogService {
    @Override
    public boolean save(Integer workNo) {
        return this.baseMapper.save(workNo) > 0;
    public boolean save(AgvWrkMast agvWrkMast) {
        return this.baseMapper.saveByWrkMast(agvWrkMast) > 0;
    }
}
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -39,6 +39,9 @@
    @Value("${agv.containerMoveInPath}")
    private String containerMoveInPath;
    @Value("${agv.containerMoveOutPath}")
    private String containerMoveOutPath;
    @Autowired
    AgvWrkMastMapper agvWrkMastMapper;
    @Autowired
@@ -103,7 +106,13 @@
            positionCodeMap.put("positionCode",agvWrkMast.getLocNo());
            positionCodeMapList.add(positionCodeMap);
        }
        return doHttpRequest(containerMoveParam,"容器入场任务下发",url, containerMoveInPath,null,"127.0.0.1");
        return doHttpRequest(containerMoveParam,"容器离场任务下发",url, containerMoveOutPath,null,"127.0.0.1");
    }
    public boolean insertByIncrease(AgvWrkMast agvWrkMast) {
        int index = this.baseMapper.insertByIncrease(agvWrkMast);
        return index > 0;
    }
    private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -124,6 +124,7 @@
                anfme = anfme > issued ? issued : anfme;
                LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme);
                List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
                locDto.setStaNos(staNos);
                locDto.setCsocode(csocode);
                locDto.setIsoseq(isoseq);
@@ -187,7 +188,7 @@
    private void wapperSetCondition(Wrapper wrapper,String column, String condition){
        if(Cools.isEmpty(condition)){
            wrapper.isNull(column);
            wrapper.andNew().eq(column,"").or().isNull(column);
        }else {
            wrapper.eq(column,condition);
        }
src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
@@ -230,7 +230,7 @@
    private void wapperSetCondition(Wrapper wrapper,String column, String condition){
        if(Cools.isEmpty(condition)){
            wrapper.isNull(column);
            wrapper.andNew().eq(column,"").or().isNull(column);
        }else {
            wrapper.eq(column,condition);
        }
src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -38,7 +38,8 @@
        if (row == 31 || row == 32) {
            crnNo = 3;
        }
        return this.baseMapper.queryOutStaNosByCrnNo(crnNo, typeNo);
        return this.baseMapper.queryOutStation();
        //return this.baseMapper.queryOutStaNosByCrnNo(crnNo, typeNo);
    }
    @Override
@@ -58,13 +59,13 @@
    public StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo) {
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", typeNo)
                .eq("stn_no", stnNo)
                .eq("crn_no", crnNo);
                .eq("stn_no", stnNo);
                //.eq("crn_no", crnNo);
        StaDesc staDesc = this.selectOne(wrapper);
        if (staDesc == null) {
            wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", typeNo)
                    .eq("crn_no", crnNo);
                    .eq("type_no", typeNo);
                    //.eq("crn_no", crnNo);
            List<StaDesc> staDescs = this.selectList(wrapper);
            if (Cools.isEmpty(staDescs)) {
                throw new CoolException("出库路径不存在");
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -18,6 +19,7 @@
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class AgvWrkMastHandler extends AbstractHandler<String> {
@@ -57,21 +59,19 @@
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
        }
        //生成AGV工作历史档
        agvWrkMastLogService.save(wrkNo);
        agvWrkMastLogService.save(agvWrkMast);
        //生成AGV工作明细历史档
        agvWrkDetlLogService.save(wrkNo);
        //删除AGV工作档
        agvWrkMastService.deleteById(wrkNo);
        //删除AGV工作明细档
        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
        //类型为入库时
        if(agvWrkMast.getIoType() == 1){
            //更新目标库位明细
            log.info("更新目标库位明细 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
            agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
            //生成入库通知历史档
            agvWaitPakinLogService.save(barcode);
            boolean save = agvWaitPakinLogService.save(barcode);
            //删除入库通知档
            agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
            log.info("删除入库通知档 supp_code: " + barcode);
            agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
        }
        //类型为库位移转时
        if(agvWrkMast.getIoType() == 11){
@@ -90,6 +90,11 @@
                orderService.checkComplete(o);
            });
        }
        //删除AGV工作档
        agvWrkMastService.deleteById(wrkNo);
        //删除AGV工作明细档
        agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
        return SUCCESS;
    }
@@ -110,7 +115,7 @@
        }
        //生成AGV工作历史档
        agvWrkMastLogService.save(wrkNo);
        agvWrkMastLogService.save(agvWrkMast);
        //生成AGV工作明细历史档
        agvWrkDetlLogService.save(wrkNo);
        //删除AGV工作档
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -118,7 +118,7 @@
            }
            // 修改订单状态 作业中 ===>> 已完成
            for (WrkDetl wrkDetl : wrkDetlsKeyOrder) {
                if (BaseController.isJSON(wrkDetl.getOrderNo())) {
                if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
                    orderService.checkComplete(wrkDetl.getOrderNo());
                } else {
                    // 订单合并出库
src/main/java/com/zy/asrs/utils/AppAuthUtil.java
@@ -1,7 +1,5 @@
package com.zy.asrs.utils;
import com.core.common.Cools;
import com.core.exception.CoolException;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
@@ -13,9 +11,9 @@
    public static void auth(String appkey, Object obj, HttpServletRequest request) {
        request.setAttribute("cache", obj);
        if (Cools.isEmpty(appkey)) {
            throw new CoolException("认证失败,请确认appkey无误!");
        }
//        if (Cools.isEmpty(appkey)) {
//            throw new CoolException("认证失败,请确认appkey无误!");
//        }
//        if (!APP_KEY_LIST.contains(appkey)) {
//            throw new CoolException("认证失败,请确认appkey无误!");
//        }
src/main/java/com/zy/asrs/utils/Utils.java
@@ -387,7 +387,7 @@
    public static void wapperSetCondition(Wrapper wrapper, String column, String condition){
        if(Cools.isEmpty(condition)){
            wrapper.isNull(column);
            wrapper.andNew().eq(column,"").or().isNull(column);
        }else {
            wrapper.eq(column,condition);
        }
src/main/resources/application.yml
@@ -63,9 +63,13 @@
    password: Poy@2022
agv:
  url: localhost:8080
  taskCreatePath: /test/task/create
  containerMoveInPath: /test/container/moveIn
#  url: localhost:8080
#  taskCreatePath: /test/task/create
#  containerMoveInPath: /test/container/moveIn
  url: 10.10.10.182:9046
  taskCreatePath: /task/create
  containerMoveInPath: /expand/api/moveIn/container
  containerMoveOutPath: /expand/api/moveOut/container
u8:
  url: http://192.168.1.55:8010
src/main/webapp/static/js/agvLocDetl/locDetl.js
@@ -8,7 +8,7 @@
        ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false}
        ,{field: 'batch', align: 'center',title: '序列码', width: 300, sort:true, hide: true}
        ,{field: 'anfme', align: 'center',title: '数量'}
        ,{field: 'zpallet', align: 'center',title: '托盘条码'}
        ,{field: 'suppCode', align: 'center',title: '料箱码'}
        ,{field: 'threeCode', align: 'center',title: '销售订单号'}
        ,{field: 'dead_time', align: 'center',title: '销售订单行号'}
        ,{field: 'specs', align: 'center',title: '规格型号', hide: false}
src/main/webapp/static/js/agvWaitPakin/waitPakin.js
@@ -1,6 +1,10 @@
var pageCurr;
function getCol() {
    var cols = [ {type: 'checkbox'} ];
    cols.push(
        //{field: 'suppCode', align: 'center',title: '料箱码'},
        {field: 'anfme', align: 'center',title: '数量'});
    arrRemove(detlCols,  'field', 'zpallet');
    cols.push.apply(cols, detlCols);
    cols.push({field: 'status', align: 'center',title: '数据状态', templet:function(row){
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='正常|锁定'' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
src/main/webapp/static/js/agvWaitPakinLog/waitPakinLog.js
@@ -2,6 +2,10 @@
function getCol() {
    var cols = [
    ];
    cols.push(
        //{field: 'suppCode', align: 'center',title: '料箱码'},
        {field: 'anfme', align: 'center',title: '数量'});
    arrRemove(detlCols,  'field', 'zpallet');
    cols.push.apply(cols, detlCols);
    cols.push({field: 'status', align: 'center',title: '数据状态', templet:function(row){
                var html = "<input value='status' type='checkbox' lay-skin='switch' lay-text='正常|锁定' lay-filter='tableCheckbox' disabled='disabled' table-index='"+row.LAY_TABLE_INDEX+"'";
src/main/webapp/static/js/agvWrkDetl/wrkDetl.js
@@ -4,6 +4,10 @@
        {field: 'wrkNo', align: 'center',title: '工作号'}
        ,{field: 'ioTime$', align: 'center',title: '工作时间', width: 160}
    ];
    cols.push(
        //{field: 'suppCode', align: 'center',title: '料箱码'},
        {field: 'anfme', align: 'center',title: '数量'});
    arrRemove(detlCols,  'field', 'zpallet');
    cols.push.apply(cols, detlCols);
    cols.push({field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true})
src/main/webapp/static/js/agvWrkDetlLog/wrkDetlLog.js
@@ -4,6 +4,10 @@
        {field: 'wrkNo', align: 'center',title: '工作号'}
        ,{field: 'ioTime$', align: 'center',title: '工作时间'}
    ];
    cols.push(
        //{field: 'suppCode', align: 'center',title: '料箱码'},
        {field: 'anfme', align: 'center',title: '数量'});
    arrRemove(detlCols,  'field', 'zpallet');
    cols.push.apply(cols, detlCols);
    cols.push({field: 'modiUser$', align: 'center',title: '修改人员',hide: true}
        ,{field: 'modiTime$', align: 'center',title: '修改时间',hide: true}
src/main/webapp/static/js/agvWrkMast/wrkMast.js
@@ -30,7 +30,7 @@
            ,{field: 'sourceLocNo', align: 'center',title: '源库位'}
            ,{field: 'locNo', align: 'center',title: '目标库位'}
            //,{field: 'steNo', align: 'center',title: '小车', width: 70}
            ,{field: 'barcode', align: 'center',title: '条码', hide: false}
            ,{field: 'barcode', align: 'center',title: '料箱码', hide: false}
            ,{field: 'preHave', align: 'center',title: '先入品', hide: true}
            ,{field: 'takeNone', align: 'center',title: '空操作', hide: true}
            // ,{field: 'picking', align: 'center',title: '拣料', templet:function(row){
src/main/webapp/static/js/agvWrkMastLog/wrkMastLog.js
@@ -20,53 +20,16 @@
        toolbar: '#toolbar',
        cellMinWidth: 50,
        cols: [[
            // {type: 'checkbox'}
//            ,{field: 'id', title: 'ID', sort: true,align: 'center', fixed: 'left', width: 80}
//             ,{field: 'id', align: 'center',title: '编号'}
            {field: 'wrkNo', align: 'center',title: '工作号',event: 'wrkNo', sort: true}
            ,{field: 'ioTime$', align: 'center',title: '工作时间', width:160, sort: true}
            ,{field: 'wrkSts$', align: 'center',title: '工作状态', width:160}
            ,{field: 'ioType$', align: 'center',title: '入出库类型', width:160}
            ,{field: 'ioPri', align: 'center',title: '优先级'}
            //,{field: 'crnNo$', align: 'center',title: '堆垛机号'}
            //,{field: 'sourceStaNo$', align: 'center',title: '源站'}
            //,{field: 'staNo$', align: 'center',title: '目标站'}
            ,{field: 'sourceLocNo', align: 'center',title: '源库位'}
            ,{field: 'locNo', align: 'center',title: '目标库位'}
            // ,{field: 'picking', align: 'center',title: '拣料', templet:function(row){
            //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.picking === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            // ,{field: 'exitMk', align: 'center',title: '退出', templet:function(row){
            //         var html = "<input value='exitMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.exitMk === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            // ,{field: 'emptyMk', align: 'center',title: '空板', templet:function(row){
            //         var html = "<input value='emptyMk' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.emptyMk === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            //
            // ,{field: 'crnStrTime$', align: 'center',title: '堆垛机启动时间'}
            // ,{field: 'crnEndTime$', align: 'center',title: '堆垛机停止时间'}
            // ,{field: 'plcStrTime$', align: 'center',title: '拣料时间'}
            ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true}
            ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true}
            // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'cursor:pointer'}
            // ,{field: 'appeTime$', align: 'center',title: '添加时间'}
            ,{field: 'barcode', align: 'center',title: '条码'}
            // ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){
            //         var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
            //         if(row.fullPlt === 'Y'){html += " checked ";}
            //         html += ">";
            //         return html;
            //     }}
            ,{field: 'barcode', align: 'center',title: '料箱码'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 80}
        ]],
        request: {
src/main/webapp/static/js/common.js
@@ -225,6 +225,8 @@
var detlCols = [
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: true}
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false}
    ,{field: 'suppCode', align: 'center',title: '料箱码', hide: false}
    ,{field: 'suppCode', align: 'center',title: '料箱码', hide: true}
    ,{field: 'matnr', align: 'center',title: '存货编码',hide: true}
    ,{field: 'matnr', align: 'center',title: '存货编码'}
    ,{field: 'batch', align: 'center',title: '序列码', width: 300, sort:true, hide: true}