自动化立体仓库 - WMS系统
whycq
2022-12-05 0d549f0bb889983d2c6ab569a1304ac0c3fba6f6
Merge remote-tracking branch 'origin/hylyasrs' into hylyasrs
40个文件已修改
1个文件已添加
610 ■■■■ 已修改文件
pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocDetlController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocMastController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OrderController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocMast.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewWorkInMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/adjDetl/adjDetl.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/cool.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locMast/locMast.js 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/order/order.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/order/out.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/stoMan/stoQue.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/login.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/order/order.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locDetlQuery.html 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/locDetl.html 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/locDetl_detail.html 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkIn.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/report/viewWorkOut.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakin/waitPakin.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/waitPakinLog/waitPakinLog.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetl/wrkDetl.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/wrkMast/wrkDetl.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -22,8 +22,16 @@
        <springfox.version>2.7.0</springfox.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -12,13 +12,9 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.ManLocDetl;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.ManLocDetlService;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.*;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -33,6 +29,10 @@
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private AdjDetlService adjDetlService;
    @Autowired
    private LocDetlMapper locDetlMapper;
@@ -157,6 +157,78 @@
        locDetlService.updateById(locDetl);
        return R.ok();
    }
    @RequestMapping(value = "/locDetl/updateBatch/auth")
    @ManagerAuth(memo = "合同号(批号)修改")
    public R updateBatch(LocDetl locDetl){
        if (Cools.isEmpty(locDetl) || null==locDetl.getMatnr()){
            return R.error("参数异常");
        }else if (locDetl.getBatch().equals(locDetl.getSku())){
            return R.error("前后合同号一致,无需修改!!!");
        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
        if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("F")){
            return R.error("库位号必须存在并且库位状态为“F”!!!");
        }
        try{
            LocDetl locDetlSource = locDetlService.selectItem(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch());
            if (Cools.isEmpty(locDetlSource) || (locDetl.getBatch()==null &&  locDetlSource.getBatch()!=null)){
                locDetlSource = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                        .eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("batch",locDetl.getBatch()));
                if (Cools.isEmpty(locDetlSource)){
                    return R.error("异常");
                }
            }
            LocDetl locDetlEnd = locDetlService.selectItem(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getSku());
            if (!Cools.isEmpty(locDetlEnd) && locDetl.getSku()==null && locDetlEnd.getBatch()!=null){
                locDetlEnd = locDetlService.selectOne(new EntityWrapper<LocDetl>()
                        .eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("batch",locDetl.getSku()));
            }
            AdjDetl adjDetlSource = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getBatch(),null,locDetlSource.getAnfme(),null,null,locDetlSource.getAnfme()-locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date());
            AdjDetl adjDetlEnd=null;
            if (Cools.isEmpty(locDetlEnd)){
                adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,0.0,null,null,locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date());
            }else {
                adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,locDetlEnd.getAnfme(),null,null,locDetlEnd.getAnfme()+locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date());
            }
            if (locDetlSource.getAnfme()-locDetl.getAnfme()==0){
                if (Cools.isEmpty(locDetlEnd)){
                    locDetlSource.setBatch(locDetl.getSku());
                    if (locDetl.getBatch()==null || locDetl.getBatch()==""){
                        locDetlService.update(locDetlSource,new EntityWrapper<LocDetl>()
                                .eq("loc_no",locDetlSource.getLocNo()).eq("matnr",locDetlSource.getMatnr()).isNull("batch").or().eq("batch",""));
                    }else {
                        locDetlService.update(locDetlSource,new EntityWrapper<LocDetl>()
                                .eq("loc_no",locDetlSource.getLocNo()).eq("matnr",locDetlSource.getMatnr()).eq("batch",locDetl.getBatch()));
                    }
                }else {
                    locDetlService.updateAnfme(locDetlEnd.getAnfme()+locDetl.getAnfme(),locDetlEnd.getLocNo(),locDetlEnd.getMatnr(),locDetlEnd.getBatch());
                    if (locDetl.getBatch()==null || locDetl.getBatch()==""){
                        locDetlService.delete(new EntityWrapper<LocDetl>()
                                .eq("loc_no",locDetlSource.getLocNo()).eq("matnr",locDetlSource.getMatnr()).isNull("batch").or().eq("batch",""));
                    }else {
                        locDetlService.delete(new EntityWrapper<LocDetl>()
                                .eq("loc_no",locDetlSource.getLocNo()).eq("matnr",locDetlSource.getMatnr()).eq("batch",locDetlSource.getBatch()));
                    }
                }
            }else if (locDetlSource.getAnfme()>locDetl.getAnfme()){
                locDetlService.updateAnfme(locDetlSource.getAnfme()-locDetl.getAnfme(),locDetlSource.getLocNo(),locDetlSource.getMatnr(),locDetlSource.getBatch());
                if (Cools.isEmpty(locDetlEnd)){
                    locDetlSource.setAnfme(locDetl.getAnfme());
                    locDetlSource.setBatch(locDetl.getSku());
                    locDetlService.insert(locDetlSource);
                }else {
                    locDetlService.updateAnfme(locDetlEnd.getAnfme()+locDetl.getAnfme(),locDetlEnd.getLocNo(),locDetlEnd.getMatnr(),locDetlEnd.getBatch());
                }
            }else {
                return R.error("输入数量有误,请规范操作!!!");
            }
            adjDetlService.insert(adjDetlSource);
            adjDetlService.insert(adjDetlEnd);
        }catch (Exception e){
            return R.error("异常!!!请规范操作!!!");
        }
        return new R(201,"合同号修改成功,请刷新页面!!!");
    }
    @RequestMapping(value = "/locDetl/delete/auth")
    @ManagerAuth(memo = "库位明细删除")
src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -96,6 +96,13 @@
            return R.error();
        }
        LocMast oldLocMast = locMastService.selectById(locMast.getLocNo());
        if (locX(locMast.getLocNo())){
            if (oldLocMast.getLocSts().equals("X")){
                return R.error("此处没有库位,请根据现场情况操作!!!");
            }else {
                locMast.setLocSts("X");
            }
        }
        if (locMast.getLocSts().equals("F") && (oldLocMast.getLocSts().equals("D") || oldLocMast.getLocSts().equals("O"))) {
            return R.error("当前操作已被阻止,请联系管理员");
        }
@@ -110,6 +117,21 @@
        locMastService.updateById(locMast);
        return R.ok();
    }
    public boolean locX(String locNo){
        switch (locNo){
            case "1300601": case "1300602": case "1300603": case "1300604": case "1300605": case "1300606":
            case "1300701": case "1300702": case "1300703": case "1300704": case "1300705": case "1300706":
            case "1301301": case "1301302": case "1301303": case "1301304": case "1301305": case "1301306":
            case "1301401": case "1301402": case "1301403": case "1301404": case "1301405": case "1301406":
            case "1302001": case "1302002": case "1302003": case "1302004": case "1302005": case "1302006":
            case "1301205": case "1301206":
            case "1302402":
            case "1402402":
                return true;
            default:
                return false;
        }
    }
    @RequestMapping(value = "/locMast/delete/auth")
    @ManagerAuth(memo = "库位删除")
src/main/java/com/zy/asrs/controller/OrderController.java
@@ -33,6 +33,8 @@
    private WrkDetlService wrkDetlService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Autowired
    private LocDetlService locDetlService;
    @RequestMapping(value = "/order/nav/list/auth")
    @ManagerAuth
@@ -334,4 +336,97 @@
        return R.ok();
    }
    @RequestMapping(value = "/order/form/add/authtest")
    @ManagerAuth(memo = "手动添加订单")
    @Transactional
    public R formAddTest(@RequestBody OrderDomainParam param){
        if(Cools.isEmpty(param.getOrderNo())){
            String prefix = "";
            DocType docType = docTypeService.selectById(param.getDocType());
            if(!Cools.isEmpty(docType)){
                prefix = docType.getPakin() == 1 ? "RK" : "CK";
            }
            param.setOrderNo(prefix + snowflakeIdWorker.nextId());
        }
        Order order = orderService.selectByNo(param.getOrderNo());
        if (order != null) {
            return R.error("单据编号已存在");
        }
        Date now = new Date();
        order = new Order(
                String.valueOf(snowflakeIdWorker.nextId()),    // 编号[非空]
                param.getOrderNo(),    // 订单编号
                DateUtils.convert(now),    // 单据日期
                param.getDocType(),    // 单据类型
                null,    // 项目编号
                null,    //
                null,    // 调拨项目编号
                null,    // 初始票据号
                null,    // 票据号
                null,    // 客户编号
                null,    // 客户
                null,    // 联系方式
                null,    // 操作人员
                null,    // 合计金额
                null,    // 优惠率
                null,    // 优惠金额
                null,    // 销售或采购费用合计
                null,    // 实付金额
                null,    // 付款类型
                null,    // 业务员
                null,    // 结算天数
                null,    // 邮费支付类型
                null,    // 邮费
                null,    // 付款时间
                null,    // 发货时间
                null,    // 物流名称
                null,    // 物流单号
                1L,    // 订单状态
                1,    // 状态
                getUserId(),    // 添加人员
                now,    // 添加时间
                getUserId(),    // 修改人员
                now,    // 修改时间
                null    // 备注
        );
        if (!orderService.insert(order)) {
            throw new CoolException("保存订单主档失败");
        }
        List<DetlDto> list = new ArrayList<>();
        for (OrderDetl orderDetl : param.getOrderDetlList()) {
            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
            if (DetlDto.has(list, dto)) {
                OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
                item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                if (!orderDetlService.updateById(item)) {
                    throw new CoolException("保存订单明细档失败");
                }
            } else {
                list.add(dto);
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setCreateBy(getUserId());
                orderDetl.setCreateTime(now);
                orderDetl.setUpdateBy(getUserId());
                orderDetl.setUpdateTime(now);
                orderDetl.setStatus(1);
                orderDetl.setQty(0.0D);
                //给添加子订单
                Set<String> exist = new HashSet<>();
                List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("保存订单明细档失败");
                }
            }
        }
        return R.ok("订单添加成功");
    }
}
src/main/java/com/zy/asrs/entity/LocMast.java
@@ -26,8 +26,8 @@
    /**
     * 库位号
     */
    @ApiModelProperty(value= "库位号")
    @TableId(value = "loc_no", type = IdType.INPUT)
    @ApiModelProperty(value= "库位号") //参数类型为String,作用为此属性的简要描述。
    @TableId(value = "loc_no", type = IdType.INPUT) // @TableId 注解的用法,该注解用于将某个成员变量指定为数据表主键
    @TableField("loc_no")
    private String locNo;
@@ -165,7 +165,7 @@
    @ApiModelProperty(value= "")
    private String mk;
    @ApiModelProperty(value= "")
    @ApiModelProperty(value= "条码号")
    private String barcode;
    @ApiModelProperty(value= "")
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -34,7 +34,7 @@
    @Update("update asr_loc_detl set loc_no = #{newLocNo}, modi_time=getDate() where loc_no = #{oldLocNo}")
    int updateLocNo(String newLocNo, String oldLocNo);
    @Select("SELECT ld.loc_no FROM asr_loc_detl ld LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no WHERE (1 = 1 AND ld.matnr = #{matnr} AND (lm.row1 >= #{start} AND lm.row1 <= #{end})  AND lm.loc_sts = 'F' AND DateDiff(dd, ld.appe_time, getdate()) = 0) ORDER BY ld.appe_time ASC")
    @Select("SELECT ld.loc_no FROM asr_loc_detl ld LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no WHERE (1 = 1 AND ld.matnr = #{matnr} AND lm.bay1 >= 10 AND lm.bay1 <=20 AND (lm.row1 >= #{start} AND lm.row1 <= #{end})  AND lm.loc_sts = 'F' AND DateDiff(dd, ld.appe_time, getdate()) = 0) ORDER BY ld.appe_time ASC")
    List<String> selectSameDetlToday(@Param("matnr") String matnr, @Param("start") Integer start, @Param("end") Integer end);
    List<LocDetl> getStockStatis(Map<String, Object> map);
@@ -56,6 +56,9 @@
    List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos);
    List<LocDetl> queryStockOther(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos,@Param("locNo")String locNo);
    Double queryStockAnfme(String matnr, String batch);
    List<StockVo> queryStockTotal();
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -34,4 +34,7 @@
    int increaseQtyByOrderNo(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty);
    int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty);
    int increaseWorkQtytest(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("anfme")Double anfme);
}
src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.result.StockVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@@ -45,6 +46,9 @@
    List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos);
    List<LocDetl> queryStockOther(String matnr, String batch, String orderNo, Set<String> locNos,String locNo);
    Double queryStockAnfme(String matnr, String batch);
    List<StockVo> queryStockTotal();
src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -37,4 +37,6 @@
     * @return
     */
    boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
    boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme);
}
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -82,6 +82,11 @@
    }
    @Override
    public List<LocDetl> queryStockOther(String matnr, String batch, String orderNo, Set<String> locNos,String locNo) {
        return this.baseMapper.queryStockOther(matnr, batch, orderNo, locNos,locNo);
    }
    @Override
    public Double queryStockAnfme(String matnr, String batch) {
        return this.baseMapper.queryStockAnfme(matnr, batch);
    }
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -93,6 +93,8 @@
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
//        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())
//                                            .last(" wrk_no IN ( SELECT wrk_no FROM asr_wrk_mast WHERE wrk_sts != 15 )"));
        if (countLoc > 0 || countWrk > 0) {
            throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode());
        }
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -90,4 +90,17 @@
    public boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty) {
        return this.baseMapper.increaseWorkQty(orderId, matnr, batch, workQty) > 0;
    }
    /**
     * 入出库任务生成时,更新单据表中作业数量
     * @param orderNo
     * @param matnr
     * @param batch
     * @param anfme
     * @return
     */
    @Override
    public boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme) {
        return this.baseMapper.increaseWorkQtytest(orderNo, matnr, batch, anfme) > 0;
    }
}
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -340,7 +340,7 @@
                throw new CoolException("保存工作档明细失败");
            }
            // 修改订单明细
            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
            if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
                throw new CoolException("修改订单明细数量失败");
            }
            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -802,6 +802,7 @@
        if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            for (WrkDetl wrkDetl : wrkDetls) {
                //字符串不为空
                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
                        throw new CoolException("订单数据回滚失败");
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -104,11 +104,11 @@
            }
            // 保存工作明细档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
//                exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
                exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo());
            }
            // 删除工作明细档
            if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) {
//                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
                exceptionHandle("删除工作明细档[workNo={0}]失败", wrkMast.getWrkNo());
            }
        } catch (Exception e) {
            log.error("fail", e);
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -116,10 +116,13 @@
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
//                                    exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -164,10 +167,13 @@
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
//                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -344,10 +350,13 @@
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        // 更新订单完成数量
                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                        if(orderDetl==null){
                            orderDetl=orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
                        }
                        try {
                            if(!Cools.isEmpty(orderDetl)){
                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
                                        orderDetl.getBatch(),wrkDetl.getAnfme())){
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
src/main/java/com/zy/common/model/LocDto.java
@@ -25,10 +25,12 @@
    private boolean lack = false;
    //目标站点
    private List<Integer> staNos;
    private Integer staNo;
    public LocDto() {
    }
src/main/resources/application.yml
@@ -10,7 +10,7 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://192.168.4.15:1433;databasename=hylyasrs
    url: jdbc:sqlserver://10.10.10.210:1433;databasename=hylyasrs
    username: sa
    password: sa@123
  mvc:
src/main/resources/mapper/LocDetlMapper.xml
@@ -97,6 +97,9 @@
        <if test="anfme!=null and anfme!='' ">
            and a.anfme like '%' + #{anfme} + '%'
        </if>
        <if test="batch!=null and batch!='' ">
            and a.batch like  '%' + #{batch} + '%'
        </if>
        <if test="startTime!=null and endTime!=null">
            and a.modi_time between #{startTime} and #{endTime}
        </if>
@@ -108,14 +111,14 @@
    <select id="getStockOutPage" resultMap="BaseResultMap">
        select * from
        (
            select
            ROW_NUMBER() over (order by a.appe_time,a.matnr,a.loc_no) as row,
            a.*
            from asr_loc_detl a
            left join asr_loc_mast b on a.loc_no = b.loc_no
            where 1=1
            and b.loc_sts = 'F'
            <include refid="stockOutCondition"></include>
        select
        ROW_NUMBER() over (order by a.appe_time,a.matnr,a.loc_no) as row,
        a.*
        from asr_loc_detl a
        left join asr_loc_mast b on a.loc_no = b.loc_no
        where 1=1
        and b.loc_sts = 'F'
        <include refid="stockOutCondition"></include>
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
@@ -132,19 +135,19 @@
    <select id="getStockStatis" resultType="com.zy.asrs.entity.LocDetl">
        select * from
        (
            select
            ROW_NUMBER() over (order by sum(a.anfme) desc) as row
            , a.matnr
            , sum(a.anfme) as anfme
            from asr_loc_detl a
            where 1=1
            <include refid="stockOutCondition"></include>
            group by a.matnr
         ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
        select
        ROW_NUMBER() over (order by sum(a.anfme) desc) as row
        , a.matnr
        , sum(a.anfme) as anfme
        from asr_loc_detl a
        where 1=1
        <include refid="stockOutCondition"></include>
        group by a.matnr
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
    <select id="getStockStatisCount" parameterType="java.util.Map" resultType="java.lang.Integer">
     select count(1) as count from
        select count(1) as count from
        (
        select
        a.matnr
@@ -152,7 +155,7 @@
        where 1=1
        <include refid="stockOutCondition"></include>
        group by a.matnr
     ) b
        ) b
    </select>
    <select id="getStockStatisExcel" resultType="com.zy.asrs.entity.LocDetl">
@@ -202,14 +205,14 @@
        where 1=1
        and b.loc_sts = 'F'
        and a.matnr = #{matnr}
<!--        <choose>-->
<!--            <when test="batch != null and batch != ''">-->
<!--                and a.batch = #{batch}-->
<!--            </when>-->
<!--            <otherwise>-->
<!--                and (a.batch IS NULL OR a.batch = '')-->
<!--            </otherwise>-->
<!--        </choose>-->
        <!--        <choose>-->
        <!--            <when test="batch != null and batch != ''">-->
        <!--                and a.batch = #{batch}-->
        <!--            </when>-->
        <!--            <otherwise>-->
        <!--                and (a.batch IS NULL OR a.batch = '')-->
        <!--            </otherwise>-->
        <!--        </choose>-->
        <if test="batch != null and batch != ''">
            and a.batch = #{batch}
        </if>
@@ -284,8 +287,8 @@
    <select id="queryStockAnfme" resultType="java.lang.Double">
        select sum(anfme) as count from man_loc_detl
         where 1=1
         and matnr = #{matnr}
        where 1=1
        and matnr = #{matnr}
        <if test="batch != null and batch != ''">
            and batch = #{batch}
        </if>
src/main/resources/mapper/OrderDetlMapper.xml
@@ -98,17 +98,17 @@
    <select id="getPakoutPage" resultMap="BaseResultMap">
        select * from
        (
            select
            ROW_NUMBER() over (order by mo.create_time desc) as row,
            mod.*
            from man_order_detl mod
            inner join man_order mo on mod.order_id = mo.id
            inner join man_doc_type mdt on mo.doc_type = mdt.doc_id
            where 1=1
            and mo.settle &lt;= 2
            and mo.status = 1
            and mdt.pakout = 1
            <include refid="pakOutPageCondition"></include>
        select
        ROW_NUMBER() over (order by mo.create_time desc) as row,
        mod.*
        from man_order_detl mod
        inner join man_order mo on mod.order_id = mo.id
        inner join man_doc_type mdt on mo.doc_type = mdt.doc_id
        where 1=1
        and mo.settle &lt;= 2
        and mo.status = 1
        and mdt.pakout = 1
        <include refid="pakOutPageCondition"></include>
        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
    </select>
src/main/resources/mapper/ViewWorkInMapper.xml
@@ -11,6 +11,9 @@
        <if test="matnr!=null and matnr!='' ">
            and matnr like '%' + #{matnr} + '%'
        </if>
        <if test="batch!=null and batch!='' ">
            and batch like '%' + #{batch} + '%'
        </if>
        <if test="maktx!=null and maktx!='' ">
            and (maktx like '%' + #{maktx} + '%'
            or matnr like '%' + #{maktx} + '%'
src/main/webapp/static/js/adjDetl/adjDetl.js
@@ -30,7 +30,7 @@
            // ,{field: 'adjCtns', align: 'center',title: '变更箱数'}
            ,{field: 'adjQty', align: 'center',title: '变更数量'}
            // ,{field: 'adjWt', align: 'center',title: '变更重量'}
            ,{field: 'memo', align: 'center',title: '备注',hide:true}
            ,{field: 'memo', align: 'center',title: '备注',width:300 ,hide:false}
            ,{field: 'modiUser$', align: 'center',title: '修改人员'}
            ,{field: 'modiTime$', align: 'center',title: '修改时间'}
            // ,{field: 'appeUser', align: 'center',title: '创建者'}
src/main/webapp/static/js/common.js
@@ -225,12 +225,12 @@
    {field: 'matnr', align: 'center',title: '商品编号', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称', sort:true}
    ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true}
    ,{field: 'batch', align: 'center',title: '批号', sort:true}
    ,{field: 'batch', align: 'center',title: '合同号', sort:true}
    ,{field: 'anfme', align: 'center',title: '数量'}
    ,{field: 'zpallet', align: 'center',title: '托盘条码'}
    ,{field: 'specs', align: 'center',title: '规格'}
    ,{field: 'model', 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: true}
@@ -243,10 +243,10 @@
    ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true}
    ,{field: 'itemNum', align: 'center',title: '品项数', hide: true}
    ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true}
    ,{field: 'weight', align: 'center',title: '单箱净重', hide: false}
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: false}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: false}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: false}
    ,{field: 'weight', align: 'center',title: '单箱净重', hide: true}
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
    ,{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}
src/main/webapp/static/js/cool.js
@@ -15,7 +15,9 @@
 */
function autoShow(id) {
    var cac = document.getElementById(id).parentNode;
    console.log(cac);
    var cacw = cac.getElementsByClassName("cool-auto-complete-window")[0];
    console.log(cacw);
    if (cacw.style.display === "none" || cacw.style.display === ""){
        cacw.style.display = "block";
        var cacwi = cacw.getElementsByClassName("cool-auto-complete-window-input")[0];
src/main/webapp/static/js/locDetl/locDetl.js
@@ -5,7 +5,7 @@
        {field: 'matnr', align: 'center',title: '商品编号', sort:true}
        ,{field: 'maktx', align: 'center',title: '商品名称', sort:true}
        ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false}
        ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true}
        ,{field: 'batch', align: 'center',title: '合同号', width: 300, sort:true}
        ,{field: 'anfme', align: 'center',title: '数量'}
        ,{field: 'zpallet', align: 'center',title: '托盘条码'}
        ,{field: 'specs', align: 'center',title: '配置'}
src/main/webapp/static/js/locMast/locMast.js
@@ -417,14 +417,17 @@
            layer.msg(banMsg);
            return;
        }
        method("add");
        method("/locMast/add/auth");
    });
    // 数据修改动作
    form.on('submit(edit)', function () {
        method("update")
        method("/locMast/update/auth")
    });
    // 修改合同号动作
    form.on('submit(pakoutPreview)', function () {
        method("/locDetl/updateBatch/auth")
    });
    function method(name){
        var index = layer.load(1, {
            shade: [0.5,'#000'] //0.1透明度的背景
@@ -459,10 +462,17 @@
            barcode: $('#barcode').val(),
            PdcType: $('#PdcType').val(),
            ctnNo: $('#ctnNo').val(),
            batch: $('#batch').val(),
            anfme: $('#anfme').val(),
            matnr: $('#matnr').val(),
            maktx: $('#maktx').val(),
            zpallet: $('#zpallet').val(),
            specs: $('#specs').val(),
            sku: $('#sku').val(),
        };
        $.ajax({
            url: baseUrl+"/locMast/"+name+"/auth",
            url: baseUrl+name,
            headers: {'token': localStorage.getItem('token')},
            data: top.reObject(data),
            method: 'POST',
@@ -475,6 +485,10 @@
                    });
                } else if (res.code === 403){
                    top.location.href = baseUrl+"/";
                }else if (res.code===201){
                    layer.msg(res.msg);
                    parent.layer.closeAll();
                    parent.parent.layer.closeAll();
                }else {
                    layer.msg(res.msg)
                }
src/main/webapp/static/js/order/order.js
@@ -31,6 +31,10 @@
            }
        }
    })
    // 渲染表格
    var insTb = table.render({
@@ -389,6 +393,7 @@
                                    });
                                }
                            })
                            // 弹窗不出现滚动条
                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
                            layui.form.render('select');
src/main/webapp/static/js/order/out.js
@@ -125,6 +125,7 @@
    function pakoutPreview(ids) {
        let loadIndex = layer.load(2);
        console.log("1111")
        $.ajax({
            url: baseUrl + "/out/pakout/preview/auth",
            headers: {'token': localStorage.getItem('token')},
@@ -163,6 +164,7 @@
                                    {field: 'anfme', title: '数量', align: 'center', width: 90, style: 'font-weight: bold'},
                                    {field: 'locNo', title: '货位', align: 'center', width: 100, templet: '#locNoTpl'},
                                    {field: 'staNos', align: 'center', title: '出库站', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
                                    //{field: 'staState', title: '状态', align: 'center'},
                                    {type: 'checkbox', merge: ['locNo']},
                                ]],
                                done: function (res) {
src/main/webapp/static/js/stoMan/stoQue.js
@@ -4,21 +4,21 @@
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var layDate = layui.laydate;    //时间控件
    var form = layui.form;
    layDate.render({
        elem: '.layui-laydate-range'
        ,type: 'datetime'
        ,range: true
        ,type: 'datetime'   //日期时间选择器 可选年、月、日、时、分、秒
        ,range: true        //设置为true,默认采用“-”分割
    });
    // 数据渲染
    tableIns = table.render({
        elem: '#stoQue',
        elem: '#stoQue',    //table id=“stoQue”
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/locMast/list/auth',
        page: true,
        page: true,     //开启分页
        limit: 20,
        limits: [20, 30, 50, 100, 200, 500],
        even: true,
@@ -110,8 +110,8 @@
            case 'refreshSto': // todo:luxiaotao
                alert("还没做");
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
            case 'exportData':    //导出Excel
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
@@ -129,7 +129,7 @@
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/wrkLastno/export/auth",
                        url: baseUrl+"/locMast/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
src/main/webapp/views/locDetl/locDetl.html
@@ -29,6 +29,11 @@
            <input class="layui-input" type="text" name="matnr" placeholder="商品编号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <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="row" placeholder="排数" autocomplete="off">-->
@@ -36,7 +41,13 @@
<!--    </div>-->
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
            <input class="layui-input" type="text" name="condition" placeholder="商品名称" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">
        </div>
    </div>
src/main/webapp/views/login.html
@@ -74,6 +74,7 @@
            <input id="username" class="input100" type="text" name="username" placeholder="username" autocomplete="off">
            <span class="focus-input100"></span>
            <span class="symbol-input100">
              <i class="fa fa-user"></i>
            </span>
          </div>
src/main/webapp/views/order/order.html
@@ -54,6 +54,8 @@
                            </select>
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <select name="settle">
src/main/webapp/views/pakStore/locDetlQuery.html
@@ -72,6 +72,11 @@
                <input class="layui-input" type="text" name="maktx" placeholder="物料描述" autocomplete="off">
            </div>
        </div>
        <div class="layui-inline">
            <div class="layui-input-inline">
                <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off">
            </div>
        </div>
        <!-- 日期范围 -->
        <div class="layui-inline" style="width: 300px">
            <div class="layui-input-inline">
@@ -126,6 +131,7 @@
        var form = layui.form;
        var admin = layui.admin;
        var tableMerge = layui.tableMerge;
        var dataSource = []
        // 数据渲染
        locDetlTableIns = table.render({
@@ -144,6 +150,7 @@
                pageSize: 'limit'
            },
            parseData: function (res) {
                dataSource = res.data.records
                return {
                    'code': res.code,
                    'msg': res.msg,
@@ -164,15 +171,27 @@
        // 监听头工具栏事件
        table.on('toolbar(stockOut)', function (obj) {
            var checkStatus = table.checkStatus(obj.config.id);
            var data = checkStatus.data;
            var dataList = []
            for (var j = 0; j < data.length; j++) {
                var locno = data[j].locNo
                for(var i = 0;i < dataSource.length; i++) {
                    if (dataSource[i].locNo === locno) {
                        dataList.push(dataSource[i])
                    }
                }
            }
            console.log(dataList)
            switch(obj.event) {
                case 'confirm':
                    if (data.length === 0){
                        layer.msg("请选择数据");
                        return;
                    }
                    parent.addTableData(data);
                    parent.addTableData(dataList);
                    break;
            }
        });
src/main/webapp/views/report/locDetl.html
@@ -24,6 +24,10 @@
</div>
<table class="layui-hide" id="locDetlByMap" lay-filter="locDetlByMap"></table>
</body>
<script type="text/html" id="operateDetl">
<!--    <button id="batch" class="layui-btn layui-btn-primary layui-btn-radius" style="height: auto" lay-submit lay-filter="batch">修改合同号</button>-->
    <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>修改合同号</a>
</script>
<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>
@@ -36,10 +40,14 @@
            {field: 'locNo$', align: 'center',title: '库位号'}
        ];
        cols.push.apply(cols, detlCols);
        var cols2=[
            { fixed: 'right', title:'操作', align: 'center', toolbar: '#operateDetl'}
        ];
        cols.push.apply(cols,cols2)
        return cols;
    }
    layui.use(['table','laydate', 'form'], function() {
        table = layui.table;
        var table = layui.table;
        var $ = layui.jquery;
        var form = layui.form;
@@ -87,6 +95,32 @@
                });
            }
        });
        // 工具条点击事件
        table.on('tool(locDetlByMap)', function (obj) {
            var data = obj.data;
            switch (obj.event) {
                // 修改合同号(批号)
                case 'pakoutPreview':
                    layer.open({
                        type: 2,
                        title: '修改合同号',
                        maxmin: true,
                        area: ['500px', top.detailHeight],
                        shadeClose: false,
                        content: 'locDetl_detail.html',
                        success: function(layero, index){
                            layer.getChildFrame('#data-detail-submit-save', index).hide();
                            setFormVal(layer.getChildFrame('#updateBatch', index), data, false);
                            // top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                            top.convertDisabled(layer.getChildFrame('#locNo', index), true);
                            layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                            layero.find('iframe')[0].contentWindow.layui.form.render('select');
                            layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
                        }
                    });
                    break;
            }
        });
    });
</script>
</html>
src/main/webapp/views/report/locDetl_detail.html
New file
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<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">
</head>
<body>
<!-- 详情 -->
<div id="data-detail" class="layer_self_wrap">
    <form id="updateBatch" class="layui-form" style="height: 100%">
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null">*</span>修改合同号:</label>
            <div class="layui-input-inline">
                <input id="sku" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null">*</span>数  量:</label>
            <div class="layui-input-inline">
                <input id="anfme" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span>原合同号:</label>
            <div class="layui-input-inline">
                <input id="batch" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span>库 位 号:</label>
            <div class="layui-input-inline">
                <input id="locNo" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span> 商品编号:</label>
            <div class="layui-input-inline">
                <input id="matnr" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span> 商品名称:</label>
            <div class="layui-input-inline">
                <input id="maktx" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span> 托盘码:</label>
            <div class="layui-input-inline">
                <input id="zpallet" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div class="layui-inline"  >
            <label class="layui-form-label"><span class="not-null"></span> 规格:</label>
            <div class="layui-input-inline">
                <input id="specs" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')">
            </div>
        </div>
        <div id="prompt">
            温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span>
        </div>
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="pakoutPreview">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
        </div>
    </form>
</div>
</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>
</html>
src/main/webapp/views/report/viewWorkIn.html
@@ -21,6 +21,11 @@
<div id="search-box" class="layui-form layui-card-header">
    <div class="layui-inline">
        <div class="layui-input-inline">
            <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="loc_no" placeholder="库位号" autocomplete="off">
        </div>
    </div>
src/main/webapp/views/report/viewWorkOut.html
@@ -21,6 +21,11 @@
<div id="search-box" class="layui-form layui-card-header">
    <div class="layui-inline">
        <div class="layui-input-inline">
            <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="loc_no" placeholder="库位号" autocomplete="off">
        </div>
    </div>
src/main/webapp/views/waitPakin/waitPakin.html
@@ -21,6 +21,11 @@
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <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="matnr" placeholder="商品编号" autocomplete="off">
        </div>
    </div>
src/main/webapp/views/waitPakinLog/waitPakinLog.html
@@ -19,6 +19,11 @@
            <input class="layui-input" type="text" name="pakin_id" placeholder="入库通知号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off">
        </div>
    </div>
    <!-- 日期范围 -->
    <div class="layui-inline" style="width: 300px">
        <div class="layui-input-inline">
src/main/webapp/views/wrkDetl/wrkDetl.html
@@ -24,6 +24,11 @@
            <input class="layui-input" type="text" name="wrk_no" placeholder="工作号" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off">
        </div>
    </div>
    <!-- 日期范围 -->
    <div class="layui-inline" style="width: 300px">
        <div class="layui-input-inline">
src/main/webapp/views/wrkDetlLog/wrkDetlLog.html
@@ -24,6 +24,11 @@
            <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off">
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
src/main/webapp/views/wrkMast/wrkDetl.html
@@ -32,6 +32,7 @@
        var cols = [
            {field: 'wrkNo', align: 'center',title: '工作号'}
            ,{field: 'ioTime$', align: 'center',title: '工作时间'}
            ,{field: 'orderNo', align: 'center',title: '单据编号'}
        ];
        cols.push.apply(cols, detlCols);
        return cols;