自动化立体仓库 - WMS系统
pang.jiabao
2025-03-25 6154d01e223e051fc87650ee87baea9c913eac3e
库存管制/解除管制
1个文件已添加
26个文件已修改
797 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/LocDetlController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkDetlLogController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ViewWorkInBean.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetlLog.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/FrozenParam.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlLogService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewWorkInMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlLogMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workIn.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/report/workOut.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl_detail.html 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locDetlCheckQuery.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locDetlQuery.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkOut.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -14,6 +14,7 @@
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.FrozenParam;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.MatService;
@@ -50,6 +51,26 @@
        return R.ok(stockOut);
    }
    @PostMapping(value = "/locDetl/frozenInventory")
    @ManagerAuth(memo = "库存管制")
    public R frozen(@RequestBody List<FrozenParam> param){
        if (param.size() == 0)  {
            return R.parse("未收到数据");
        }
        return locDetlService.frozenInventory(param, getUser().getUsername());
    }
    @PostMapping(value = "/locDetl/unfreezeInventory")
    @ManagerAuth(memo = "库存解除管制")
    public R unfreeze(@RequestBody List<FrozenParam> param){
        if (param.size() == 0)  {
            return R.parse("未收到数据");
        }
        return locDetlService.unfreezeInventory(param, getUser().getUsername());
    }
    @RequestMapping(value = "/locDetl/update")
    public R update1() {
        if (!locDetlService.updateLocNo("0402805", "0402804")) {
src/main/java/com/zy/asrs/controller/WrkDetlLogController.java
@@ -83,6 +83,7 @@
            String specs = null;
            String zpallet = null;
            String batch = null;
            String frozen = null;
            Double anfme = null;
            Date modiTimeStart = null, modiTimeEnd = null;
            for (Map.Entry<String, Object> entry : param.entrySet()) {
@@ -108,11 +109,13 @@
                    anfme = Double.parseDouble(val);
                }else if (entry.getKey().equals("matnr")) {
                    matnr = val;
                } else if(entry.getKey().equals("frozen")) {
                    frozen = val;
                }
            }
            List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectWrkDetlLogs(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd, curr, limit);
            List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectWrkDetlLogs(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd, frozen, curr, limit);
            Page<WrkDetlLog> page1 = new Page<WrkDetlLog>(curr, limit).setRecords(wrkDetlLogs);
            page1.setTotal(wrkDetlLogService.selectWrkDetlLogsTotal(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd));
            page1.setTotal(wrkDetlLogService.selectWrkDetlLogsTotal(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd,frozen));
            return R.ok(page1);
        } catch (Exception e) {
            return R.error("异常" + e);
src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -8,13 +8,17 @@
import com.core.common.SpringUtils;
import com.zy.asrs.service.LocMastService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.Config;
import com.zy.system.entity.User;
import com.zy.system.service.ConfigService;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
@Data
@@ -158,6 +162,24 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 是否管制
     */
    @ApiModelProperty(value= "是否管制,0.取消管制,1.管制")
    private Integer frozen;
    private String controlMemo;
    private Date controlDate;
    private String controlUser;
    private String uncontrolMemo;
    private Date uncontrolDate;
    private String uncontrolUser;
    public String getLocNo$(){
        LocMastService service = SpringUtils.getBean(LocMastService.class);
        LocMast locMast = service.selectById(this.locNo);
@@ -249,12 +271,42 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getControlDate$(){
        if (Cools.isEmpty(this.controlDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.controlDate);
    }
    public String getUncontrolDate$(){
        if (Cools.isEmpty(this.uncontrolDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.uncontrolDate);
    }
//    public long getStoreDate(){
//        long timeNow = new Date().getTime();
//        long timeCreate = this.appeTime.getTime();
//
//        return (timeNow - timeCreate) /24/60/60/1000;
//    }
public String getFrozen$() {
    if (null == this.frozen){ return null; }
    switch (this.frozen){
        case 0:
            return "未管制";
        case 1:
            ConfigService service = SpringUtils.getBean(ConfigService.class);
            Config config = service.selectConfigByCode("durationOfFilmRollControl");
            int day = Integer.parseInt(config.getValue());
            LocalDate appLocalDate = this.appeTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            LocalDate newAppLocalDate = appLocalDate.plusDays(day);
            return newAppLocalDate.isAfter(LocalDate.now()) ? "已管制1": "已管制2";
        default:
            return null;
    }
}
    public void sync(Object source) {
        Synchro.Copy(source, this);
src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
@@ -3,12 +3,16 @@
import com.baomidou.mybatisplus.annotations.TableField;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.system.entity.Config;
import com.zy.system.entity.User;
import com.zy.system.service.ConfigService;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
/**
@@ -155,6 +159,24 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 是否管制
     */
    @ApiModelProperty(value= "是否管制,0.取消管制,1.管制")
    private Integer frozen;
    private String control_memo;
    private Date control_date;
    private String control_user;
    private String uncontrol_memo;
    private Date uncontrol_date;
    private String uncontrol_user;
    public String getModiUser$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modi_user);
@@ -190,4 +212,36 @@
        }
    }
    public String getControlDate$(){
        if (Cools.isEmpty(this.control_date)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.control_date);
    }
    public String getUncontrolDate$(){
        if (Cools.isEmpty(this.uncontrol_date)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.uncontrol_date);
    }
    public String getFrozen$() {
        if (null == this.frozen){ return null; }
        switch (this.frozen){
            case 0:
                return "未管制";
            case 1:
                ConfigService service = SpringUtils.getBean(ConfigService.class);
                Config config = service.selectConfigByCode("durationOfFilmRollControl");
                int day = Integer.parseInt(config.getValue());
                Date appeTime = (Date) this.appe_time;
                LocalDate appLocalDate = appeTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
                LocalDate newAppLocalDate = appLocalDate.plusDays(day);
                return newAppLocalDate.isAfter(LocalDate.now()) ? "已管制1": "已管制2";
            default:
                return null;
        }
    }
}
src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -5,13 +5,17 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.Config;
import com.zy.system.entity.User;
import com.zy.system.service.ConfigService;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
@Data
@@ -269,6 +273,24 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 是否管制
     */
    @ApiModelProperty(value= "是否管制,0.取消管制,1.管制")
    private Integer frozen;
    private String controlMemo;
    private Date controlDate;
    private String controlUser;
    private String uncontrolMemo;
    private Date uncontrolDate;
    private String uncontrolUser;
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
@@ -357,6 +379,36 @@
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getControlDate$(){
        if (Cools.isEmpty(this.controlDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.controlDate);
    }
    public String getUncontrolDate$(){
        if (Cools.isEmpty(this.uncontrolDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.uncontrolDate);
    }
    public String getFrozen$() {
        if (null == this.frozen){ return null; }
        switch (this.frozen){
            case 0:
                return "未管制";
            case 1:
                ConfigService service = SpringUtils.getBean(ConfigService.class);
                Config config = service.selectConfigByCode("durationOfFilmRollControl");
                int day = Integer.parseInt(config.getValue());
                LocalDate appLocalDate = this.appeTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
                LocalDate newAppLocalDate = appLocalDate.plusDays(day);
                return newAppLocalDate.isAfter(LocalDate.now()) ? "已管制1": "已管制2";
            default:
                return null;
        }
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -4,13 +4,17 @@
import com.baomidou.mybatisplus.annotations.TableName;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.system.entity.Config;
import com.zy.system.entity.User;
import com.zy.system.service.ConfigService;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
@Data
@@ -268,6 +272,24 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 是否管制
     */
    @ApiModelProperty(value= "是否管制,0.取消管制,1.管制")
    private Integer frozen;
    private String controlMemo;
    private Date controlDate;
    private String controlUser;
    private String uncontrolMemo;
    private Date uncontrolDate;
    private String uncontrolUser;
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
@@ -357,5 +379,36 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getControlDate$(){
        if (Cools.isEmpty(this.controlDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.controlDate);
    }
    public String getUncontrolDate$(){
        if (Cools.isEmpty(this.uncontrolDate)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.uncontrolDate);
    }
    public String getFrozen$() {
        if (null == this.frozen){ return null; }
        switch (this.frozen){
            case 0:
                return "未管制";
            case 1:
                ConfigService service = SpringUtils.getBean(ConfigService.class);
                Config config = service.selectConfigByCode("durationOfFilmRollControl");
                int day = Integer.parseInt(config.getValue());
                LocalDate appLocalDate = this.appeTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
                LocalDate newAppLocalDate = appLocalDate.plusDays(day);
                return newAppLocalDate.isAfter(LocalDate.now()) ? "已管制1": "已管制2";
            default:
                return null;
        }
    }
}
src/main/java/com/zy/asrs/entity/param/FrozenParam.java
New file
@@ -0,0 +1,33 @@
package com.zy.asrs.entity.param;
import lombok.Data;
/**
 * @author pang.jiabao
 * @description 库存管制/解除管制 dto
 * @createDate 2024/12/17 9:24
 */
@Data
public class FrozenParam {
    /**
     * 库位号
     */
    private String locNo;
    /**
     * 商品编号
     */
    private String matnr;
    /**
     * 批次
     */
    private String batch;
    /**
     * 管制原因
     */
    private String memo;
}
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.param.FrozenParam;
import com.zy.asrs.entity.result.StockVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -77,5 +78,12 @@
    List<LocDetl> selectLocDetlUnilateralMoveShuttleY(@Param("matnr")String matnr,@Param("batch")String batch,@Param("grade")String grade);
    List<LocDetl> selectLocDetlUnilateralMoveShuttleN(@Param("matnr")String matnr,@Param("batch")String batch,@Param("grade")String grade);
    /**
     * 管制/解除管制库存明细
     * @param obj 库存
     * @param userName 操作账号
     * @param frozen 0解除管制,1管制
     */
    void frozenInventory(@Param("obj") FrozenParam obj,@Param("userName") String userName, @Param("frozen") int frozen);
}
src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java
@@ -26,6 +26,7 @@
                                       @Param("anfme") Double anfme,
                                       @Param("modiTimeStart") Date modiTimeStart,
                                       @Param("modiTimeEnd") Date modiTimeEnd,
                                       @Param("frozen") String frozen,
                                       @Param("pageNumber") Integer curr,
                                       @Param("pageSize") Integer limit);
@@ -37,7 +38,8 @@
                                @Param("batch") String batch,
                                @Param("anfme") Double anfme,
                                @Param("modiTimeStart") Date modiTimeStart,
                                @Param("modiTimeEnd") Date modiTimeEnd);
                                @Param("modiTimeEnd") Date modiTimeEnd,
                                @Param("frozen") String frozen);
}
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.param.FrozenParam;
import com.zy.asrs.entity.result.StockVo;
import java.util.List;
@@ -11,6 +13,16 @@
public interface LocDetlService extends IService<LocDetl> {
    /**
     * 管制
     */
    R frozenInventory(List<FrozenParam> param,String userName);
    /**
     * 库存解除管制
     */
    R unfreezeInventory(List<FrozenParam> param,String userName);
    Page<LocDetl> getPage(Page<LocDetl> page);
    LocDetl selectItem(String locNo, String matnr, String batch);
src/main/java/com/zy/asrs/service/WrkDetlLogService.java
@@ -10,8 +10,8 @@
    boolean save(Integer workNo);
    List<WrkDetlLog> selectWrkDetlLogs(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd, Integer curr, Integer limit);
    List<WrkDetlLog> selectWrkDetlLogs(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd,String frozen, Integer curr, Integer limit);
    Long selectWrkDetlLogsTotal(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd);
    Long selectWrkDetlLogsTotal(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd, String frozen);
}
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.param.FrozenParam;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
@@ -16,6 +18,26 @@
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
    @Override
    public R frozenInventory(List<FrozenParam> param,String userName) {
        for(FrozenParam obj : param) {
            this.baseMapper.frozenInventory(obj,userName,1);
        }
        return R.ok("库存管制完成!");
    }
    @Override
    public R unfreezeInventory(List<FrozenParam> param,String userName) {
        for(FrozenParam obj : param) {
            this.baseMapper.frozenInventory(obj, userName, 0);
        }
        return R.ok("解除管制成功!");
    }
    @Override
    public Page<LocDetl> getPage(Page<LocDetl> page) {
        page.setRecords(baseMapper.listByPage(page.getCondition()));
        page.setTotal(baseMapper.listByPageCount(page.getCondition()));
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -211,7 +211,11 @@
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch());
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
                if (null != one) {
                    if (one.getFrozen() == 1)
                        throw new CoolException(one.getMatnr() + "【" + one.getBatch() + "】" + "已冻结");
                    locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
                }
            }
        }
        if (!locDetlDtos.isEmpty()) {
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
@@ -18,12 +18,12 @@
    }
    @Override
    public List<WrkDetlLog> selectWrkDetlLogs(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd, Integer curr, Integer limit) {
        return this.baseMapper.selectWrkDetlLogs(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd, curr, limit);
    public List<WrkDetlLog> selectWrkDetlLogs(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd, String frozen,Integer curr, Integer limit) {
        return this.baseMapper.selectWrkDetlLogs(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd,frozen, curr, limit);
    }
    @Override
    public Long selectWrkDetlLogsTotal(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd) {
        return this.baseMapper.selectWrkDetlLogsTotal(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd);
    public Long selectWrkDetlLogsTotal(Integer wrkNo, String orderNo,String matnr,String specs,String zpallet,String batch,Double anfme, Date modiTimeStart, Date modiTimeEnd, String frozen) {
        return this.baseMapper.selectWrkDetlLogsTotal(wrkNo, orderNo,matnr,specs,zpallet,batch,anfme, modiTimeStart, modiTimeEnd,frozen);
    }
}
src/main/resources/mapper/LocDetlMapper.xml
@@ -44,6 +44,13 @@
        <result column="appe_user" property="appeUser" />
        <result column="appe_time" property="appeTime" />
        <result column="memo" property="memo" />
        <result column="frozen" property="frozen" />
        <result column="control_memo" property="controlMemo" />
        <result column="control_date" property="controlDate" />
        <result column="control_user" property="controlUser" />
        <result column="uncontrol_memo" property="uncontrolMemo" />
        <result column="uncontrol_date" property="uncontrolDate" />
        <result column="uncontrol_user" property="uncontrolUser" />
    </resultMap>
    <sql id="batchSeq">
@@ -56,6 +63,19 @@
            </otherwise>
        </choose>
    </sql>
    <update id="frozenInventory">
        update asr_loc_detl
        <set>
            <if test="frozen == 1">
                frozen = 1,control_memo=#{obj.memo},control_date=getdate(),control_user=#{userName}
            </if>
            <if test="frozen == 0">
                frozen = 0,uncontrol_memo=#{obj.memo},uncontrol_date=getdate(),uncontrol_user=#{userName}
            </if>
        </set>
        where loc_no = #{obj.locNo} and matnr = #{obj.matnr} and batch = #{obj.batch}
    </update>
    <select id="selectItem" resultMap="BaseResultMap">
        select top 1 *
@@ -118,6 +138,9 @@
        <if test="weight!=null and weight!='' ">
            and a.weight like '%' + #{weight} + '%'
        </if>
        <if test="frozen!=null and frozen!='' ">
            and a.frozen=#{frozen}
        </if>
    </sql>
    <select id="getStockOutPage" resultMap="BaseResultMap">
src/main/resources/mapper/ViewWorkInMapper.xml
@@ -48,6 +48,12 @@
        <if test="specs != null and specs != ''">
            and specs like concat('%',#{specs},'%')
        </if>
    <if test="frozen != null and frozen eq '0'.toString()">
        and control_memo = ''
    </if>
    <if test="frozen != null and frozen eq '1'.toString()">
        and control_memo != ''
    </if>
</sql>
<sql id="viewWorkOutConditionSql">
src/main/resources/mapper/WrkDetlLogMapper.xml
@@ -45,6 +45,13 @@
        <result column="appe_user" property="appeUser"/>
        <result column="appe_time" property="appeTime"/>
        <result column="memo" property="memo"/>
        <result column="frozen" property="frozen" />
        <result column="control_memo" property="controlMemo" />
        <result column="control_date" property="controlDate" />
        <result column="control_user" property="controlUser" />
        <result column="uncontrol_memo" property="uncontrolMemo" />
        <result column="uncontrol_date" property="uncontrolDate" />
        <result column="uncontrol_user" property="uncontrolUser" />
    </resultMap>
    <sql id="batchSeq">
@@ -74,6 +81,12 @@
        <if test="specs != null and specs != ''">
            and a.specs like concat('%',#{specs},'%')
        </if>
        <if test="frozen != null and frozen eq '0'.toString()">
            and a.control_memo = ''
        </if>
        <if test="frozen != null and frozen eq '1'.toString()">
            and a.control_memo != ''
        </if>
    </sql>
    <select id="selectWrkDetlLogs" resultMap="BaseResultMap">
src/main/webapp/static/js/common.js
@@ -254,5 +254,77 @@
    ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
    ,{field: 'zpallet', align: 'center',title: '条码', hide: false}
    ,{field: 'barcode', align: 'center',title: '条码', hide: true}
    ,{field: 'frozen$', align: 'center',title: '管制否',
        templet: function(d) {
            // 根据条件判断字体颜色
            if (d.frozen$ === '已管制1') {
                return '<span style="color: #6bf14d;">已管制</span>';
            } else if (d.frozen$ === '已管制2') {
                return '<span style="color: #de3434;">已管制</span>';
            } else {
                return '<span">' +d.frozen$ + '</span>';
            }
        }
    }
    ,{field: 'controlMemo', align: 'center',title: '管制备注', hide: true}
    ,{field: 'controlDate$', align: 'center',title: '管制时间', hide: true}
    ,{field: 'controlUser', align: 'center',title: '管制用户', hide: true}
    ,{field: 'uncontrolMemo', align: 'center',title: '解除管制备注', hide: true}
    ,{field: 'uncontrolDate$', align: 'center',title: '解除管制时间', hide: true}
    ,{field: 'uncontrolUser', align: 'center',title: '解除管制用户', hide: true}
]
// 出库日志
var inAndOutDetlLog = [
    {field: 'matnr', align: 'center',title: '物料编号', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', sort:true,hide: true}
    ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true}
    ,{field: 'batch', align: 'center',title: '批号', sort:true,hide: false}
    ,{field: 'model', align: 'center',title: '型号', hide: false}
    ,{field: 'anfme', align: 'center',title: '数量', hide: true}
    ,{field: 'specs', align: 'center',title: '膜类型', hide: false}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: true}
    ,{field: 'price', align: 'center',title: '单价', hide: true}
    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
    ,{field: 'units', align: 'center',title: '单位量', hide: true}
    ,{field: 'origin', align: 'center',title: '产地', hide: true}
    ,{field: 'manu', align: 'center',title: '厂家', hide: true}
    ,{field: 'manuDate', align: 'center',title: '生产日期', hide: false}
    ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
    ,{field: 'length', align: 'center',title: '长', hide: false}
    ,{field: 'weight', align: 'center',title: '宽', hide: false}
    ,{field: 'volume', align: 'center',title: '面积', hide: false}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: '制购', hide: true}
    ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
    ,{field: 'zpallet', align: 'center',title: '条码', hide: false}
    ,{field: 'barcode', align: 'center',title: '条码', hide: true}
    ,{field: 'frozen$', align: 'center',title: '管制否', hide: true,
        templet: function(d) {
            // 根据条件判断字体颜色
            if (d.frozen$ === '已管制1') {
                return '<span style="color: #6bf14d;">已管制</span>';
            } else if (d.frozen$ === '已管制2') {
                return '<span style="color: #de3434;">已管制</span>';
            } else {
                return '<span">' +d.frozen$ + '</span>';
            }
        }
    }
    ,{field: 'control_memo', align: 'center',title: '管制备注', hide: true}
    ,{field: 'controlDate$', align: 'center',title: '管制时间', hide: true}
    ,{field: 'control_user', align: 'center',title: '管制用户', hide: true}
    ,{field: 'uncontrol_memo', align: 'center',title: '解除管制备注', hide: true}
    ,{field: 'uncontrolDate$', align: 'center',title: '解除管制时间', hide: true}
    ,{field: 'uncontrol_user', align: 'center',title: '解除管制用户', hide: true}
]
src/main/webapp/static/js/locDetl/locDetl.js
@@ -1,6 +1,9 @@
var pageCurr;
var requestData;
var controlFlag;
function getCol() {
    var cols = [
        {type: 'checkbox'},
        {field: 'locNo$', align: 'center',title: '库位号'}
        ,{field: 'storeDate', align: 'center',title: '库龄(天)', sort:true, hide: true}
        ,{field: 'matnr', align: 'center',title: '物料编号', sort:true}
@@ -35,6 +38,24 @@
        ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
        ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
        ,{field: 'zpallet', align: 'center',title: '条码'}
        ,{field: 'frozen$', align: 'center',title: '管制否',
            templet: function(d) {
                // 根据条件判断字体颜色
                if (d.frozen$ === '已管制1') {
                    return '<span style="color: #6bf14d;">已管制</span>';
                } else if (d.frozen$ === '已管制2') {
                    return '<span style="color: #de3434;">已管制</span>';
                } else {
                    return '<span">' +d.frozen$ + '</span>';
                }
            }
        }
        ,{field: 'controlMemo', align: 'center',title: '管制备注', hide: true}
        ,{field: 'controlDate$', align: 'center',title: '管制时间', hide: true}
        ,{field: 'controlUser', align: 'center',title: '管制用户', hide: true}
        ,{field: 'uncontrolMemo', align: 'center',title: '解除管制备注', hide: true}
        ,{field: 'uncontrolDate$', align: 'center',title: '解除管制时间', hide: true}
        ,{field: 'uncontrolUser', align: 'center',title: '解除管制用户', hide: true}
    ];
@@ -212,6 +233,74 @@
                    });
                });
                break;
            // 冻结
            case 'frozen':
                let frozenData = checkStatus.data;
                if (frozenData.length === 0){
                    layer.msg('请选择数据');
                } else {
                    var flag = frozenData.find(item => item.frozen === 1)
                    if (flag === undefined) {
                    } else {
                        layer.msg(flag.batch + '已管制');
                        return;
                    }
                    requestData = frozenData.map(obj => ({
                            locNo: obj.locNo,
                            matnr: obj.matnr,
                            batch: obj.batch
                        })
                    );
                    controlFlag = 1;
                    layer.open({
                        type: 2,
                        title: '库存管制',
                        maxmin: true,
                        area: ['400px', top.detailHeight],
                        shadeClose: false,
                        content: 'locDetl_detail.html',
                        success: function(layero, index){
                            layer.getChildFrame('#data-detail-submit-edit', index).hide();
                            clearFormVal(layer.getChildFrame('#detail', index));
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                        }
                    });
                }
                break;
            // 解冻
            case 'unfreeze':
                let unfreezeData = checkStatus.data;
                if (unfreezeData.length === 0){
                    layer.msg('请选择数据');
                } else {
                    var flag2 = unfreezeData.find(item => item.frozen === 0)
                    if (flag2 === undefined) {
                    } else {
                        layer.msg(flag2.batch + '未管制');
                        return;
                    }
                    requestData = unfreezeData.map(obj => ({
                            locNo: obj.locNo,
                            matnr: obj.matnr,
                            batch: obj.batch
                        })
                    );
                    controlFlag = 0;
                    layer.open({
                        type: 2,
                        title: '库存解除管制',
                        maxmin: true,
                        area: ['400px', top.detailHeight],
                        shadeClose: false,
                        content: 'locDetl_detail.html',
                        success: function(layero, index){
                            layer.getChildFrame('#data-detail-submit-edit', index).hide();
                            clearFormVal(layer.getChildFrame('#detail', index));
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                        }
                    });
                }
                break;
        }
    });
@@ -372,11 +461,49 @@
    // 数据保存动作
    form.on('submit(save)', function () {
        if (banMsg != null){
            layer.msg(banMsg);
        var memo = $('#memo').val().trim()
        if (memo === '') {
            layer.msg('备注不能为空');
            return;
        }
        method("add");
        var index = layer.load(1, {
            shade: [0.5, '#000'] //0.1透明度的背景
        });
        parent.requestData.forEach(item => {
            item.memo = memo;
        })
        var path = parent.controlFlag === 1 ? "/locDetl/frozenInventory" : "/locDetl/unfreezeInventory";
        $.ajax({
            url: baseUrl + path,
            headers: {'token': localStorage.getItem('token')},
            data: JSON.stringify(parent.requestData),
            dataType: 'json',
            contentType: 'application/json;charset=UTF-8',
            method: 'POST',
            traditional: true,
            success: function (res) {
                if (res.code === 200) {
                    $("#data-detail :input").each(function () {
                        $(this).val("");
                    });
                    parent.layer.closeAll();
                    parent.tableReload(false);
                } else if (res.code === 403) {
                    top.location.href = baseUrl + "/";
                } else {
                    layer.msg(res.msg)
                }
                layer.close(index);
            }
        })
        // if (banMsg != null){
        //     layer.msg(banMsg);
        //     return;
        // }
        // method("add");
    });
    // 数据修改动作
src/main/webapp/static/js/report/workIn.js
@@ -4,7 +4,7 @@
        {field: 'ioTime$', align: 'center', title: '入库日期', width: 200}
        ,{field: 'loc_no', align: 'center',title: '库位号'}
    ];
    cols.push.apply(cols, detlCols);
    cols.push.apply(cols, inAndOutDetlLog);
    return cols;
}
src/main/webapp/static/js/report/workOut.js
@@ -6,7 +6,7 @@
        ,{field: 'crn_str_time', align: 'center',title: '堆垛机启动时间'}
        ,{field: 'crn_end_time', align: 'center',title: '堆垛机停止时间'}
    ];
    cols.push.apply(cols, detlCols);
    cols.push.apply(cols, inAndOutDetlLog);
    return cols;
}
src/main/webapp/views/locDetl/locDetl.html
@@ -9,6 +9,14 @@
    <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>
        #frozen-btn {
            display: none;
        }
        #unfreeze-btn{
            display: none;
        }
    </style>
</head>
<body>
@@ -54,6 +62,16 @@
            <input class="layui-input" type="text" name="weight" placeholder="宽" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <select name="frozen" class="layui-input" type="text" autocomplete="off">
                <!--                    <option style="display: none"></option>-->
                <option value="">管制否</option>
                <option value="0">未管制</option>
                <option value="1">已管制</option>
            </select>
        </div>
    </div>
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="row" placeholder="排数" autocomplete="off">-->
@@ -68,8 +86,8 @@
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" style="margin-right: 10px" lay-submit lay-filter="search">搜索</button>
        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" style="margin-right: 10px" lay-submit lay-filter="reset">重置</button>
<!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>-->
    </div>
@@ -81,7 +99,9 @@
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px">导出</button>
        <button class="layui-btn layui-btn-primary layui-bg-blue layui-btn-sm" id="frozen-btn" lay-event="frozen" style="margin-top: 1px">管制</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="unfreeze-btn" lay-event="unfreeze" style="margin-top: 1px">解除管制</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 1px">导出</button>
    </div>
</script>
src/main/webapp/views/locDetl/locDetl_detail.html
@@ -15,146 +15,18 @@
<!-- 详情 -->
<div id="data-detail" class="layer_self_wrap">
    <form id="detail" class="layui-form">
    <!--
        <div class="layui-inline"  style="display: none">
            <label class="layui-form-label"><span class="not-null">*</span>编  号:</label>
            <div class="layui-input-inline">
                <input id="id" class="layui-input" type="text" placeholder="编号">
            </div>
        </div>
    -->
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>库 位 号:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required"  style="display: none">
                <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label"><span class="not-null">*</span>物  料:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">仓 库 号:</label>
            <div class="layui-input-inline">
                <input id="lgnum" class="layui-input" type="text" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label" style="font-size: x-small">转储请求编号:</label>
            <div class="layui-input-inline">
                <input id="tbnum" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">行 项 目:</label>
            <div class="layui-input-inline">
                <input id="tbpos" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label" style="font-size: x-small">物料标签ID:</label>
            <div class="layui-input-inline">
                <input id="zmatid" class="layui-input" type="text" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">物料描述:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">工  厂:</label>
            <div class="layui-input-inline">
                <input id="werks" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">数  量:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" lay-verify="number" >
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">单  位:</label>
            <div class="layui-input-inline">
                <input id="altme" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">托盘条码:</label>
            <div class="layui-input-inline">
                <input id="zpallet" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">用户ID:</label>
            <div class="layui-input-inline">
                <input id="bname" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;">
            <label class="layui-form-label">备  注:</label>
        <div class="layui-inline">
            <label class="layui-form-label"><span class="not-null">*</span>备注:</label>
            <div class="layui-input-inline">
                <input id="memo" class="layui-input" type="text">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改人员:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="modiUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">修改时间:</label>
            <div class="layui-input-inline">
                <input id="modiTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">创 建 者:</label>
            <div class="layui-input-inline cool-auto-complete">
                <input id="appeUser" class="layui-input" type="text" lay-verify="number"  style="display: none">
                <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()>
                <div class="cool-auto-complete-window">
                    <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
                    <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                    </select>
                </div>
            </div>
        </div>
        <div class="layui-inline"  style="width:31%;display: none">
            <label class="layui-form-label">添加时间:</label>
            <div class="layui-input-inline">
                <input id="appeTime$" class="layui-input" type="text" autocomplete="off">
            </div>
        </div>
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
            温馨提示:<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
        </div>
    </form>
</div>
src/main/webapp/views/pakStore/locDetlCheckQuery.html
@@ -86,6 +86,15 @@
                <input class="layui-input" type="text" name="maktx" placeholder="物料描述" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <select name="frozen" class="layui-input" type="text" autocomplete="off">
                    <option value="">管制否</option>
                    <option value="0">未管制</option>
                    <option value="1">已管制</option>
                </select>
            </div>
        </div>
        <!-- 日期范围 -->
        <div class="layui-inline" style="width: 300px">
            <div class="layui-input-inline">
@@ -186,6 +195,10 @@
                        layer.msg("请选择数据", {icon: 2});
                        return;
                    }
                    if (data.some(obj => obj.frozen === 1)) {
                        layer.msg("管制膜卷不允许出库!");
                        return;
                    }
                    let locNos = [];
                    data.forEach(function(elem) {
                        locNos.push(elem.locNo);
src/main/webapp/views/pakStore/locDetlQuery.html
@@ -77,6 +77,15 @@
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <select name="frozen" class="layui-input" type="text" autocomplete="off">
                    <option value="">管制否</option>
                    <option value="0">未管制</option>
                    <option value="1">已管制</option>
                </select>
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline cool-auto-complete">
                <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="请输入" autocomplete="off" style="display: none">
                <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="堆垛机号" onfocus=this.blur()>
@@ -197,6 +206,10 @@
                        layer.msg("请选择数据");
                        return;
                    }
                    if (data.some(obj => obj.frozen === 1)) {
                        layer.msg("管制膜卷不允许出库!");
                        return;
                    }
                    parent.addTableData(data);
                    break;
            }
src/main/webapp/views/report/viewWorkOut.html
@@ -44,9 +44,19 @@
            <input class="layui-input" type="text" name="batch" placeholder="货品特征" autocomplete="off">
        </div>
    </div>
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="anfme" placeholder="数量" autocomplete="off">-->
<!--        </div>-->
<!--    </div>-->
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="anfme" placeholder="数量" autocomplete="off">
            <select name="frozen" class="layui-input" type="text" autocomplete="off">
                <!--                    <option style="display: none"></option>-->
                <option value="">管制否</option>
                <option value="0">未管制</option>
                <option value="1">已管制</option>
            </select>
        </div>
    </div>
    <div class="layui-inline" style="width: 300px">
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html
@@ -49,6 +49,16 @@
            <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <select name="frozen" class="layui-input" type="text" autocomplete="off">
                <!--                    <option style="display: none"></option>-->
                <option value="">管制否</option>
                <option value="0">未管制</option>
                <option value="1">已管制</option>
            </select>
        </div>
    </div>
<!--    <div class="layui-inline">-->
<!--        <div class="layui-input-inline">-->
<!--            <input class="layui-input" type="text" name="anfme" placeholder="数量" autocomplete="off">-->