#
Junjie
2023-12-28 df2c0d9fb5332c16ded337ce61f756aff3981e30
#
3个文件已修改
1 文件已重命名
22个文件已添加
3244 ■■■■■ 已修改文件
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocTypeDto.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/StartupDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/FullStoreParam.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/OrderDetlLogController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/OrderLogController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetlLog.java 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderLog.java 465 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java 444 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/orderDetlLog.sql 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/orderLog.sql 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/resources/mapper/wms/OrderDetlLogMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/resources/mapper/wms/OrderLogMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/StaDescController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/webapp/static/js/orderDetlLog/orderDetlLog.js 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/webapp/static/js/orderLog/orderLog.js 504 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/webapp/views/orderDetlLog/orderDetlLog.html 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/webapp/views/orderLog/orderLog.html 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocTypeDto.java
New file
@@ -0,0 +1,40 @@
package com.zy.asrs.common.domain.dto;
import com.alibaba.fastjson.JSON;
import com.zy.asrs.common.wms.entity.BasDevp;
import com.zy.asrs.framework.exception.CoolException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
/**
 * Created by vincent on 2020/10/19
 */
@Slf4j
@Data
public class LocTypeDto {
    // 高低类型{0:未知,1:低库位,2:高库位}
    private Short locType1;
    // 宽窄类型{0:未知,1:窄库位,2:宽库位}
    private Short locType2;
    // 轻重类型{0:未知,1:轻库位,2:重库位}
    private Short locType3;
    public LocTypeDto() {
    }
    public LocTypeDto(BasDevp basDevp) {
        if (basDevp.getLocType1() == null || basDevp.getLocType1() == 0) {
            throw new CoolException("plc高低检测异常");
        }
        if (basDevp.getLocType1() == 1) {
            this.locType1 = 1; // 低库位
        } else {
            this.locType1 = 2; // 高库位
        }
        log.info(JSON.toJSONString(this));
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/StartupDto.java
New file
@@ -0,0 +1,21 @@
package com.zy.asrs.common.domain.dto;
import lombok.Data;
/**
 * Created by vincent on 2020/6/11
 */
@Data
public class StartupDto {
    private Integer sourceStaNo;
    private Integer staNo;
    private Integer crnNo;
    private String locNo;
    private Integer workNo;
}
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/FullStoreParam.java
New file
@@ -0,0 +1,36 @@
package com.zy.asrs.common.domain.param;
import lombok.Data;
import java.util.List;
/**
 * Created by vincent on 2020/6/11
 */
@Data
public class FullStoreParam {
    // 托盘条码
    private String barcode;
    // 站点编号
    private Integer devpNo;
    // 物料列表数据
    private List<MatCodeStore> list;
    @Data
    public static class MatCodeStore {
        // 物料编号
        private String matnr;
        // 序列码
        private String batch;
        // 物料数量
        private Double anfme;
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/OrderDetlLogController.java
New file
@@ -0,0 +1,106 @@
package com.zy.asrs.common.wms.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.wms.entity.OrderDetlLog;
import com.zy.asrs.common.wms.service.OrderDetlLogService;
import com.zy.asrs.framework.annotations.ManagerAuth;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.domain.KeyValueVo;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class OrderDetlLogController extends BaseController {
    @Autowired
    private OrderDetlLogService orderDetlLogService;
    @RequestMapping(value = "/orderDetlLog/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(orderDetlLogService.getById(String.valueOf(id)));
    }
    @RequestMapping(value = "/orderDetlLog/page/auth")
    @ManagerAuth
    public R page(@RequestParam(defaultValue = "1") Integer curr,
                  @RequestParam(defaultValue = "10") Integer limit,
                  @RequestParam(required = false) String condition,
                  @RequestParam(required = false) String timeRange,
                  @RequestParam Map<String, Object> param) {
        LambdaQueryWrapper<OrderDetlLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(OrderDetlLog::getId, condition);
        }
        if (!Cools.isEmpty(timeRange)) {
            String[] range = timeRange.split(RANGE_TIME_LINK);
            wrapper.ge(OrderDetlLog::getCreateTime, DateUtils.convert(range[0]));
            wrapper.le(OrderDetlLog::getCreateTime, DateUtils.convert(range[1]));
        }
        return R.ok(orderDetlLogService.page(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/orderDetlLog/add/auth")
    @ManagerAuth
    public R add(OrderDetlLog orderDetlLog) {
        orderDetlLogService.save(orderDetlLog);
        return R.ok();
    }
    @RequestMapping(value = "/orderDetlLog/update/auth")
    @ManagerAuth
    public R update(OrderDetlLog orderDetlLog){
        if (Cools.isEmpty(orderDetlLog) || null==orderDetlLog.getId()){
            return R.error();
        }
        orderDetlLogService.updateById(orderDetlLog);
        return R.ok();
    }
    @RequestMapping(value = "/orderDetlLog/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            orderDetlLogService.removeById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/orderDetlLogQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        LambdaQueryWrapper<OrderDetlLog> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(OrderDetlLog::getId, condition);
        Page<OrderDetlLog> page = orderDetlLogService.page(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (OrderDetlLog orderDetlLog : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", orderDetlLog.getId());
            map.put("value", orderDetlLog.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping("/orderDetlLog/all/get/kv")
    @ManagerAuth
    public R getDataKV(@RequestParam(required = false) String condition) {
        List<KeyValueVo> vos = new ArrayList<>();
        LambdaQueryWrapper<OrderDetlLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(OrderDetlLog::getId, condition);
        }
        orderDetlLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
        return R.ok().add(vos);
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/OrderLogController.java
New file
@@ -0,0 +1,106 @@
package com.zy.asrs.common.wms.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.wms.entity.OrderLog;
import com.zy.asrs.common.wms.service.OrderLogService;
import com.zy.asrs.framework.annotations.ManagerAuth;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.domain.KeyValueVo;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class OrderLogController extends BaseController {
    @Autowired
    private OrderLogService orderLogService;
    @RequestMapping(value = "/orderLog/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(orderLogService.getById(String.valueOf(id)));
    }
    @RequestMapping(value = "/orderLog/page/auth")
    @ManagerAuth
    public R page(@RequestParam(defaultValue = "1") Integer curr,
                  @RequestParam(defaultValue = "10") Integer limit,
                  @RequestParam(required = false) String condition,
                  @RequestParam(required = false) String timeRange,
                  @RequestParam Map<String, Object> param) {
        LambdaQueryWrapper<OrderLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(OrderLog::getId, condition);
        }
        if (!Cools.isEmpty(timeRange)) {
            String[] range = timeRange.split(RANGE_TIME_LINK);
            wrapper.ge(OrderLog::getCreateTime, DateUtils.convert(range[0]));
            wrapper.le(OrderLog::getCreateTime, DateUtils.convert(range[1]));
        }
        return R.ok(orderLogService.page(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/orderLog/add/auth")
    @ManagerAuth
    public R add(OrderLog orderLog) {
        orderLogService.save(orderLog);
        return R.ok();
    }
    @RequestMapping(value = "/orderLog/update/auth")
    @ManagerAuth
    public R update(OrderLog orderLog){
        if (Cools.isEmpty(orderLog) || null==orderLog.getId()){
            return R.error();
        }
        orderLogService.updateById(orderLog);
        return R.ok();
    }
    @RequestMapping(value = "/orderLog/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value="ids[]") Long[] ids){
         for (Long id : ids){
            orderLogService.removeById(id);
        }
        return R.ok();
    }
    @RequestMapping(value = "/orderLogQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        LambdaQueryWrapper<OrderLog> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(OrderLog::getId, condition);
        Page<OrderLog> page = orderLogService.page(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (OrderLog orderLog : page.getRecords()){
            Map<String, Object> map = new HashMap<>();
            map.put("id", orderLog.getId());
            map.put("value", orderLog.getId());
            result.add(map);
        }
        return R.ok(result);
    }
    @RequestMapping("/orderLog/all/get/kv")
    @ManagerAuth
    public R getDataKV(@RequestParam(required = false) String condition) {
        List<KeyValueVo> vos = new ArrayList<>();
        LambdaQueryWrapper<OrderLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(OrderLog::getId, condition);
        }
        orderLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
        return R.ok().add(vos);
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetlLog.java
New file
@@ -0,0 +1,291 @@
package com.zy.asrs.common.wms.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zy.asrs.common.wms.service.OrderService;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.common.sys.entity.User;
import com.zy.asrs.common.sys.entity.Host;
import com.zy.asrs.common.sys.service.UserService;
import com.zy.asrs.common.sys.service.HostService;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("wms_order_detl_log")
public class OrderDetlLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    private Long id;
    /**
     * 订单内码
     */
    @ApiModelProperty(value= "订单内码")
    private Long orderId;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    /**
     * 商品编码
     */
    @ApiModelProperty(value= "商品编码")
    private String matnr;
    /**
     * 商品名称
     */
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    /**
     * 名称
     */
    @ApiModelProperty(value= "名称")
    private String name;
    /**
     * 规格
     */
    @ApiModelProperty(value= "规格")
    private String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    private String model;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String batch;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    private String unit;
    /**
     * 商品条码
     */
    @ApiModelProperty(value= "商品条码")
    private String barcode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    private String supplier;
    /**
     * 单价
     */
    @ApiModelProperty(value= "单价")
    private Double unitPrice;
    /**
     * 品项数
     */
    @ApiModelProperty(value= "品项数")
    private Integer itemNum;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double count;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    private Double weight;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
    private Integer status;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 授权商户
     */
    @ApiModelProperty(value= "授权商户")
    private Long hostId;
    public OrderDetlLog() {}
    public OrderDetlLog(Long id,Long orderId,Double anfme,String matnr,String maktx,String name,String specs,String model,String batch,String unit,String barcode,String supplier,Double unitPrice,Integer itemNum,Double count,Double weight,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
        this.id = id;
        this.orderId = orderId;
        this.anfme = anfme;
        this.matnr = matnr;
        this.maktx = maktx;
        this.name = name;
        this.specs = specs;
        this.model = model;
        this.batch = batch;
        this.unit = unit;
        this.barcode = barcode;
        this.supplier = supplier;
        this.unitPrice = unitPrice;
        this.itemNum = itemNum;
        this.count = count;
        this.weight = weight;
        this.status = status;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
        this.hostId = hostId;
    }
//    OrderDetlLog orderDetlLog = new OrderDetlLog(
//            null,    // ID[非空]
//            null,    // 订单内码
//            null,    // 数量
//            null,    // 商品编码
//            null,    // 商品名称
//            null,    // 名称
//            null,    // 规格
//            null,    // 型号
//            null,    // 批号
//            null,    // 单位
//            null,    // 商品条码
//            null,    // 供应商
//            null,    // 单价
//            null,    // 品项数
//            null,    // 数量
//            null,    // 重量
//            null,    // 状态
//            null,    // 添加人员
//            null,    // 添加时间
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 备注
//            null    // 授权商户
//    );
    public String getOrderId$(){
        OrderService service = SpringUtils.getBean(OrderService.class);
        Order order = service.getById(this.orderId);
        if (!Cools.isEmpty(order)){
            return String.valueOf(order.getId());
        }
        return null;
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "禁用";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public String getHostId$(){
        HostService service = SpringUtils.getBean(HostService.class);
        Host host = service.getById(this.hostId);
        if (!Cools.isEmpty(host)){
            return String.valueOf(host.getName());
        }
        return null;
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderLog.java
New file
@@ -0,0 +1,465 @@
package com.zy.asrs.common.wms.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.zy.asrs.common.wms.service.CstmrService;
import com.zy.asrs.common.wms.service.DocTypeService;
import com.zy.asrs.common.wms.service.ItemService;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.common.sys.entity.User;
import com.zy.asrs.common.sys.entity.Host;
import com.zy.asrs.common.sys.service.UserService;
import com.zy.asrs.common.sys.service.HostService;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("wms_order_log")
public class OrderLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    private Long id;
    /**
     * 编号
     */
    @ApiModelProperty(value= "编号")
    private String uuid;
    /**
     * 订单编号
     */
    @ApiModelProperty(value= "订单编号")
    private String orderNo;
    /**
     * 单据日期
     */
    @ApiModelProperty(value= "单据日期")
    private String orderTime;
    /**
     * 单据类型
     */
    @ApiModelProperty(value= "单据类型")
    private Long docType;
    /**
     * 项目编号
     */
    @ApiModelProperty(value= "项目编号")
    private Long itemId;
    @ApiModelProperty(value= "")
    private String itemName;
    /**
     * 调拨项目编号
     */
    @ApiModelProperty(value= "调拨项目编号")
    private Long allotItemId;
    /**
     * 初始票据号
     */
    @ApiModelProperty(value= "初始票据号")
    private String defNumber;
    /**
     * 票据号
     */
    @ApiModelProperty(value= "票据号")
    private String number;
    /**
     * 客户编号
     */
    @ApiModelProperty(value= "客户编号")
    private Long cstmr;
    /**
     * 客户
     */
    @ApiModelProperty(value= "客户")
    private String cstmrName;
    /**
     * 联系方式
     */
    @ApiModelProperty(value= "联系方式")
    private String tel;
    /**
     * 操作人员
     */
    @ApiModelProperty(value= "操作人员")
    private String operMemb;
    /**
     * 合计金额
     */
    @ApiModelProperty(value= "合计金额")
    private Double totalFee;
    /**
     * 优惠率
     */
    @ApiModelProperty(value= "优惠率")
    private Double discount;
    /**
     * 优惠金额
     */
    @ApiModelProperty(value= "优惠金额")
    private Double discountFee;
    /**
     * 销售或采购费用合计
     */
    @ApiModelProperty(value= "销售或采购费用合计")
    private Double otherFee;
    /**
     * 实付金额
     */
    @ApiModelProperty(value= "实付金额")
    private Double actFee;
    /**
     * 付款类型 1: 现金  2: 记账
     */
    @ApiModelProperty(value= "付款类型 1: 现金  2: 记账  ")
    private Integer payType;
    /**
     * 业务员
     */
    @ApiModelProperty(value= "业务员")
    private String salesman;
    /**
     * 结算天数
     */
    @ApiModelProperty(value= "结算天数")
    private Integer accountDay;
    /**
     * 邮费支付类型 1: 在线支付  2: 货到付款
     */
    @ApiModelProperty(value= "邮费支付类型 1: 在线支付  2: 货到付款  ")
    private Integer postFeeType;
    /**
     * 邮费
     */
    @ApiModelProperty(value= "邮费")
    private Double postFee;
    /**
     * 付款时间
     */
    @ApiModelProperty(value= "付款时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date payTime;
    /**
     * 发货时间
     */
    @ApiModelProperty(value= "发货时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date sendTime;
    /**
     * 物流名称
     */
    @ApiModelProperty(value= "物流名称")
    private String shipName;
    /**
     * 物流单号
     */
    @ApiModelProperty(value= "物流单号")
    private String shipCode;
    /**
     * 订单状态
     */
    @ApiModelProperty(value= "订单状态")
    private Long settle;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
    private Integer status;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 授权商户
     */
    @ApiModelProperty(value= "授权商户")
    private Long hostId;
    public OrderLog() {}
    public OrderLog(Long id,String uuid,String orderNo,String orderTime,Long docType,Long itemId,String itemName,Long allotItemId,String defNumber,String number,Long cstmr,String cstmrName,String tel,String operMemb,Double totalFee,Double discount,Double discountFee,Double otherFee,Double actFee,Integer payType,String salesman,Integer accountDay,Integer postFeeType,Double postFee,Date payTime,Date sendTime,String shipName,String shipCode,Long settle,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
        this.id = id;
        this.uuid = uuid;
        this.orderNo = orderNo;
        this.orderTime = orderTime;
        this.docType = docType;
        this.itemId = itemId;
        this.itemName = itemName;
        this.allotItemId = allotItemId;
        this.defNumber = defNumber;
        this.number = number;
        this.cstmr = cstmr;
        this.cstmrName = cstmrName;
        this.tel = tel;
        this.operMemb = operMemb;
        this.totalFee = totalFee;
        this.discount = discount;
        this.discountFee = discountFee;
        this.otherFee = otherFee;
        this.actFee = actFee;
        this.payType = payType;
        this.salesman = salesman;
        this.accountDay = accountDay;
        this.postFeeType = postFeeType;
        this.postFee = postFee;
        this.payTime = payTime;
        this.sendTime = sendTime;
        this.shipName = shipName;
        this.shipCode = shipCode;
        this.settle = settle;
        this.status = status;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
        this.hostId = hostId;
    }
//    OrderLog orderLog = new OrderLog(
//            null,    // ID[非空]
//            null,    // 编号[非空]
//            null,    // 订单编号
//            null,    // 单据日期
//            null,    // 单据类型
//            null,    // 项目编号
//            null,    //
//            null,    // 调拨项目编号
//            null,    // 初始票据号
//            null,    // 票据号
//            null,    // 客户编号
//            null,    // 客户
//            null,    // 联系方式
//            null,    // 操作人员
//            null,    // 合计金额
//            null,    // 优惠率
//            null,    // 优惠金额
//            null,    // 销售或采购费用合计
//            null,    // 实付金额
//            null,    // 付款类型
//            null,    // 业务员
//            null,    // 结算天数
//            null,    // 邮费支付类型
//            null,    // 邮费
//            null,    // 付款时间
//            null,    // 发货时间
//            null,    // 物流名称
//            null,    // 物流单号
//            null,    // 订单状态
//            null,    // 状态
//            null,    // 添加人员
//            null,    // 添加时间
//            null,    // 修改人员
//            null,    // 修改时间
//            null,    // 备注
//            null    // 授权商户
//    );
    public String getDocType$(){
        DocTypeService service = SpringUtils.getBean(DocTypeService.class);
        DocType docType = service.getById(this.docType);
        if (!Cools.isEmpty(docType)){
            return String.valueOf(docType.getDocName());
        }
        return null;
    }
    public String getItemId$(){
        ItemService service = SpringUtils.getBean(ItemService.class);
        Item item = service.getById(this.itemId);
        if (!Cools.isEmpty(item)){
            return String.valueOf(item.getId());
        }
        return null;
    }
    public String getAllotItemId$(){
        ItemService service = SpringUtils.getBean(ItemService.class);
        Item item = service.getById(this.allotItemId);
        if (!Cools.isEmpty(item)){
            return String.valueOf(item.getId());
        }
        return null;
    }
    public String getCstmr$(){
        CstmrService service = SpringUtils.getBean(CstmrService.class);
        Cstmr cstmr = service.getById(this.cstmr);
        if (!Cools.isEmpty(cstmr)){
            return String.valueOf(cstmr.getId());
        }
        return null;
    }
    public String getPayType$(){
        if (null == this.payType){ return null; }
        switch (this.payType){
            case 1:
                return "现金";
            case 2:
                return "记账";
            default:
                return String.valueOf(this.payType);
        }
    }
    public String getPostFeeType$(){
        if (null == this.postFeeType){ return null; }
        switch (this.postFeeType){
            case 1:
                return "在线支付";
            case 2:
                return "货到付款";
            default:
                return String.valueOf(this.postFeeType);
        }
    }
    public String getPayTime$(){
        if (Cools.isEmpty(this.payTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.payTime);
    }
    public String getSendTime$(){
        if (Cools.isEmpty(this.sendTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "禁用";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public String getHostId$(){
        HostService service = SpringUtils.getBean(HostService.class);
        Host host = service.getById(this.hostId);
        if (!Cools.isEmpty(host)){
            return String.valueOf(host.getName());
        }
        return null;
    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.common.wms.mapper;
import com.zy.asrs.common.wms.entity.OrderDetlLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface OrderDetlLogMapper extends BaseMapper<OrderDetlLog> {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.common.wms.mapper;
import com.zy.asrs.common.wms.entity.OrderLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface OrderLogMapper extends BaseMapper<OrderLog> {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
New file
@@ -0,0 +1,444 @@
package com.zy.asrs.common.wms.service;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.domain.dto.LocTypeDto;
import com.zy.asrs.common.domain.dto.StartupDto;
import com.zy.asrs.common.wms.entity.LocMast;
import com.zy.asrs.common.wms.entity.WrkLastno;
import com.zy.asrs.common.wms.entity.WrkMast;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.exception.CoolException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * 货架核心功能
 * Created by vincent on 2020/6/11
 */
@Slf4j
@Service
public class CommonService {
    public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(1);
    }};
    public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(3);add(4);
    }};
    public static final List<Integer> THIRD_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(6);add(7);
    }};
    public static final List<Integer> FOURTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(8);
    }};
    public static final List<Integer> FIFTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(10);add(11);
    }};
    public static final List<Integer> SIXTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(13);add(14);add(15);add(16);
    }};
    public static final List<Integer> SEVENTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(13);add(14);
    }};
    public static final List<Integer> EIGHTH_GROUP_ROW_LIST = new ArrayList<Integer>() {{
        add(16);
    }};
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkLastnoService wrkLastnoService;
    @Autowired
    private RowLastnoService rowLastnoService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    /**
     * 生成工作号
     * @param wrkMk 0:入出库 ; 1:其他
     * @return workNo(工作号)
     */
    public int getWorkNo(Integer wrkMk) {
        WrkLastno wrkLastno = wrkLastnoService.getById(wrkMk);
        if (Cools.isEmpty(wrkLastno)) {
            throw new CoolException("数据异常,请联系管理员");
        }
        int workNo = 0;
        // 入出库类型
        workNo = wrkLastno.getWrkNo();
        int sNo = wrkLastno.getStartNo();
        int eNo = wrkLastno.getTargetNo();
        workNo = workNo>=eNo ? sNo : workNo+1;
        while (true) {
            WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, workNo));
            if (null != wrkMast) {
                workNo = workNo>=eNo ? sNo : workNo+1;
            } else {
                break;
            }
        }
        if (workNo > 0){
            wrkLastno.setWrkNo(workNo);
            wrkLastnoService.updateById(wrkLastno);
        }
        if (workNo == 0) {
            throw new CoolException("生成工作号失败,请联系管理员");
        } else {
            if (wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, workNo)) != null) {
                throw new CoolException("生成工作号" + workNo + "在工作档中已存在");
            }
        }
        return workNo;
    }
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
        return getLocNo(staDescId, sourceStaNo, matNos, locTypeDto, times);
    }
    /**
     * 检索库位号
     *
     * @param staDescId   路径ID
     * @param sourceStaNo 源站
     * @param matNos      物料号集合
     * @return locNo 检索到的库位号
     */
    public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
        // 目标库位
        LocMast locMast = null;
//        // 靠近摆放规则 --- 空托
//        locMast = getLocNoStep4(staDescId, locTypeDto);
//        if (locMast != null) {
//            //找到库位,返回dto
//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
//        }
//        //库位规则
//        locMast = getLocNoStepRule(matNos, locTypeDto);
//        if (locMast != null) {
//            //找到库位,返回dto
//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
//        }
//        // 靠近摆放规则 --- 相同订单号, 同天同规格物料
//        locMast = getLocNoStep3(staDescId, matNos, locTypeDto);
//        if (locMast != null) {
//            //找到库位,返回dto
//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
//        }
//
//        //搜索单品
//        locMast = getLocNoStepSingle(matNos, locTypeDto);
//        if (locMast != null) {
//            //找到库位,返回dto
//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
//        }
//
//        //搜索混放
//        locMast = getLocNoStepMixed(matNos, locTypeDto, times);
//        if (locMast != null) {
//            //找到库位,返回dto
//            return getLocNoStep6(staDescId, sourceStaNo, locMast);//返回dto
//        }
        //找不到库位,抛出异常
        throw new CoolException("没有空库位");
    }
//    /**
//     * 库位规则
//     */
//    private LocMast getLocNoStepRule(List<String> matNos, LocTypeDto locTypeDto) {
//        LocMast locMast = null;
//
//        //库位规则只能在单品货物中生效
//        if (matNos.size() == 1) {
//            // 库区锁定
//            List<LocRule> locRules = locRuleService.find(Cools.isEmpty(matNos) ? null : matNos.get(0));
//            if (locRules == null || locRules.isEmpty()) {
//                return null;//没有库位规则,跳出当前任务
//            }
//
//            for (LocRule locRule : locRules) {
//                if (locRule == null) {
//                    continue;
//                }
//
//                List<LocMast> locMasts = locMastService.queryFreeLocMast2(locTypeDto.getLocType1(), locRule.getRowBeg(), locRule.getRowEnd(), locRule.getBayBeg(), locRule.getBayEnd(), locRule.getLevBeg(), locRule.getLevEnd());
//                locMast = locFilter(locMasts, matNos,locTypeDto);
//
//            }
//
//            if (locRules.get(0).getKeepGo() == 0) {
//                //找不到空库位,且禁止继续寻找其他非混载区域库位
//                //找不到库位,抛出异常
//                throw new CoolException("规则区域没有空库位");
//            }
//        }
//
//        return locMast;
//    }
//    // 靠近摆放规则 --- 相同订单号, 同天同规格物料
//    private LocMast getLocNoStep3(Integer staDescId, List<String> matNos, LocTypeDto locTypeDto) {
//        LocMast locMast = null;
//        if (!Cools.isEmpty(matNos) && matNos.size() == 1 && staDescId == 1) {
//            //先判断工作档,查找主档IOType=1, wrkSts < 10的工作明细,料号相同的明细库位
//            List<WrkMast> wrkMasts = wrkMastService.selectSameMatnrs(matNos.get(0));
//            for (WrkMast wrkMast : wrkMasts) {
//                LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
//                if (null != locMast0) {
//                    // 浅库位符合尺寸检测
//                    if (VersionUtils.checkLocType(locMast0, locTypeDto)) {
//                        locMast = locMast0;
//                    }
//                }
//            }
//            if (Cools.isEmpty(locMast)) {
//                //再判断库存明细档,料号相同的明细库位
//                List<String> locNos = locDetlService.getSameDetl(matNos.get(0));
//                for (String locNo : locNos) {
//                    LocMast locMast0 = locMastService.findInnerLoc(locNo);
//                    if (null != locMast0) {
//                        // 浅库位符合尺寸检测
//                        if (VersionUtils.checkLocType(locMast0, locTypeDto)) {
//                            locMast = locMast0;
//                            break;
//                        }
//                    }
//                }
//            }
//        }
//
//        return locMast;
//    }
//
//    // 靠近摆放规则 --- 空托
//    private LocMast getLocNoStep4(Integer staDescId, LocTypeDto locTypeDto) {
//        LocMast locMast = null;
//        // 靠近摆放规则 --- 空托
//        if (staDescId == 10) {
//            //先判断工作档,查找主档IOType=1, wrkSts < 10的工作明细,料号相同的明细库位
//            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type",10));
//            for (WrkMast wrkMast : wrkMasts) {
//                LocMast locMast0 = locMastService.findNearloc(wrkMast.getLocNo());
//                if (null != locMast0) {
//                    // 浅库位符合尺寸检测
//                    if (VersionUtils.checkLocType(locMast0, locTypeDto)) {
//                        locMast = locMast0;
//                        break;
//                    }
//                }
//            }
//            if (Cools.isEmpty(locMast)){
//                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
//                        .eq("loc_sts", "O"));
//                if (locMasts.size() > 0) {
//                    for (LocMast loc : locMasts) {
//                        LocMast locMast0 = locMastService.findNearloc(loc.getLocNo());
//                        if (null != locMast0) {
//                            // 浅库位符合尺寸检测
//                            if (VersionUtils.checkLocType(locMast0, locTypeDto)) {
//                                locMast = locMast0;
//                                break;
//                            }
//                        }
//                    }
//                }
//            }
//        }
//
//        return locMast;
//    }
//
//    // 搜索混放
//    private LocMast getLocNoStepMixed(List<String> matNos, LocTypeDto locTypeDto, int times) {
//        LocMast locMast = null;
//
//        if (matNos.size() > 1) {
//            List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//搜索混放库位
//            //混放区域直接取第一个即可
//            for (LocMast mast : locMasts) {
//                //预留空库位
//                if (locMastService.checkEmptyCount(mast, 10)) {
//                    locMast = mast;
//                    break;
//                }
//            }
//        }
//
//        // 2.库位当前所属尺寸无空库位时,调整尺寸参数,向上兼容检索库位
//        if (Cools.isEmpty(locMast)) {
//            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
//        }
//
//        return locMast;
//    }
//
//    // 搜索单品
//    private LocMast getLocNoStepSingle(List<String> matNos, LocTypeDto locTypeDto) {
//        LocMast locMast = null;
//        // 1.先搜索单品
//        if (matNos.size() == 1) {
//            //单品
//            List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 2);//搜索单品库位
//
//            for (LocMast mast : locMasts) {
//                List<String> groupLoc = Utils.getGroupLoc(mast.getLocNo());
//                if (!locMastService.checkAllLocEmpty(groupLoc)) {
//                    continue;
//                }
//
//                LocMast tmp = null;
//                for (String loc : groupLoc) {
//                    LocMast locMast1 = locMastService.selectByLoc(loc);
//                    if (locMast1 == null) {
//                        continue;
//                    }
//
//                    if (!locMast1.getLocSts().equals("O")) {
//                        continue;
//                    }
//
//                    tmp = locMast1;
//                    break;
//                }
//
//                //预留空库位
//                if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
//                    locMast = tmp;
//                    break;
//                }
//            }
//
//            if (locMast == null) {
//                //单品找不到库位,允许尝试从混放区域中进行搜索
//                List<LocMast> locMasts2 = locMastService.selectAreaEmpty(locTypeDto.getLocType1(), 1);//搜索单品库位
//                //混放区域直接取第一个即可
//                for (LocMast mast : locMasts2) {
//                    //预留空库位
//                    if (locMastService.checkEmptyCount(mast, 10)) {
//                        locMast = mast;
//                        break;
//                    }
//                }
//            }
//        }
//
//        return locMast;
//    }
//
//    /*
//    库存规则搜索到的库位确认
//     */
//    private LocMast locFilter(List<LocMast> locMasts,List<String> matNos,LocTypeDto locTypeDto){
//        for (LocMast locMast0 : locMasts) {
//            if(!VersionUtils.checkLocType(locMast0,locTypeDto)){
//                continue;
//            }
//            //单品物料
//            if (matNos.size() == 1) {
//                //如果不是深浅,则直接返回当前库位
//                if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
//                    return locMast0;
//                }else{
//                    List<String> groupInnerLoc = Utils.getGroupInnerLoc(locMast0.getLocNo());
//                    //如果是深浅库位,但是内测无库位的情况下,则直接返回当前库位
//                    if (Cools.isEmpty(groupInnerLoc)) {
//                        return locMast0;
//                    }else {
//                        //获取最深的库位
//                        String loc = groupInnerLoc.get(groupInnerLoc.size() - 1);
//                        LocMast locMast1 = locMastService.selectByLoc(loc);
//                        //如果最深测库位为空库位,则直接返回最深库位
//                        if("O".equals(locMast1.getLocSts())){
//                            return locMast1;
//                        }else {
//                            //如果最深库位状态不为F或者O,则跳出当前的深浅库位查找
//                            if(!"F".equals(locMast1.getLocSts())){
//                                continue;
//                            }
//                            List<LocDetl> locDetls = locDetlService.selectByLocNo(loc);
//                            //如果当前深库位物料与入库物料不相符,则跳出当前深浅库位查找
//                            if(!Cools.eq(locDetls.get(0).getMatnr(),matNos.get(0))){
//                                continue;
//                            }
//                            //从里往外依次遍历该组深浅库位
//                            for (int i=groupInnerLoc.size()-1; i>=0 ;i--){
//                                LocMast locMast2 = locMastService.selectByLoc(groupInnerLoc.get(i));
//                                if("O".equals(locMast2.getLocSts())){
//                                    //如果深库位中含有0状态的库位,则直接返回该库位
//                                    return locMast2;
//                                }else if("F".equals(locMast2.getLocSts())){
//                                    //如果对于locaMast0最近的一个库位也为F状态,则返回locaMastO
//                                    if(i==0){
//                                        return locMast0;
//                                    }else {
//                                        //如果该组深浅库位中含有既不为F也不为O的库位,则跳出当前深浅库位查找
//                                        continue;
//                                    }
//                                }else {
//                                    break;
//                                }
//                            }
//                        }
//
//                    }
//                }
//            }else {
//                if(Cools.isEmpty(Utils.getGroupDeepLoc(locMast0.getLocNo()))){
//                    return locMast0;
//                }
//            }
//
//        }
//        return null;
//    }
//
//    //返回dto
//    private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
//        StartupDto startupDto = new StartupDto();
//        String locNo = locMast.getLocNo();
//        // 获取目标站
//        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
//                .eq("type_no", staDescId)
//                .eq("stn_no", sourceStaNo)
//                .eq("crn_no",Utils.stnNoToLiftNo(sourceStaNo));//借用堆垛机号字段充当提升机号
//        StaDesc staDesc = staDescService.selectOne(wrapper);
//        if (Cools.isEmpty(staDesc)) {
//            log.error("入库路径不存在, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
//            throw new CoolException("入库路径不存在");
//        }
//
//        // 检测目标站
//        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
//        if (!staNo.getAutoing().equals("Y")) {
//            throw new CoolException("目标站" + staDesc.getCrnStn() + "不可用");
//        }
//
//        // 生成工作号
//        int workNo = getWorkNo(0);
//        // 返回dto
//        startupDto.setWorkNo(workNo);
//        startupDto.setSourceStaNo(sourceStaNo);
//        startupDto.setStaNo(staNo.getDevNo());
//        startupDto.setLocNo(locMast.getLocNo());
//        return startupDto;
//    }
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlLogService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.common.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.common.wms.entity.OrderDetlLog;
public interface OrderDetlLogService extends IService<OrderDetlLog> {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderLogService.java
New file
@@ -0,0 +1,8 @@
package com.zy.asrs.common.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.common.wms.entity.OrderLog;
public interface OrderLogService extends IService<OrderLog> {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
@@ -1,5 +1,13 @@
package com.zy.asrs.common.wms.service;
import com.zy.asrs.common.domain.param.FullStoreParam;
public interface WorkService {
    /**
     * 全板入库
     * @return 库位号
     */
    String startupFullPutStore(FullStoreParam param, Long userId);
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.common.wms.service.impl;
import com.zy.asrs.common.wms.mapper.OrderDetlLogMapper;
import com.zy.asrs.common.wms.entity.OrderDetlLog;
import com.zy.asrs.common.wms.service.OrderDetlLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("orderDetlLogService")
public class OrderDetlLogServiceImpl extends ServiceImpl<OrderDetlLogMapper, OrderDetlLog> implements OrderDetlLogService {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.common.wms.service.impl;
import com.zy.asrs.common.wms.mapper.OrderLogMapper;
import com.zy.asrs.common.wms.entity.OrderLog;
import com.zy.asrs.common.wms.service.OrderLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("orderLogService")
public class OrderLogServiceImpl extends ServiceImpl<OrderLogMapper, OrderLog> implements OrderLogService {
}
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
@@ -1,8 +1,25 @@
package com.zy.asrs.common.wms.service.impl;
import com.zy.asrs.common.wms.service.WorkService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.domain.dto.DetlDto;
import com.zy.asrs.common.domain.dto.LocTypeDto;
import com.zy.asrs.common.domain.dto.StartupDto;
import com.zy.asrs.common.domain.param.FullStoreParam;
import com.zy.asrs.common.wms.entity.BasDevp;
import com.zy.asrs.common.wms.entity.LocMast;
import com.zy.asrs.common.wms.entity.WrkMast;
import com.zy.asrs.common.wms.service.*;
import com.zy.asrs.framework.common.BaseRes;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.exception.CoolException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by vincent on 2020/6/11
@@ -11,4 +28,93 @@
@Service
public class WorkServiceImpl implements WorkService {
    // 库位排号分配默认类别
    private static final int DEFAULT_ROW_NO_TYPE = 1;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private LocMastService locMastService;
    @Override
    @Transactional
    public String startupFullPutStore(FullStoreParam param, Long userId) {
        // 参数非空判断
        if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
            throw new CoolException(BaseRes.PARAM);
        }
        Date now = new Date();
//        // 源站点状态检测
//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
//        // 检索库位
//        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        LocTypeDto locTypeDto = new LocTypeDto();
        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), null, locTypeDto, 0);
        // 生成工作号
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
//        wrkMast.setWrkSts(1L); // 工作状态:生成入库ID
//        wrkMast.setIoType(1); // 入出库状态:1.入库
//        wrkMast.setIoPri(13D); // 优先级:13
//        wrkMast.setCrnNo(dto.getCrnNo());
//        wrkMast.setSourceStaNo(dto.getSourceStaNo());
//        wrkMast.setStaNo(dto.getStaNo());
//        wrkMast.setLocNo(dto.getLocNo());
//        wrkMast.setBarcode(param.getBarcode()); // 托盘码
//        wrkMast.setFullPlt("Y"); // 满板:Y
//        wrkMast.setPicking("N"); // 拣料
//        wrkMast.setExitMk("N"); // 退出
//        wrkMast.setEmptyMk("N"); // 空板
//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型
//        wrkMast.setAppeUser(String.valueOf(userId));
//        wrkMast.setAppeTime(now);
//        wrkMast.setModiUser(String.valueOf(userId));
//        wrkMast.setModiTime(now);
        if (!wrkMastService.save(wrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        // 生成工作档明细
        List<DetlDto> detlDtos = new ArrayList<>();
        param.getList().forEach(elem -> {
            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
            if (DetlDto.has(detlDtos, detlDto)) {
                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
                assert detlDto1 != null;
                detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
            } else {
                detlDtos.add(detlDto);
            }
        });
//        wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId);
//        // 更新源站点信息
//        sourceStaNo.setWrkNo(workNo);
//        sourceStaNo.setModiUser(userId);
//        sourceStaNo.setModiTime(now);
//        if (!basDevpService.updateById(sourceStaNo)){
//            throw new CoolException("更新源站失败");
//        }
//        // 更新目标库位状态
//        LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, dto.getLocNo()));
//        if (locMast.getLocSts().equals("O")){
//            locMast.setLocSts("S"); // S.入库预约
//            locMast.setModiUser(userId);
//            locMast.setModiTime(now);
//            if (!locMastService.updateById(locMast)){
//                throw new CoolException("改变库位状态失败");
//            }
//        } else {
//            throw new CoolException(dto.getLocNo()+"目标库位已被占用");
//        }
        return dto.getLocNo();
    }
}
zy-asrs-common/src/main/java/orderDetlLog.sql
New file
@@ -0,0 +1,18 @@
-- save orderDetlLog record
-- mysql
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog/orderDetlLog.html', 'orderDetlLog管理', null , '2', null , '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog#view', '查询', '', '3', '0', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog#btn-add', '新增', '', '3', '1', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog#btn-edit', '编辑', '', '3', '2', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog#btn-delete', '删除', '', '3', '3', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetlLog#btn-export', '导出', '', '3', '4', '1');
-- sqlserver
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog/orderDetlLog.html', N'orderDetlLog管理', null, '2', null, '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog#view', N'查询', '', '3', '0', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog#btn-add', N'新增', '', '3', '1', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog#btn-edit', N'编辑', '', '3', '2', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog#btn-delete', N'删除', '', '3', '3', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetlLog#btn-export', N'导出', '', '3', '4', '1');
zy-asrs-common/src/main/java/orderLog.sql
New file
@@ -0,0 +1,18 @@
-- save orderLog record
-- mysql
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog/orderLog.html', 'orderLog管理', null , '2', null , '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog#view', '查询', '', '3', '0', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog#btn-add', '新增', '', '3', '1', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog#btn-edit', '编辑', '', '3', '2', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog#btn-delete', '删除', '', '3', '3', '1');
insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderLog#btn-export', '导出', '', '3', '4', '1');
-- sqlserver
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog/orderLog.html', N'orderLog管理', null, '2', null, '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog#view', N'查询', '', '3', '0', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog#btn-add', N'新增', '', '3', '1', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog#btn-edit', N'编辑', '', '3', '2', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog#btn-delete', N'删除', '', '3', '3', '1');
insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderLog#btn-export', N'导出', '', '3', '4', '1');
zy-asrs-common/src/main/resources/mapper/wms/OrderDetlLogMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.common.wms.mapper.OrderDetlLogMapper">
</mapper>
zy-asrs-common/src/main/resources/mapper/wms/OrderLogMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.common.wms.mapper.OrderLogMapper">
</mapper>
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/StaDescController.java
File was renamed from zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/StaDescController.java
@@ -1,4 +1,4 @@
package com.zy.asrs.common.wms.controller;
package com.zy.asrs.wms.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
@@ -1,5 +1,6 @@
package com.zy.asrs.wms.controller;
import com.zy.asrs.common.domain.param.FullStoreParam;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.service.BasDevpService;
import com.zy.asrs.common.wms.service.WorkService;
@@ -7,6 +8,7 @@
import com.zy.asrs.framework.annotations.ManagerAuth;
import com.zy.asrs.framework.common.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -69,4 +71,10 @@
        return R.ok().add(basDevpService.getAvailableOutSite(107, getHostId()));
    }
    @RequestMapping("/full/store/put/start")
    @ManagerAuth(memo = "全板入库")
    public R fullStorePutStart(@RequestBody FullStoreParam fullStoreParam) {
        return R.ok("入库启动成功").add(workService.startupFullPutStore(fullStoreParam,getUserId()));
    }
}
zy-asrs-wms/src/main/webapp/static/js/orderDetlLog/orderDetlLog.js
New file
@@ -0,0 +1,397 @@
var pageCurr;
var pageCount = 0;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    var xmSelect = layui.xmSelect;
    // 数据渲染
    tableIns = table.render({
        elem: '#orderDetlLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/orderDetlLog/page/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: 'ID'}
            ,{field: 'orderId$', align: 'center',title: '订单内码'}
            ,{field: 'anfme', align: 'center',title: '数量'}
            ,{field: 'matnr', align: 'center',title: '商品编码'}
            ,{field: 'maktx', align: 'center',title: '商品名称'}
            ,{field: 'name', align: 'center',title: '名称'}
            ,{field: 'specs', align: 'center',title: '规格'}
            ,{field: 'model', align: 'center',title: '型号'}
            ,{field: 'batch', align: 'center',title: '批号'}
            ,{field: 'unit', align: 'center',title: '单位'}
            ,{field: 'barcode', align: 'center',title: '商品条码'}
            ,{field: 'supplier', align: 'center',title: '供应商'}
            ,{field: 'unitPrice', align: 'center',title: '单价'}
            ,{field: 'itemNum', align: 'center',title: '品项数'}
            ,{field: 'count', align: 'center',title: '数量'}
            ,{field: 'weight', align: 'center',title: '重量'}
            ,{field: 'status$', align: 'center',title: '状态'}
            ,{field: 'createBy$', align: 'center',title: '添加人员'}
            ,{field: 'createTime$', align: 'center',title: '添加时间'}
            ,{field: 'updateBy$', align: 'center',title: '修改人员'}
            ,{field: 'updateTime$', align: 'center',title: '修改时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{field: 'hostId$', align: 'center',title: '授权商户'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;pageCount=count;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(orderDetlLog)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(orderDetlLog)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'orderDetlLog': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/orderDetlLog/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(orderDetlLog)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                form.val('detail', mData);
                layDateRender(mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/orderDetlLog/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/orderDetlLog/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(true);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(true);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#createTime\\$',
                type: 'datetime',
                value: data!==undefined?data['createTime$']:null
            });
            layDate.render({
                elem: '#updateTime\\$',
                type: 'datetime',
                value: data!==undefined?data['updateTime$']:null
            });
        }, 100);
    }
    layDateRender();
    window.loadOrderSel = function () {
        return xmSelect.render({
            el: '#orderXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/order/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadUserSel = function () {
        return xmSelect.render({
            el: '#userXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/user/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadUserSel = function () {
        return xmSelect.render({
            el: '#userXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/user/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadHostSel = function () {
        return xmSelect.render({
            el: '#hostXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/host/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(search) {
    if (pageCount === 0 || search) {
        let searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        tableIns.reload({
            where: searchData,
            page: {curr: pageCurr}
        });
    } else {
        $(".layui-laypage-btn")[0].click();
    }
}
zy-asrs-wms/src/main/webapp/static/js/orderLog/orderLog.js
New file
@@ -0,0 +1,504 @@
var pageCurr;
var pageCount = 0;
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
    var table = layui.table;
    var $ = layui.jquery;
    var layer = layui.layer;
    var layDate = layui.laydate;
    var form = layui.form;
    var admin = layui.admin;
    var xmSelect = layui.xmSelect;
    // 数据渲染
    tableIns = table.render({
        elem: '#orderLog',
        headers: {token: localStorage.getItem('token')},
        url: baseUrl+'/orderLog/page/auth',
        page: true,
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        toolbar: '#toolbar',
        cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            {type: 'checkbox'}
            ,{field: 'id', align: 'center',title: 'ID'}
            ,{field: 'uuid', align: 'center',title: '编号'}
            ,{field: 'orderNo', align: 'center',title: '订单编号'}
            ,{field: 'orderTime', align: 'center',title: '单据日期'}
            ,{field: 'docType$', align: 'center',title: '单据类型'}
            ,{field: 'itemId$', align: 'center',title: '项目编号'}
            ,{field: 'itemName', align: 'center',title: ''}
            ,{field: 'allotItemId$', align: 'center',title: '调拨项目编号'}
            ,{field: 'defNumber', align: 'center',title: '初始票据号'}
            ,{field: 'number', align: 'center',title: '票据号'}
            ,{field: 'cstmr$', align: 'center',title: '客户编号'}
            ,{field: 'cstmrName', align: 'center',title: '客户'}
            ,{field: 'tel', align: 'center',title: '联系方式'}
            ,{field: 'operMemb', align: 'center',title: '操作人员'}
            ,{field: 'totalFee', align: 'center',title: '合计金额'}
            ,{field: 'discount', align: 'center',title: '优惠率'}
            ,{field: 'discountFee', align: 'center',title: '优惠金额'}
            ,{field: 'otherFee', align: 'center',title: '销售或采购费用合计'}
            ,{field: 'actFee', align: 'center',title: '实付金额'}
            ,{field: 'payType$', align: 'center',title: '付款类型'}
            ,{field: 'salesman', align: 'center',title: '业务员'}
            ,{field: 'accountDay', align: 'center',title: '结算天数'}
            ,{field: 'postFeeType$', align: 'center',title: '邮费支付类型'}
            ,{field: 'postFee', align: 'center',title: '邮费'}
            ,{field: 'payTime$', align: 'center',title: '付款时间'}
            ,{field: 'sendTime$', align: 'center',title: '发货时间'}
            ,{field: 'shipName', align: 'center',title: '物流名称'}
            ,{field: 'shipCode', align: 'center',title: '物流单号'}
            ,{field: 'settle', align: 'center',title: '订单状态'}
            ,{field: 'status$', align: 'center',title: '状态'}
            ,{field: 'createBy$', align: 'center',title: '添加人员'}
            ,{field: 'createTime$', align: 'center',title: '添加时间'}
            ,{field: 'updateBy$', align: 'center',title: '修改人员'}
            ,{field: 'updateTime$', align: 'center',title: '修改时间'}
            ,{field: 'memo', align: 'center',title: '备注'}
            ,{field: 'hostId$', align: 'center',title: '授权商户'}
            ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120}
        ]],
        request: {
            pageName: 'curr',
            pageSize: 'limit'
        },
        parseData: function (res) {
            return {
                'code': res.code,
                'msg': res.msg,
                'count': res.data.total,
                'data': res.data.records
            }
        },
        response: {
            statusCode: 200
        },
        done: function(res, curr, count) {
            if (res.code === 403) {
                top.location.href = baseUrl+"/";
            }
            pageCurr=curr;pageCount=count;
            limit();
        }
    });
    // 监听排序事件
    table.on('sort(orderLog)', function (obj) {
        var searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        searchData['orderByField'] = obj.field;
        searchData['orderByType'] = obj.type;
        tableIns.reload({
            where: searchData,
            page: {curr: 1}
        });
    });
    // 监听头工具栏事件
    table.on('toolbar(orderLog)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id).data;
        switch(obj.event) {
            case 'addData':
                showEditModel();
                break;
            case 'deleteData':
               if (checkStatus.length === 0) {
                   layer.msg('请选择要删除的数据', {icon: 2});
                   return;
               }
               del(checkStatus.map(function (d) {
                   return d.id;
               }));
               break;
            case 'exportData':
                admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){
                    var titles=[];
                    var fields=[];
                    obj.config.cols[0].map(function (col) {
                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
                            titles.push(col.title);
                            fields.push(col.field);
                        }
                    });
                    var exportData = {};
                    $.each($('#search-box [name]').serializeArray(), function() {
                        exportData[this.name] = this.value;
                    });
                    var param = {
                        'orderLog': exportData,
                        'fields': fields
                    };
                    $.ajax({
                        url: baseUrl+"/orderLog/export/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: JSON.stringify(param),
                        dataType:'json',
                        contentType:'application/json;charset=UTF-8',
                        method: 'POST',
                        success: function (res) {
                            layer.closeAll();
                            if (res.code === 200) {
                                table.exportFile(titles,res.data,'xls');
                            } else if (res.code === 403) {
                                top.location.href = baseUrl+"/";
                            } else {
                                layer.msg(res.msg, {icon: 2})
                            }
                        }
                    });
                });
                break;
        }
    });
    // 监听行工具事件
    table.on('tool(orderLog)', function(obj){
        var data = obj.data;
        switch (obj.event) {
            case 'edit':
                showEditModel(data);
                break;
            case "del":
                del([data.id]);
                break;
        }
    });
    /* 弹窗 - 新增、修改 */
    function showEditModel(mData) {
        admin.open({
            type: 1,
            area: '600px',
            title: (mData ? '修改' : '添加') + '',
            content: $('#editDialog').html(),
            success: function (layero, dIndex) {
                form.val('detail', mData);
                layDateRender(mData);
                form.on('submit(editSubmit)', function (data) {
                    var loadIndex = layer.load(2);
                    $.ajax({
                        url: baseUrl+"/orderLog/"+(mData?'update':'add')+"/auth",
                        headers: {'token': localStorage.getItem('token')},
                        data: data.field,
                        method: 'POST',
                        success: function (res) {
                            layer.close(loadIndex);
                            if (res.code === 200){
                                layer.close(dIndex);
                                layer.msg(res.msg, {icon: 1});
                                tableReload();
                            } else if (res.code === 403){
                                top.location.href = baseUrl+"/";
                            }else {
                                layer.msg(res.msg, {icon: 2});
                            }
                        }
                    })
                    return false;
                });
                $(layero).children('.layui-layer-content').css('overflow', 'visible');
                layui.form.render('select');
            }
        });
    }
    /* 删除 */
    function del(ids) {
        layer.confirm('确定要删除选中数据吗?', {
            skin: 'layui-layer-admin',
            shade: .1
        }, function (i) {
            layer.close(i);
            var loadIndex = layer.load(2);
            $.ajax({
                url: baseUrl+"/orderLog/delete/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {ids: ids},
                method: 'POST',
                success: function (res) {
                    layer.close(loadIndex);
                    if (res.code === 200){
                        layer.msg(res.msg, {icon: 1});
                        tableReload();
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg, {icon: 2});
                    }
                }
            })
        });
    }
    // 搜索
    form.on('submit(search)', function (data) {
        pageCurr = 1;
        tableReload(true);
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        clearFormVal($('#search-box'));
        tableReload(true);
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
            layDate.render({
                elem: '.layui-laydate-range'
                ,type: 'datetime'
                ,range: true
            });
            layDate.render({
                elem: '#payTime\\$',
                type: 'datetime',
                value: data!==undefined?data['payTime$']:null
            });
            layDate.render({
                elem: '#sendTime\\$',
                type: 'datetime',
                value: data!==undefined?data['sendTime$']:null
            });
            layDate.render({
                elem: '#createTime\\$',
                type: 'datetime',
                value: data!==undefined?data['createTime$']:null
            });
            layDate.render({
                elem: '#updateTime\\$',
                type: 'datetime',
                value: data!==undefined?data['updateTime$']:null
            });
        }, 100);
    }
    layDateRender();
    window.loadDocTypeSel = function () {
        return xmSelect.render({
            el: '#docTypeXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/docType/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadItemSel = function () {
        return xmSelect.render({
            el: '#itemXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/item/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadItemSel = function () {
        return xmSelect.render({
            el: '#itemXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/item/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadCstmrSel = function () {
        return xmSelect.render({
            el: '#cstmrXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/cstmr/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadUserSel = function () {
        return xmSelect.render({
            el: '#userXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/user/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadUserSel = function () {
        return xmSelect.render({
            el: '#userXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/user/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
    window.loadHostSel = function () {
        return xmSelect.render({
            el: '#hostXmlSel',
            autoRow: true,
            filterable: true,
            remoteSearch: true,
            radio: true,
            remoteMethod: function (val, cb, show) {
                $.ajax({
                    url: baseUrl + "/host/all/get/kv",
                    headers: {'token': localStorage.getItem('token')},
                    data: {
                        condition: val
                    },
                    method: 'POST',
                    success: function (res) {
                        if (res.code === 200) {
                            cb(res.data)
                        } else {
                            cb([]);
                            layer.msg(res.msg, {icon: 2});
                        }
                    }
                });
            }
        });
    }
});
// 关闭动作
$(document).on('click','#data-detail-close', function () {
    parent.layer.closeAll();
});
function tableReload(search) {
    if (pageCount === 0 || search) {
        let searchData = {};
        $.each($('#search-box [name]').serializeArray(), function() {
            searchData[this.name] = this.value;
        });
        tableIns.reload({
            where: searchData,
            page: {curr: pageCurr}
        });
    } else {
        $(".layui-laypage-btn")[0].click();
    }
}
zy-asrs-wms/src/main/webapp/views/orderDetlLog/orderDetlLog.html
New file
@@ -0,0 +1,247 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="orderDetlLog" lay-filter="orderDetlLog"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</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>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/orderDetlLog/orderDetlLog.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">ID: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="id" placeholder="请输入ID" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">订单内码: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="orderId" placeholder="请输入订单内码" style="display: none">
                        <input id="orderId$" name="orderId$" 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="orderQueryByorderId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="orderQueryByorderIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">数量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="anfme" placeholder="请输入数量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">商品编码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="matnr" placeholder="请输入商品编码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">商品名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="maktx" placeholder="请输入商品名称">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="name" placeholder="请输入名称">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">规格: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="specs" placeholder="请输入规格">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">型号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="model" placeholder="请输入型号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">批号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="batch" placeholder="请输入批号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单位: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="unit" placeholder="请输入单位">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">商品条码: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="barcode" placeholder="请输入商品条码">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">供应商: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="supplier" placeholder="请输入供应商">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单价: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="unitPrice" placeholder="请输入单价">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">品项数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="itemNum" placeholder="请输入品项数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">数量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="count" placeholder="请输入数量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">重量: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="weight" placeholder="请输入重量">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">状态: </label>
                    <div class="layui-input-block">
                        <select name="status">
                            <option value="">请选择状态</option>
                            <option value="1">正常</option>
                            <option value="0">禁用</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="createBy" placeholder="请输入添加人员" style="display: none">
                        <input id="createBy$" name="createBy$" 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="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="createTime" id="createTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="updateBy" placeholder="请输入修改人员" style="display: none">
                        <input id="updateBy$" name="updateBy$" 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="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">授权商户: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="hostId" placeholder="请输入授权商户" style="display: none">
                        <input id="hostId$" name="hostId$" 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="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </div>
</script>
</html>
zy-asrs-wms/src/main/webapp/views/orderLog/orderLog.html
New file
@@ -0,0 +1,351 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
</head>
<body>
<div class="layui-fluid">
    <div class="layui-card">
        <div class="layui-card-body">
            <div class="layui-form toolbar" id="search-box">
                <div class="layui-form-item">
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline" style="width: 300px">
                        <div class="layui-input-inline">
                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px">
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                            <i class="layui-icon">&#xe666;</i>重置
                        </button>
                    </div>
                </div>
            </div>
            <table class="layui-hide" id="orderLog" lay-filter="orderLog"></table>
        </div>
    </div>
</div>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button>
    </div>
</script>
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</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>
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/orderLog/orderLog.js" charset="utf-8"></script>
</body>
<!-- 表单弹窗 -->
<script type="text/html" id="editDialog">
    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
        <input name="id" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md12">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">ID: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="id" placeholder="请输入ID" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="uuid" placeholder="请输入编号" lay-vertype="tips" lay-verify="required">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">订单编号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="orderNo" placeholder="请输入订单编号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单据日期: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="orderTime" placeholder="请输入单据日期">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单据类型: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="docType" placeholder="请输入单据类型" style="display: none">
                        <input id="docType$" name="docType$" 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="docTypeQueryBydocType" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="docTypeQueryBydocTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">项目编号: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="itemId" placeholder="请输入项目编号" style="display: none">
                        <input id="itemId$" name="itemId$" 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="itemQueryByitemId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="itemQueryByitemIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="itemName" placeholder="请输入">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">调拨项目编号: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="allotItemId" placeholder="请输入调拨项目编号" style="display: none">
                        <input id="allotItemId$" name="allotItemId$" 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="itemQueryByallotItemId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="itemQueryByallotItemIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">初始票据号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="defNumber" placeholder="请输入初始票据号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">票据号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="number" placeholder="请输入票据号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">客户编号: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="cstmr" placeholder="请输入客户编号" style="display: none">
                        <input id="cstmr$" name="cstmr$" 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="cstmrQueryBycstmr" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="cstmrQueryBycstmrSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">客户: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="cstmrName" placeholder="请输入客户">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">联系方式: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="tel" placeholder="请输入联系方式">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">操作人员: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="operMemb" placeholder="请输入操作人员">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">合计金额: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="totalFee" placeholder="请输入合计金额">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">优惠率: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="discount" placeholder="请输入优惠率">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">优惠金额: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="discountFee" placeholder="请输入优惠金额">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">销售或采购费用合计: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="otherFee" placeholder="请输入销售或采购费用合计">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">实付金额: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="actFee" placeholder="请输入实付金额">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">付款类型: </label>
                    <div class="layui-input-block">
                        <select name="payType">
                            <option value="">请选择付款类型</option>
                            <option value="1">现金</option>
                            <option value="2">记账</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">业务员: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="salesman" placeholder="请输入业务员">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">结算天数: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="accountDay" placeholder="请输入结算天数">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">邮费支付类型: </label>
                    <div class="layui-input-block">
                        <select name="postFeeType">
                            <option value="">请选择邮费支付类型</option>
                            <option value="1">在线支付</option>
                            <option value="2">货到付款</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">邮费: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="postFee" placeholder="请输入邮费">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">付款时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="payTime" id="payTime$" placeholder="请输入付款时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">发货时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="sendTime" id="sendTime$" placeholder="请输入发货时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">物流名称: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="shipName" placeholder="请输入物流名称">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">物流单号: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="shipCode" placeholder="请输入物流单号">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">订单状态: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="settle" placeholder="请输入订单状态">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">状态: </label>
                    <div class="layui-input-block">
                        <select name="status">
                            <option value="">请选择状态</option>
                            <option value="1">正常</option>
                            <option value="0">禁用</option>
                        </select>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="createBy" placeholder="请输入添加人员" style="display: none">
                        <input id="createBy$" name="createBy$" 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="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">添加时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="createTime" id="createTime$" placeholder="请输入添加时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改人员: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="updateBy" placeholder="请输入修改人员" style="display: none">
                        <input id="updateBy$" name="updateBy$" 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="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">修改时间: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="updateTime" id="updateTime$" placeholder="请输入修改时间">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">备注: </label>
                    <div class="layui-input-block">
                        <input class="layui-input" name="memo" placeholder="请输入备注">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">授权商户: </label>
                    <div class="layui-input-block cool-auto-complete">
                        <input class="layui-input" name="hostId" placeholder="请输入授权商户" style="display: none">
                        <input id="hostId$" name="hostId$" 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="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                            </select>
                        </div>
                    </div>
                </div>
             </div>
        </div>
        <hr class="layui-bg-gray">
        <div class="layui-form-item text-right">
            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button>
            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
        </div>
    </div>
</script>
</html>