自动化立体仓库 - WMS系统
skyouc
9 小时以前 a167c1ba9816896114debe769b8247a72f3a1a99
缓冲区功能调整
10个文件已修改
1个文件已添加
418 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/LocCache.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastLog.java 217 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locCache/locCache.js 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locCache/locCache.html 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locCache/locDetail.html 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocCache.java
@@ -156,6 +156,9 @@
    @TableField("area_name")
    private String areaName;
    @ApiModelProperty("优先级")
    private Integer sort;
    /**
     * 是否冻结,0.未冻结,1.已冻结
     */
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -22,11 +22,12 @@
    private static final long serialVersionUID = 1L;
    private Long id;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @TableId(value = "wrk_no", type = IdType.INPUT)
    @TableField("wrk_no")
    private Integer wrkNo;
src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -25,481 +25,488 @@
    /**
     * 编号
     */
    @ApiModelProperty(value= "编号")
    @ApiModelProperty(value = "编号")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @ApiModelProperty("日志ID")
    private Long logId;
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @ApiModelProperty(value = "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("inv_wh")
    private String invWh;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    private Date ymd;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    private String mk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("whs_type")
    private Integer whsType;
    /**
     * 工作状态
     */
    @ApiModelProperty(value= "工作状态")
    @ApiModelProperty(value = "工作状态")
    @TableField("wrk_sts")
    private Integer wrkSts;
    /**
     * 入出库类型
     */
    @ApiModelProperty(value= "入出库类型")
    @ApiModelProperty(value = "入出库类型")
    @TableField("io_type")
    private Integer ioType;
    /**
     * 堆垛机号
     */
    @ApiModelProperty(value= "堆垛机号")
    @ApiModelProperty(value = "堆垛机号")
    @TableField("crn_no")
    private Integer crnNo;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("sheet_no")
    private String sheetNo;
    /**
     * 优先级
     */
    @ApiModelProperty(value= "优先级")
    @ApiModelProperty(value = "优先级")
    @TableField("io_pri")
    private Double ioPri;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("wrk_date")
    private Date wrkDate;
    /**
     * 目标库位
     */
    @ApiModelProperty(value= "目标库位")
    @ApiModelProperty(value = "目标库位")
    @TableField("loc_no")
    private String locNo;
    /**
     * 目标站
     */
    @ApiModelProperty(value= "目标站")
    @ApiModelProperty(value = "目标站")
    @TableField("sta_no")
    private Integer staNo;
    /**
     * 源站
     */
    @ApiModelProperty(value= "源站")
    @ApiModelProperty(value = "源站")
    @TableField("source_sta_no")
    private Integer sourceStaNo;
    /**
     * 源库位
     */
    @ApiModelProperty(value= "源库位")
    @ApiModelProperty(value = "源库位")
    @TableField("source_loc_no")
    private String sourceLocNo;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("loc_sts")
    private String locSts;
    /**
     * 拣料
     */
    @ApiModelProperty(value= "拣料")
    @ApiModelProperty(value = "拣料")
    private String picking;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("link_mis")
    private String linkMis;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("online_yn")
    private String onlineYn;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("upd_mk")
    private String updMk;
    /**
     * 退出
     */
    @ApiModelProperty(value= "退出")
    @ApiModelProperty(value = "退出")
    @TableField("exit_mk")
    private String exitMk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("plt_type")
    private Integer pltType;
    /**
     * 空板
     */
    @ApiModelProperty(value= "空板")
    @ApiModelProperty(value = "空板")
    @TableField("empty_mk")
    private String emptyMk;
    /**
     * 工作时间
     */
    @ApiModelProperty(value= "工作时间")
    @ApiModelProperty(value = "工作时间")
    @TableField("io_time")
    private Date ioTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ctn_type")
    private Integer ctnType;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    private String packed;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ove_mk")
    private String oveMk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("mtn_type")
    private Double mtnType;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("user_no")
    private String userNo;
    /**
     * 堆垛机启动时间
     */
    @ApiModelProperty(value= "堆垛机启动时间")
    @ApiModelProperty(value = "堆垛机启动时间")
    @TableField("crn_str_time")
    private Date crnStrTime;
    /**
     * 堆垛机停止时间
     */
    @ApiModelProperty(value= "堆垛机停止时间")
    @ApiModelProperty(value = "堆垛机停止时间")
    @TableField("crn_end_time")
    private Date crnEndTime;
    /**
     * 拣料时间
     */
    @ApiModelProperty(value= "拣料时间")
    @ApiModelProperty(value = "拣料时间")
    @TableField("plc_str_time")
    private Date plcStrTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("crn_pos_time")
    private Date crnPosTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("load_time")
    private Double loadTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("exp_time")
    private Double expTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ref_wrkno")
    private Double refWrkno;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ref_iotime")
    private Date refIotime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @ApiModelProperty(value = "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @ApiModelProperty(value = "修改时间")
    @TableField("modi_time")
    private Date modiTime;
    /**
     * 创建者
     */
    @ApiModelProperty(value= "创建者")
    @ApiModelProperty(value = "创建者")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @ApiModelProperty(value = "添加时间")
    @TableField("appe_time")
    private Date appeTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("pause_mk")
    private String pauseMk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("error_time")
    private Date errorTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("error_memo")
    private String errorMemo;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ctn_kind")
    private Integer ctnKind;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("manu_type")
    private String manuType;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("memo_m")
    private String memoM;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("sc_weight")
    private Double scWeight;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("log_mk")
    private String logMk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("log_err_time")
    private Date logErrTime;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("log_err_memo")
    private String logErrMemo;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    @ApiModelProperty(value = "条码")
    private String barcode;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("Pdc_type")
    private String PdcType;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value = "")
    @TableField("ctn_no")
    private String ctnNo;
    /**
     * 满板
     */
    @ApiModelProperty(value= "满板")
    @ApiModelProperty(value = "满板")
    @TableField("full_plt")
    private String fullPlt;
    /**
     * 先入品 / 双重入库
     */
    @ApiModelProperty(value= "先入品")
    @ApiModelProperty(value = "先入品")
    @TableField("pre_have")
    private String preHave;
    /**
     * 空操作 / 取货无箱
     */
    @ApiModelProperty(value= "空操作")
    @ApiModelProperty(value = "空操作")
    @TableField("take_none")
    private String takeNone;
    public WrkMastLog() {}
    public WrkMastLog() {
    }
    public String getWrkNo$(){
    public String getWrkNo$() {
        WrkMastService service = SpringUtils.getBean(WrkMastService.class);
        WrkMast wrkMast = service.selectById(this.wrkNo);
        if (!Cools.isEmpty(wrkMast)){
        if (!Cools.isEmpty(wrkMast)) {
            return String.valueOf(wrkMast.getWrkNo());
        }
        return null;
    }
    public String getYmd$(){
        if (Cools.isEmpty(this.ymd)){
    public String getYmd$() {
        if (Cools.isEmpty(this.ymd)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
    }
    public String getWrkSts$(){
    public String getWrkSts$() {
        BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class);
        BasWrkStatus basWrkStatus = service.selectById(this.wrkSts);
        if (!Cools.isEmpty(basWrkStatus)){
        if (!Cools.isEmpty(basWrkStatus)) {
            return String.valueOf(basWrkStatus.getWrkDesc());
        }
        return null;
    }
    public long getWrkSts(){
        return (long)this.wrkSts;
    public long getWrkSts() {
        if (wrkSts == null) {
            return 0;
        }
        return (long) this.wrkSts;
    }
    public String getIoType$(){
    public String getIoType$() {
        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
        BasWrkIotype basWrkIotype = service.selectById(this.ioType);
        if (!Cools.isEmpty(basWrkIotype)){
        if (!Cools.isEmpty(basWrkIotype)) {
            return String.valueOf(basWrkIotype.getIoDesc());
        }
        return null;
    }
    public String getCrnNo$(){
    public String getCrnNo$() {
        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
        BasCrnp basCrnp = service.selectById(this.crnNo);
        if (!Cools.isEmpty(basCrnp)){
        if (!Cools.isEmpty(basCrnp)) {
            return String.valueOf(basCrnp.getCrnNo());
        }
        return null;
    }
    public String getWrkDate$(){
        if (Cools.isEmpty(this.wrkDate)){
    public String getWrkDate$() {
        if (Cools.isEmpty(this.wrkDate)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
    }
    public String getLocNo$(){
    public String getLocNo$() {
        LocMastService service = SpringUtils.getBean(LocMastService.class);
        LocMast locMast = service.selectById(this.locNo);
        if (!Cools.isEmpty(locMast)){
        if (!Cools.isEmpty(locMast)) {
            return String.valueOf(locMast.getLocNo());
        }
        return null;
    }
    public String getStaNo$(){
    public String getStaNo$() {
        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
        BasDevp basDevp = service.selectById(this.staNo);
        if (!Cools.isEmpty(basDevp)){
        if (!Cools.isEmpty(basDevp)) {
            return String.valueOf(basDevp.getDevNo());
        }
        return null;
    }
    public String getSourceStaNo$(){
    public String getSourceStaNo$() {
        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
        BasDevp basDevp = service.selectById(this.sourceStaNo);
        if (!Cools.isEmpty(basDevp)){
        if (!Cools.isEmpty(basDevp)) {
            return String.valueOf(basDevp.getDevNo());
        }
        return null;
    }
    public String getSourceLocNo$(){
    public String getSourceLocNo$() {
        LocMastService service = SpringUtils.getBean(LocMastService.class);
        LocMast locMast = service.selectById(this.sourceLocNo);
        if (!Cools.isEmpty(locMast)){
        if (!Cools.isEmpty(locMast)) {
            return String.valueOf(locMast.getLocNo());
        }
        return null;
    }
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
    public String getIoTime$() {
        if (Cools.isEmpty(this.ioTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
    }
    public String getCrnStrTime$(){
        if (Cools.isEmpty(this.crnStrTime)){
    public String getCrnStrTime$() {
        if (Cools.isEmpty(this.crnStrTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
    }
    public String getCrnEndTime$(){
        if (Cools.isEmpty(this.crnEndTime)){
    public String getCrnEndTime$() {
        if (Cools.isEmpty(this.crnEndTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
    }
    public String getPlcStrTime$(){
        if (Cools.isEmpty(this.plcStrTime)){
    public String getPlcStrTime$() {
        if (Cools.isEmpty(this.plcStrTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
    }
    public String getCrnPosTime$(){
        if (Cools.isEmpty(this.crnPosTime)){
    public String getCrnPosTime$() {
        if (Cools.isEmpty(this.crnPosTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
    }
    public String getRefIotime$(){
        if (Cools.isEmpty(this.refIotime)){
    public String getRefIotime$() {
        if (Cools.isEmpty(this.refIotime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
    }
    public String getModiUser$(){
    public String getModiUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
    public String getModiTime$() {
        if (Cools.isEmpty(this.modiTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
    public String getAppeUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
    public String getAppeTime$() {
        if (Cools.isEmpty(this.appeTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getErrorTime$(){
        if (Cools.isEmpty(this.errorTime)){
    public String getErrorTime$() {
        if (Cools.isEmpty(this.errorTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
    }
    public String getLogErrTime$(){
        if (Cools.isEmpty(this.logErrTime)){
    public String getLogErrTime$() {
        if (Cools.isEmpty(this.logErrTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
@@ -15,7 +15,7 @@
@Repository
public interface WrkMastLogMapper extends BaseMapper<WrkMastLog> {
    @Insert("insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=#{workNo}")
    @Insert("insert into asr_wrk_mast_log select *, id as log_id from asr_wrk_mast where wrk_no=#{workNo}")
    int save(Integer workNo);
    /**
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -572,7 +572,6 @@
        // 无单组托
        if (Cools.isEmpty(param.getOrderNo())) {
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
@@ -1202,7 +1201,7 @@
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setSourceStaNo(orgSite);
        wrkMast.setSourceLocNo(orgSite);
        wrkMast.setEmptyMk(loc.getLocSts().equals("D") ? "Y" : "N"); // 空板
        wrkMast.setBarcode(barcode); // 托盘码
        wrkMast.setLinkMis("N");
src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
@@ -1,22 +1,48 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.InventoryFlowDto;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.WrkMastLog;
import com.zy.asrs.mapper.WrkMastLogMapper;
import com.zy.asrs.service.WrkMastLogService;
import com.zy.asrs.service.WrkMastService;
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.Map;
import java.util.Objects;
@Service("wrkMastLogService")
public class WrkMastLogServiceImpl extends ServiceImpl<WrkMastLogMapper, WrkMastLog> implements WrkMastLogService {
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean save(Integer workNo) {
        return this.baseMapper.save(workNo) > 0;
        WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
        if (Objects.isNull(mast)) {
            throw new CoolException("数据错误:任务不存在!!");
        }
        WrkMastLog mastLog = new WrkMastLog();
        BeanUtils.copyProperties(mast, mastLog);
        mastLog.setLogId(mast.getId());
        if (!wrkMastLogService.insert(mastLog)) {
            throw new CoolException("任务日志保存失败!!");
        }
        return true;
    }
    @Override
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -59,7 +59,6 @@
        return SUCCESS;
    }
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> doIn(WrkMast wrkMast) {
        if (wrkMast.getTaskType().equals("agv")) {
            Date now = new Date();
@@ -67,12 +66,11 @@
            if (Objects.isNull(locCache)) {
                throw new CoolException("数据错误,库位不存在!!");
            }
            List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("apallet", wrkMast.getBarcode()));
            List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
            if (Objects.isNull(apallet)) {
                throw new CoolException("数据错误:组托数据不存在!!");
            }
            List<LocDetl> detls = new ArrayList<>();
            apallet.forEach(pakin -> {
                LocDetl detl = new LocDetl();
                BeanUtils.copyProperties(pakin, detl);
@@ -88,19 +86,25 @@
                        .setAreaName(locCache.getAreaName())
                        .setUnit(pakin.getUnit())
                        .setBatch(pakin.getBatch());
                detls.add(detl);
            });
            if (!locDetlService.insertBatch(detls)) {
                throw new CoolException("库位明细保存失败!!");
            }
                if (!locDetlService.insert(detl)) {
                    throw new CoolException("库位明细保存失败!!");
                }
            });
            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
            locCache.setModiTime(new Date());
            locCache.setBarcode("");
            locCache.setModiTime(new Date());
            locCache.setIoTime(new Date());
            if (!locCacheService.updateById(locCache)) {
                throw new CoolException("库位状态修改失败!");
            }
            wrkMast.setWrkSts(5L);
            wrkMast.setModiTime(new Date());
            if (!wrkMastService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
        } else {
            Date now = new Date();
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
src/main/webapp/static/js/common.js
@@ -218,6 +218,28 @@
    ,{field: 'updateBy$', align: 'center',title: '修改人员', hide: true}
    ,{field: 'updateTime$', align: 'center',title: '修改时间', hide: true}
    ,{field: 'memo', align: 'center',title: '备注', hide: true}
]
var cacheCols = [
    {field: 'matnr', align: 'center',title: '商品编号(品号)', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', sort:true}
    ,{field: 'batch', align: 'center',title: '货品特征', sort:true}
    ,{field: 'anfme', align: 'center',title: '数量', hide: false}
    ,{field: 'specs', align: 'center',title: '规格', hide: false}
    ,{field: 'model', align: 'center',title: '代码', hide: true}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: false}
    ,{field: 'frozen$', align: 'center',title: '冻结否',hide: true,
        templet: function(d) {
            // 根据条件判断字体颜色
            if (d.frozen$ === '已冻结') {
                return '<span style="color: #34a8de;">' +d.frozen$ + '</span>';
            } else {
                return '<span">' +d.frozen$ + '</span>';
            }
        }}
]
var detlCols = [
src/main/webapp/static/js/locCache/locCache.js
@@ -36,10 +36,9 @@
            field: 'lev1',
            align: 'center',
            title: '层'
        }, {field: 'locType', align: 'center', title: '库位类型'}, {
            field: 'modiUser$',
            align: 'center',
            title: '修改人员'
        }, {field: 'locType', align: 'center', title: '库位类型'}
            ,{field: 'sort', align: 'center', title: '优先级'}
            ,{field: 'modiUser$', align: 'center', title: '修改人员'
        }, {field: 'modiTime$', align: 'center', title: '修改时间'}, {
            field: 'appeUser$',
            align: 'center',
@@ -133,7 +132,22 @@
    // 监听行工具事件
    table.on('tool(locCache)', function (obj) {
        var data = obj.data;
        console.log(data)
        switch (obj.event) {
            case 'showDetl':
                locNo = data?.locNo;
                // 弹层显示
                layer.open({
                    type: 2,
                    title: '库位明细',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    shadeClose: true,
                    content: 'locDetail.html',
                    success: function(layero, index){
                    }
                });
                break;
            case 'edit':
                showEditModel(data);
                break;
src/main/webapp/views/locCache/locCache.html
@@ -193,7 +193,8 @@
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="showDetl">明细</a>
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>-->
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</a>
</script>
src/main/webapp/views/locCache/locDetail.html
New file
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
    <link rel="stylesheet" href="../../static/css/common.css" media="all">
    <style>
    </style>
</head>
<body>
<div class="layui-inline" style="width:31%;margin-top: 20px">
    <label class="layui-form-label">库 位 号:</label>
    <div class="layui-input-inline">
        <input id="locNo" class="layui-input" type="text" disabled="disabled">
    </div>
</div>
<table class="layui-hide" id="locCacheDetls" lay-filter="locCacheDetls"></table>
</body>
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script>
<script type="text/javascript">
    var pageCur;
    function getCol() {
        var cols = [
            {field: 'locNo', align: 'center', title: '库位号'}
            , {field: 'ioTime$', align: 'center', title: '工作时间'}
        ];
        cols.push.apply(cols, cacheCols);
        return cols;
    }
    layui.use(['table', 'laydate', 'form'], function () {
        table = layui.table;
        var $ = layui.jquery;
        var form = layui.form;
        $('#locNo').val(parent.locNo);
        // 数据渲染
        tableIns1 = table.render({
            elem: '#locCacheDetls',
            headers: {token: localStorage.getItem('token')},
            url: baseUrl + '/locDetl/list/auth',
            where: {loc_no: parent.locNo},
            page: true,
            limit: 16,
            limits: [16, 30, 50, 100, 200, 500],
            even: true,
            toolbar: '#toolbar',
            cellMinWidth: 50,
            cols: [getCol()],
            request: {
                pageName: 'curr',
                pageSize: 'limit'
            },
            parseData: function (res) {
                return {
                    'code': res.code,
                    'msg': res.msg,
                    'count': res.data.total,
                    'data': res.data.records
                }
            },
            response: {
                statusCode: 200
            },
            done: function (res, curr, count) {
                if (res.code === 403) {
                    top.location.href = baseUrl + "/";
                }
                pageCur = curr;
                form.on('checkbox(tableCheckbox)', function (data) {
                    var _index = $(data.elem).attr('table-index') || 0;
                    if (data.elem.checked) {
                        res.data[_index][data.value] = 'Y';
                    } else {
                        res.data[_index][data.value] = 'N';
                    }
                });
            }
        });
    });
</script>
</html>