懒羊羊
2023-10-09 4779beadfc833238c5d83cf60e8195fb352ffd67
看板ip配置表
已添加19个文件
1685 ■■■■■ 文件已修改
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/kb/formula/controller/FormulaKbController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/kb/utils/IPUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/controller/KanbanConfController.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/entity/KanbanConf.java 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/mapper/KanbanConfMapper.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/mapper/mapping/KanbanConfMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/model/params/KanbanConfParam.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/model/result/KanbanConfResult.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/service/KanbanConfService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/service/impl/KanbanConfServiceImpl.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/sqls/kanbanConf_menus.sql 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf_add.js 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf_edit.js 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf.html 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf_add.html 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf_edit.html 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/kb/formula/controller/FormulaKbController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package cn.stylefeng.guns.modular.zsx.kb.formula.controller;
import cn.stylefeng.guns.modular.zsx.kb.utils.IPUtil;
import cn.stylefeng.guns.modular.zsx.pm.salesOrder.service.SalesOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.net.*;
import java.util.Enumeration;
import java.util.Set;
@Controller
@RequestMapping("/kb/formulaView")
public class FormulaKbController {
    private String PREFIX = "/modular/kb/formula";
    /**
     * è·³è½¬åˆ°ä¸»é¡µé¢
     *
     * @author ruimin
     * @Date 2023-08-26
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "/formulaView.html";
    }
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
                while (inetAddresses.hasMoreElements()) {
                    InetAddress inetAddress = inetAddresses.nextElement();
                    if (inetAddress instanceof Inet4Address) { // è¿‡æ»¤IPv4地址
                        System.out.println(inetAddress.getHostAddress());
                    }
                }
            }
        } catch (SocketException e) {
            throw new RuntimeException(e);
        }
    }
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/kb/utils/IPUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package cn.stylefeng.guns.modular.zsx.kb.utils;
import javax.servlet.http.HttpServletRequest;
/**
 * @Author: ll
 * @Date: 2021/4/1 9:20
 * @Version 1.0
 */
  public class IPUtil {
    //获取ip地址
    public static String getRealIp(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        System.out.println("x-forwarded-for ip: " + ip);
        if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
            // å¤šæ¬¡åå‘代理后会有多个ip值,第一个ip才是真实ip
            if( ip.indexOf(",")!=-1 ){
                ip = ip.split(",")[0];
            }
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/controller/KanbanConfController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.controller;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.zsx.kb.utils.IPUtil;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity.KanbanConf;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.service.KanbanConfService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.kernel.model.response.ResponseData;
import cn.stylefeng.roses.core.mutidatasource.annotion.DataSource;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
/**
 * çœ‹æ¿é…ç½®æŽ§åˆ¶å™¨
 *
 * @author ruimin
 * @Date 2023-10-08 15:23:17
 */
@Controller
@RequestMapping("/kanbanConf")
public class KanbanConfController extends BaseController {
    private String PREFIX = "/modular/sys/kanbanConf";
    @Autowired
    private KanbanConfService kanbanConfService;
    /**
     * è·³è½¬åˆ°ä¸»é¡µé¢
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "/kanbanConf.html";
    }
    /**
     * æ–°å¢žé¡µé¢
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/add")
    public String add() {
        return PREFIX + "/kanbanConf_add.html";
    }
    /**
     * ç¼–辑页面
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/edit")
    public String edit() {
        return PREFIX + "/kanbanConf_edit.html";
    }
    /**
     * æ–°å¢žæŽ¥å£
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/addItem")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData addItem(KanbanConfParam kanbanConfParam) {
        this.kanbanConfService.add(kanbanConfParam);
        return ResponseData.success();
    }
    /**
     * ç¼–辑接口
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/editItem")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData editItem(KanbanConfParam kanbanConfParam) {
        this.kanbanConfService.update(kanbanConfParam);
        return ResponseData.success();
    }
    /**
     * åˆ é™¤æŽ¥å£
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/delete")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData delete(KanbanConfParam kanbanConfParam) {
        this.kanbanConfService.delete(kanbanConfParam);
        return ResponseData.success();
    }
    /**
     * æŸ¥çœ‹è¯¦æƒ…接口
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @RequestMapping("/detail")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData detail(KanbanConfParam kanbanConfParam) {
        KanbanConf detail = this.kanbanConfService.getById(kanbanConfParam.getId());
        return ResponseData.success(detail);
    }
    /**
     * æŸ¥è¯¢åˆ—表
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    @ResponseBody
    @RequestMapping("/list")
    @DataSource(name = "self")
    public LayuiPageInfo list(KanbanConfParam kanbanConfParam) {
        return this.kanbanConfService.findPageBySpec(kanbanConfParam);
    }
    @RequestMapping("/ipSetting")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData ipSetting(KanbanConfParam kanbanConfParam, HttpServletRequest request) {
        String realIp = IPUtil.getRealIp(request);
        KanbanConf kanbanConf = new KanbanConf();
        KanbanConf ipAddress = this.kanbanConfService.getOne(new QueryWrapper<KanbanConf>().eq("ip_address", realIp));
        if(ipAddress == null){
            kanbanConf.setLineCode(kanbanConfParam.getLineCode());
            kanbanConf.setLocationCode(kanbanConfParam.getLocationCode());
            kanbanConf.setIpAddress(realIp);
            this.kanbanConfService.save(kanbanConf);
        }else {
            kanbanConf.setLineCode(kanbanConfParam.getLineCode());
            kanbanConf.setLocationCode(kanbanConfParam.getLocationCode());
            this.kanbanConfService.update(kanbanConf,new QueryWrapper<KanbanConf>().eq("ip_address", realIp));
        }
        return ResponseData.success();
    }
    @RequestMapping("/initIpConf")
    @ResponseBody
    @DataSource(name = "self")
    public ResponseData initIpConf(HttpServletRequest request) {
        String realIp = IPUtil.getRealIp(request);
        KanbanConf ipAddress = this.kanbanConfService.getOne(new QueryWrapper<KanbanConf>().eq("ip_address", realIp));
        return ResponseData.success(ipAddress);
    }
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/entity/KanbanConf.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,208 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
/**
 * <p>
 * çœ‹æ¿é…ç½®
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
@TableName("sys_kanban_conf")
public class KanbanConf implements Serializable {
    private static final long serialVersionUID=1L;
    /**
     * ID
     */
      @TableId(value = "id", type = IdType.ID_WORKER)
    private Long id;
    /**
     * é¡µé¢ç¼–号
     */
    @TableField("page_code")
    private String pageCode;
    /**
     * ip地址
     */
    @TableField("ip_address")
    private String ipAddress;
    /**
     * MAC地址
     */
    @TableField("mac_address")
    private String macAddress;
    /**
     * è½¦é—´ç¼–号
     */
    @TableField("workshop_code")
    private String workshopCode;
    /**
     * è½¦é—´åç§°
     */
    @TableField("workshop_name")
    private String workshopName;
    /**
     * äº§çº¿ç¼–号
     */
    @TableField("line_code")
    private String lineCode;
    /**
     * äº§çº¿åç§°
     */
    @TableField("line_name")
    private String lineName;
    /**
     * å·¥ä½ç¼–码
     */
    @TableField("location_code")
    private String locationCode;
    /**
     * å·¥ä½åç§°
     */
    @TableField("location_name")
    private String locationName;
    /**
     * ä»“库编号
     */
    @TableField("warehouse_code")
    private String warehouseCode;
    /**
     * ä»“库名称
     */
    @TableField("warehouse_name")
    private String warehouseName;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getPageCode() {
        return pageCode;
    }
    public void setPageCode(String pageCode) {
        this.pageCode = pageCode;
    }
    public String getIpAddress() {
        return ipAddress;
    }
    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }
    public String getMacAddress() {
        return macAddress;
    }
    public void setMacAddress(String macAddress) {
        this.macAddress = macAddress;
    }
    public String getWorkshopCode() {
        return workshopCode;
    }
    public void setWorkshopCode(String workshopCode) {
        this.workshopCode = workshopCode;
    }
    public String getWorkshopName() {
        return workshopName;
    }
    public void setWorkshopName(String workshopName) {
        this.workshopName = workshopName;
    }
    public String getLineCode() {
        return lineCode;
    }
    public void setLineCode(String lineCode) {
        this.lineCode = lineCode;
    }
    public String getLineName() {
        return lineName;
    }
    public void setLineName(String lineName) {
        this.lineName = lineName;
    }
    public String getLocationCode() {
        return locationCode;
    }
    public void setLocationCode(String locationCode) {
        this.locationCode = locationCode;
    }
    public String getLocationName() {
        return locationName;
    }
    public void setLocationName(String locationName) {
        this.locationName = locationName;
    }
    public String getWarehouseCode() {
        return warehouseCode;
    }
    public void setWarehouseCode(String warehouseCode) {
        this.warehouseCode = warehouseCode;
    }
    public String getWarehouseName() {
        return warehouseName;
    }
    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }
    @Override
    public String toString() {
        return "KanbanConf{" +
        "id=" + id +
        ", pageCode=" + pageCode +
        ", ipAddress=" + ipAddress +
        ", macAddress=" + macAddress +
        ", workshopCode=" + workshopCode +
        ", workshopName=" + workshopName +
        ", lineCode=" + lineCode +
        ", lineName=" + lineName +
        ", locationCode=" + locationCode +
        ", locationName=" + locationName +
        ", warehouseCode=" + warehouseCode +
        ", warehouseName=" + warehouseName +
        "}";
    }
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/mapper/KanbanConfMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.mapper;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity.KanbanConf;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result.KanbanConfResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * çœ‹æ¿é…ç½® Mapper æŽ¥å£
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
public interface KanbanConfMapper extends BaseMapper<KanbanConf> {
    /**
     * èŽ·å–列表
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    List<KanbanConfResult> customList(@Param("paramCondition") KanbanConfParam paramCondition);
    /**
     * èŽ·å–map列表
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    List<Map<String, Object>> customMapList(@Param("paramCondition") KanbanConfParam paramCondition);
    /**
     * èŽ·å–分页实体列表
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    Page<KanbanConfResult> customPageList(@Param("page") Page page, @Param("paramCondition") KanbanConfParam paramCondition);
    /**
     * èŽ·å–分页map列表
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    Page<Map<String, Object>> customPageMapList(@Param("page") Page page, @Param("paramCondition") KanbanConfParam paramCondition);
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/mapper/mapping/KanbanConfMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
<?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="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.mapper.KanbanConfMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity.KanbanConf">
        <id column="id" property="id" />
        <result column="page_code" property="pageCode" />
        <result column="ip_address" property="ipAddress" />
        <result column="mac_address" property="macAddress" />
        <result column="workshop_code" property="workshopCode" />
        <result column="workshop_name" property="workshopName" />
        <result column="line_code" property="lineCode" />
        <result column="line_name" property="lineName" />
        <result column="location_code" property="locationCode" />
        <result column="location_name" property="locationName" />
        <result column="warehouse_code" property="warehouseCode" />
        <result column="warehouse_name" property="warehouseName" />
    </resultMap>
    <!-- é€šç”¨æŸ¥è¯¢ç»“果列 -->
    <sql id="Base_Column_List">
        id AS "id", page_code AS "pageCode", ip_address AS "ipAddress", mac_address AS "macAddress", workshop_code AS "workshopCode", workshop_name AS "workshopName", line_code AS "lineCode", line_name AS "lineName", location_code AS "locationCode", location_name AS "locationName", warehouse_code AS "warehouseCode", warehouse_name AS "warehouseName"
    </sql>
    <select id="customList" resultType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result.KanbanConfResult" parameterType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam">
        select
        <include refid="Base_Column_List"/>
        from sys_kanban_conf where 1 = 1
            <if test="paramCondition.ipAddress != null and paramCondition.ipAddress != ''">
                and ip_address like CONCAT('%',#{paramCondition.ipAddress},'%')
            </if>
            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
            </if>
            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
            </if>
    </select>
    <select id="customMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam">
        select
        <include refid="Base_Column_List"/>
        from sys_kanban_conf where 1 = 1
            <if test="paramCondition.ipAddress != null and paramCondition.ipAddress != ''">
                and ip_address like CONCAT('%',#{paramCondition.ipAddress},'%')
            </if>
            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
            </if>
            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
            </if>
    </select>
    <select id="customPageList" resultType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result.KanbanConfResult" parameterType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam">
        select
        <include refid="Base_Column_List"/>
        from sys_kanban_conf where 1 = 1
            <if test="paramCondition.ipAddress != null and paramCondition.ipAddress != ''">
                and ip_address like CONCAT('%',#{paramCondition.ipAddress},'%')
            </if>
            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
            </if>
            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
            </if>
    </select>
    <select id="customPageMapList" resultType="map" parameterType="cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam">
        select
        <include refid="Base_Column_List"/>
        from sys_kanban_conf where 1 = 1
            <if test="paramCondition.ipAddress != null and paramCondition.ipAddress != ''">
                and ip_address like CONCAT('%',#{paramCondition.ipAddress},'%')
            </if>
            <if test="paramCondition.lineCode != null and paramCondition.lineCode != ''">
                and line_code like CONCAT('%',#{paramCondition.lineCode},'%')
            </if>
            <if test="paramCondition.locationCode != null and paramCondition.locationCode != ''">
                and location_code like CONCAT('%',#{paramCondition.locationCode},'%')
            </if>
    </select>
</mapper>
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/model/params/KanbanConfParam.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params;
import lombok.Data;
import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
import java.util.Date;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 * çœ‹æ¿é…ç½®
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
@Data
public class KanbanConfParam implements Serializable, BaseValidatingParam {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    private Long id;
    /**
     * é¡µé¢ç¼–号
     */
    private String pageCode;
    /**
     * ip地址
     */
    private String ipAddress;
    /**
     * MAC地址
     */
    private String macAddress;
    /**
     * è½¦é—´ç¼–号
     */
    private String workshopCode;
    /**
     * è½¦é—´åç§°
     */
    private String workshopName;
    /**
     * äº§çº¿ç¼–号
     */
    private String lineCode;
    /**
     * äº§çº¿åç§°
     */
    private String lineName;
    /**
     * å·¥ä½ç¼–码
     */
    private String locationCode;
    /**
     * å·¥ä½åç§°
     */
    private String locationName;
    /**
     * ä»“库编号
     */
    private String warehouseCode;
    /**
     * ä»“库名称
     */
    private String warehouseName;
    @Override
    public String checkParam() {
        return null;
    }
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/model/result/KanbanConfResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 * çœ‹æ¿é…ç½®
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
@Data
public class KanbanConfResult implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    private Long id;
    /**
     * é¡µé¢ç¼–号
     */
    private String pageCode;
    /**
     * ip地址
     */
    private String ipAddress;
    /**
     * MAC地址
     */
    private String macAddress;
    /**
     * è½¦é—´ç¼–号
     */
    private String workshopCode;
    /**
     * è½¦é—´åç§°
     */
    private String workshopName;
    /**
     * äº§çº¿ç¼–号
     */
    private String lineCode;
    /**
     * äº§çº¿åç§°
     */
    private String lineName;
    /**
     * å·¥ä½ç¼–码
     */
    private String locationCode;
    /**
     * å·¥ä½åç§°
     */
    private String locationName;
    /**
     * ä»“库编号
     */
    private String warehouseCode;
    /**
     * ä»“库名称
     */
    private String warehouseName;
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/service/KanbanConfService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.service;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity.KanbanConf;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result.KanbanConfResult;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * çœ‹æ¿é…ç½® æœåŠ¡ç±»
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
public interface KanbanConfService extends IService<KanbanConf> {
    /**
     * æ–°å¢ž
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    void add(KanbanConfParam param);
    /**
     * åˆ é™¤
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    void delete(KanbanConfParam param);
    /**
     * æ›´æ–°
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    void update(KanbanConfParam param);
    /**
     * æŸ¥è¯¢å•æ¡æ•°æ®ï¼ŒSpecification模式
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    KanbanConfResult findBySpec(KanbanConfParam param);
    /**
     * æŸ¥è¯¢åˆ—表,Specification模式
     *
     * @author ruimin
     * @Date 2023-10-08
     */
    List<KanbanConfResult> findListBySpec(KanbanConfParam param);
    /**
     * æŸ¥è¯¢åˆ†é¡µæ•°æ®ï¼ŒSpecification模式
     *
     * @author ruimin
     * @Date 2023-10-08
     */
     LayuiPageInfo findPageBySpec(KanbanConfParam param);
}
guns-vip-main/src/main/java/cn/stylefeng/guns/modular/zsx/sys/kanbanConf/service/impl/KanbanConfServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package cn.stylefeng.guns.modular.zsx.sys.kanbanConf.service.impl;
import cn.stylefeng.guns.base.pojo.page.LayuiPageFactory;
import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.entity.KanbanConf;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.mapper.KanbanConfMapper;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.params.KanbanConfParam;
import cn.stylefeng.guns.modular.zsx.sys.kanbanConf.model.result.KanbanConfResult;
import  cn.stylefeng.guns.modular.zsx.sys.kanbanConf.service.KanbanConfService;
import cn.stylefeng.roses.core.util.ToolUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
/**
 * <p>
 * çœ‹æ¿é…ç½® æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author ruimin
 * @since 2023-10-08
 */
@Service
public class KanbanConfServiceImpl extends ServiceImpl<KanbanConfMapper, KanbanConf> implements KanbanConfService {
    @Override
    public void add(KanbanConfParam param){
        KanbanConf entity = getEntity(param);
        this.save(entity);
    }
    @Override
    public void delete(KanbanConfParam param){
        this.removeById(getKey(param));
    }
    @Override
    public void update(KanbanConfParam param){
        KanbanConf oldEntity = getOldEntity(param);
        KanbanConf newEntity = getEntity(param);
        ToolUtil.copyProperties(newEntity, oldEntity);
        this.updateById(newEntity);
    }
    @Override
    public KanbanConfResult findBySpec(KanbanConfParam param){
        return null;
    }
    @Override
    public List<KanbanConfResult> findListBySpec(KanbanConfParam param){
        return null;
    }
    @Override
    public LayuiPageInfo findPageBySpec(KanbanConfParam param){
        Page pageContext = getPageContext();
        IPage page = this.baseMapper.customPageList(pageContext, param);
        return LayuiPageFactory.createPageInfo(page);
    }
    private Serializable getKey(KanbanConfParam param){
        return param.getId();
    }
    private Page getPageContext() {
        return LayuiPageFactory.defaultPage();
    }
    private KanbanConf getOldEntity(KanbanConfParam param) {
        return this.getById(getKey(param));
    }
    private KanbanConf getEntity(KanbanConfParam param) {
        KanbanConf entity = new KanbanConf();
        ToolUtil.copyProperties(param, entity);
        return entity;
    }
}
guns-vip-main/src/main/sqls/kanbanConf_menus.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1710918774504177666, 'KANBAN_CONF', '0', '[0],', '看板配置', 'fa-star', '/kanbanConf', 999, 1, 'Y', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-08 15:23:17', '2023-10-08 15:23:17', 1, 1);
INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1710918774508371970, 'KANBAN_CONF_ADD', 'KANBAN_CONF', '[0],[KANBAN_CONF],', '看板配置添加', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-08 15:23:17', '2023-10-08 15:23:17', 1, 1);
INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1710918774508371971, 'KANBAN_CONF_EDIT', 'KANBAN_CONF', '[0],[KANBAN_CONF],', '看板配置修改', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-08 15:23:17', '2023-10-08 15:23:17', 1, 1);
INSERT INTO `sys_menu`(`MENU_ID`, `CODE`, `PCODE`, `PCODES`, `NAME`, `ICON`, `URL`, `SORT`, `LEVELS`, `MENU_FLAG`, `DESCRIPTION`, `STATUS`, `NEW_PAGE_FLAG`, `OPEN_FLAG`, `SYSTEM_TYPE`, `CREATE_TIME`, `UPDATE_TIME`, `CREATE_USER`, `UPDATE_USER`) VALUES (1710918774508371972, 'KANBAN_CONF_DELETE', 'KANBAN_CONF', '[0],[KANBAN_CONF],', '看板配置删除', 'fa-star', '', 999, 2, 'N', '', 'ENABLE', '', '', 'BASE_SYSTEM', '2023-10-08 15:23:17', '2023-10-08 15:23:17', 1, 1);
guns-vip-main/src/main/webapp/assets/modular/kb/formula/formulaView.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
layui.use(['form', 'table', 'admin', 'ax', 'func','element'], function () {
    var $ = layui.$;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;
    var func = layui.func;
    var form = layui.form;
    var element = layui.element;
    initLineInfo();
    var ajax = new $ax(Feng.ctxPath + "/workOrder/list?state=3");
    var result = ajax.start();
    let msg = result.data[0];
    $('#workOrder').text(msg.workOrderCode);
    $('#salesOrderCode').text(msg.salesOrderCode);
    $('#productCode').text(msg.productCode);
    $('#productName').text(msg.productName);
    $('#planQty').text(msg.planQty);
    $('#planStartTime').text(msg.planStartTime);
    $('#planEndTime').text(msg.planEndTime);
    var radioElement = $('#sex1');
    function initLineInfo(){
        $.ajax({
            type: "POST",
            contentType: "application/json;charset=UTF-8",
            url: Feng.ctxPath + '/lineInfo/list',
            success: function (result) {
                var initIpConf = new $ax(Feng.ctxPath + "/kanbanConf/initIpConf");
                var initResult = initIpConf.start();
                $('#lineCode').append(new Option("请选择产线", ""));// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                $.each(result.data, function (index, value) {
                    $('#lineCode').append(new Option(value.lineCode));// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                });
                if(initResult.data!==""){
                    $('#lineCode').val(initResult.data.lineCode);// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                    $('#locationCode').append(new Option(initResult.data.locationCode));// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                }
                layui.form.render("select");//重新渲染 å›ºå®šå†™æ³•
            },
        });
    }
    form.on("select", function (data) {
        switch(data.elem.id){
            case 'lineCode':
                console.log(data.value);
                if(data.value === ""){
                    $('#locationCode').empty();
                    layui.form.render("select");//重新渲染 å›ºå®šå†™æ³•
                }else {
                    $.ajax({
                        type: "POST",
                        contentType: "application/json;charset=UTF-8",
                        url: Feng.ctxPath + '/locationInfo/list?productionLineCode='+data.value,
                        success: function (result) {
                            $('#locationCode').empty();
                            $('#locationCode').append(new Option("请选择工位", ""));// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                            $.each(result.data, function (index, value) {
                                $('#locationCode').append(new Option(value.locationCode));// ä¸‹æ‹‰èœå•é‡Œæ·»åŠ å…ƒç´ 
                            });
                            layui.form.render("select");//重新渲染 å›ºå®šå†™æ³•
                        },
                    });
                }
                break;
            case 'locationCode':
                console.log($('#locationCode').val());
                console.log($('#lineCode').val());
                var getIp = new $ax(Feng.ctxPath + "/kanbanConf/ipSetting?lineCode="+$('#lineCode').val()+"&locationCode="+$('#locationCode').val());
                var result = getIp.start();
                Feng.info("更新完成!")
                break;
        }
    });
    setInterval(function() {
        $('input[name="sex1"][value="nan1"]').prop('checked', true);
    }, 1000);
    setInterval(function() {
        radioElement.prop('checked', false);
    }, 2000);
    //Hash地址的定位
    var layid = location.hash.replace(/^#test=/, '');
    element.tabChange('test', layid);
    element.on('tab(test)', function(elem){
        location.hash = 'test='+ $(this).attr('lay-id');
    });
});
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
layui.use(['table', 'admin', 'ax', 'func'], function () {
    var $ = layui.$;
    var table = layui.table;
    var $ax = layui.ax;
    var admin = layui.admin;
    var func = layui.func;
    /**
     * çœ‹æ¿é…ç½®ç®¡ç†
     */
    var KanbanConf = {
        tableId: "kanbanConfTable"
    };
    /**
     * åˆå§‹åŒ–表格的列
     */
    KanbanConf.initColumn = function () {
        return [[
            {type: 'checkbox'},
            {field: 'id', hide: true, title: 'ID'},
            // {field: 'pageCode', sort: true, title: '页面编号'},
            {field: 'ipAddress', sort: true, title: 'ip地址'},
            // {field: 'macAddress', sort: true, title: 'MAC地址'},
            // {field: 'workshopCode', sort: true, title: '车间编号'},
            // {field: 'workshopName', sort: true, title: '车间名称'},
            {field: 'lineCode', sort: true, title: '产线编号'},
            {field: 'lineName', sort: true, title: '产线名称'},
            {field: 'locationCode', sort: true, title: '工位编码'},
            {field: 'locationName', sort: true, title: '工位名称'},
            // {field: 'warehouseCode', sort: true, title: '仓库编号'},
            // {field: 'warehouseName', sort: true, title: '仓库名称'},
            {fixed: 'right',width: 125, minWidth: 125, align: 'center', toolbar: '#tableBar', title: '操作'}
        ]];
    };
    /**
     * ç‚¹å‡»æŸ¥è¯¢æŒ‰é’®
     */
    KanbanConf.search = function () {
        var queryData = {};
        queryData['ipAddress'] = $('#ipAddress').val();
        queryData['lineCode'] = $('#lineCode').val();
        queryData['locationCode'] = $('#locationCode').val();
        table.reload(KanbanConf.tableId, {
            where: queryData, page: {curr: 1}
        });
    };
    /**
     * è·³è½¬åˆ°æ·»åŠ é¡µé¢
     */
    KanbanConf.jumpAddPage = function () {
        window.location.href = Feng.ctxPath + '/kanbanConf/add'
    };
    /**
    * è·³è½¬åˆ°ç¼–辑页面
    *
    * @param data ç‚¹å‡»æŒ‰é’®æ—¶å€™çš„行数据
    */
    KanbanConf.jumpEditPage = function (data) {
        window.location.href = Feng.ctxPath + '/kanbanConf/edit?id=' + data.id
    };
    /**
     * å¯¼å‡ºexcel按钮
     */
    KanbanConf.exportExcel = function () {
        var checkRows = table.checkStatus(KanbanConf.tableId);
        if (checkRows.data.length === 0) {
            Feng.error("请选择要导出的数据");
        } else {
            table.exportFile(tableResult.config.id, checkRows.data, 'xls');
        }
    };
    /**
     * ç‚¹å‡»åˆ é™¤
     *
     * @param data ç‚¹å‡»æŒ‰é’®æ—¶å€™çš„行数据
     */
    KanbanConf.onDeleteItem = function (data) {
        var operation = function () {
            var ajax = new $ax(Feng.ctxPath + "/kanbanConf/delete", function (data) {
                Feng.success("删除成功!");
                table.reload(KanbanConf.tableId);
            }, function (data) {
                Feng.error("删除失败!" + data.responseJSON.message + "!");
            });
            ajax.set("id", data.id);
            ajax.start();
        };
        Feng.confirm("是否删除?", operation);
    };
    // æ¸²æŸ“表格
    var tableResult = table.render({
        elem: '#' + KanbanConf.tableId,
        url: Feng.ctxPath + '/kanbanConf/list',
        page: true,
        height: "full-158",
        cellMinWidth: 100,
        cols: KanbanConf.initColumn()
    });
    // æœç´¢æŒ‰é’®ç‚¹å‡»äº‹ä»¶
    $('#btnSearch').click(function () {
        KanbanConf.search();
    });
    // æ·»åŠ æŒ‰é’®ç‚¹å‡»äº‹ä»¶
    $('#btnAdd').click(function () {
    KanbanConf.jumpAddPage();
    });
    // å¯¼å‡ºexcel
    $('#btnExp').click(function () {
        KanbanConf.exportExcel();
    });
    // å·¥å…·æ¡ç‚¹å‡»äº‹ä»¶
    table.on('tool(' + KanbanConf.tableId + ')', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;
        if (layEvent === 'edit') {
            KanbanConf.jumpEditPage(data);
        } else if (layEvent === 'delete') {
            KanbanConf.onDeleteItem(data);
        }
    });
});
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf_add.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
/**
 * æ·»åŠ æˆ–者修改页面
 */
var KanbanConfInfoDlg = {
    data: {
        id: "",
        pageCode: "",
        ipAddress: "",
        macAddress: "",
        workshopCode: "",
        workshopName: "",
        lineCode: "",
        lineName: "",
        locationCode: "",
        locationName: "",
        warehouseCode: "",
        warehouseName: ""
    }
};
layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    //表单提交事件
    form.on('submit(btnSubmit)', function (data) {
        var ajax = new $ax(Feng.ctxPath + "/kanbanConf/addItem", function (data) {
            Feng.success("添加成功!");
            window.location.href = Feng.ctxPath + '/kanbanConf'
        }, function (data) {
            Feng.error("添加失败!" + data.responseJSON.message)
        });
        ajax.set(data.field);
        ajax.start();
        return false;
    });
    $('#cancel').click(function(){
        window.location.href = Feng.ctxPath + '/kanbanConf'
    });
});
guns-vip-main/src/main/webapp/assets/modular/sys/kanbanConf/kanbanConf_edit.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
/**
 * è¯¦æƒ…对话框
 */
var KanbanConfInfoDlg = {
    data: {
        id: "",
        pageCode: "",
        ipAddress: "",
        macAddress: "",
        workshopCode: "",
        workshopName: "",
        lineCode: "",
        lineName: "",
        locationCode: "",
        locationName: "",
        warehouseCode: "",
        warehouseName: ""
    }
};
layui.use(['form', 'admin', 'ax','laydate','upload','formSelects'], function () {
    var $ = layui.jquery;
    var $ax = layui.ax;
    var form = layui.form;
    var admin = layui.admin;
    //获取详情信息,填充表单
    var ajax = new $ax(Feng.ctxPath + "/kanbanConf/detail?id=" + Feng.getUrlParam("id"));
    var result = ajax.start();
    form.val('kanbanConfForm', result.data);
    //表单提交事件
    form.on('submit(btnSubmit)', function (data) {
        var ajax = new $ax(Feng.ctxPath + "/kanbanConf/editItem", function (data) {
            Feng.success("更新成功!");
            window.location.href = Feng.ctxPath + '/kanbanConf'
        }, function (data) {
            Feng.error("更新失败!" + data.responseJSON.message)
        });
        ajax.set(data.field);
        ajax.start();
        return false;
    });
    $('#cancel').click(function(){
        window.location.href = Feng.ctxPath + '/kanbanConf'
    });
});
guns-vip-main/src/main/webapp/pages/modular/kb/formula/formulaView.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
@layout("/common/_container.html",{js:["/assets/modular/kb/formula/formulaView.js"]}){
<div class="layui-fluid">
    <div class="layui-row layui-col-space15">
        <div class="layui-col-sm3 layui-col-md3 layui-col-lg3">
            <div class="layui-card">
                <div class="layui-card-header" style="font-weight: bold">
                    <i class="layui-icon layui-icon-rate-solid"></i>工位配置
                </div>
                <div class="layui-card-body">
                    <form class="layui-form" action="">
                        <div class="layui-form-item">
                            <div class="layui-col-md12">
                                <div class="layui-inline">
                                    äº§ çº¿ ç¼– å·:
                                </div>
                                <div class="layui-inline">
                                    <select id="lineCode" lay-verify="lineCode">
                                    </select>
                                </div>
                            </div>
                            <div class="layui-col-md12">
                                <div class="layui-inline">
                                    å·¥ ä½ ç¼– ç :
                                </div>
                                <div class="layui-inline">
                                    <select id="locationCode" lay-verify="locationCode">
                                    </select>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
            <div class="layui-card">
                <div class="layui-card-header" style="font-weight: bold">
                    <i class="layui-icon layui-icon-rate-solid"></i>工单信息
                </div>
                <div class="layui-card-body">
                    <div class="orderInfo">
                        <span>工单编号</span>
                        <span class="mySpan" style="float: right" id="workOrder"></span>
                    </div>
                    <div class="orderInfo">
                        <span>订单编号</span>
                        <span class="mySpan" style="float: right" id="salesOrderCode"></span>
                    </div>
                    <div class="orderInfo">
                        <span>产品编号</span>
                        <span class="mySpan" style="float: right" id="productCode"></span>
                    </div>
                    <div class="orderInfo">
                        <span>产品名称</span>
                        <span class="mySpan" style="float: right" id="productName"></span>
                    </div>
                    <div class="orderInfo">
                        <span>计划数量</span>
                        <span class="mySpan" style="float: right" id="planQty"></span>
                    </div>
                    <div class="orderInfo">
                        <span>计划开始时间</span>
                        <span class="mySpan" style="float: right" id="planStartTime"></span>
                    </div>
                    <div class="orderInfo">
                        <span>计划结束时间</span>
                        <span class="mySpan" style="float: right" id="planEndTime"></span>
                    </div>
                    <hr class="layui-border-orange">
<!--                    <span>PLC交互点</span>-->
                    <div class="container">
                        <input type="radio" id="sex1" name="sex1" value="nan1" title="男">
                        <span>系统就绪</span>
                        <input style="margin-left: 150px" type="radio" name="sex" value="nan" title="男">
                        <span>工件到位</span>
                    </div>
                    <div class="container">
                        <input type="radio" name="sex" value="nan" title="男">
                        <span>读取条码</span>
                        <input style="margin-left: 150px" type="radio" name="sex" value="nan" title="男">
                        <span>下发机型</span>
                    </div>
                    <div class="container">
                        <input type="radio" name="sex" value="nan" title="男">
                        <span>允许启动</span>
                        <input style="margin-left: 150px" type="radio" name="sex" value="nan" title="男">
                        <span>不允许启动</span>
                    </div>
                    <div class="container">
                        <input type="radio" name="sex" value="nan" title="男">
                        <span>合格完成</span>
                        <input style="margin-left: 150px" type="radio" name="sex" value="nan" title="男">
                        <span>不合格完成</span>
                    </div>
                    <div class="container">
                        <input type="radio" name="sex" value="nan" title="男">
                        <span>保存完成</span>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-sm9 layui-col-md9 layui-col-lg9">
            <div class="layui-card" style="height: 577px">
                <div class="layui-card-header" style="font-weight: bold">
                    <i class="layui-icon layui-icon-rate-solid"></i>操作栏
                </div>
                <div class="layui-card-body">
                    <div class="layui-tab" lay-filter="test">
                        <ul class="layui-tab-title">
                            <li class="layui-this" lay-id="11">首页</li>
                            <li lay-id="22">工序状态</li>
                            <li lay-id="33">装配采集清单</li>
                            <li lay-id="44">工艺参数</li>
                            <li lay-id="55">不合格质量数据</li>
                        </ul>
                        <div class="layui-tab-content">
                            <div class="layui-tab-item layui-show">
                                ç‚¹å‡»è¯¥Tab的任一标题,观察地址栏变化,再刷新页面。选项卡将会自动定位到上一次切换的项
                            </div>
                            <div class="layui-tab-item">内容2</div>
                            <div class="layui-tab-item">内容3</div>
                            <div class="layui-tab-item">内容4</div>
                            <div class="layui-tab-item">内容5</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<style>
    .orderInfo {
        margin-bottom: 5px;  /* è®¾ç½®æ¢è¡ŒåŽçš„下边距 */
    }
    .container {
        display: flex; /* ä½¿ç”¨ Flex å¸ƒå±€ */
        align-items: center; /* å°†å­å…ƒç´ åž‚直居中对齐 */
    }
</style>
@}
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
@layout("/common/_container.html",{js:["/assets/modular/sys/kanbanConf/kanbanConf.js"]}){
<div class="layui-body-header">
    <span class="layui-body-header-title">看板配置管理</span>
</div>
<div class="layui-fluid">
    <div class="layui-row layui-col-space15">
        <div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
            <div class="layui-card">
                <div class="layui-card-body">
                    <div class="layui-form toolbar">
                        <div class="layui-form-item">
                            <div class="layui-inline">
                                <input id="ipAddress" class="layui-input" type="text" placeholder="ip地址"/>
                            </div>
                            <div class="layui-inline">
                                <input id="lineCode" class="layui-input" type="text" placeholder="产线编号"/>
                            </div>
                            <div class="layui-inline">
                                <input id="locationCode" class="layui-input" type="text" placeholder="工位编码"/>
                            </div>
                            <div class="layui-inline">
                                <button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
                                <button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>
                                <button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>导出</button>
                            </div>
                        </div>
                    </div>
                    <table class="layui-table" id="kanbanConfTable" lay-filter="kanbanConfTable"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<script type="text/html" id="tableBar">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
@}
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf_add.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
@layout("/common/_form.html",{js:["/assets/modular/sys/kanbanConf/kanbanConf_add.js"],css:["/assets/expand/module/formSelects/formSelects-v4.css"]}){
<form class="layui-form" id="kanbanConfForm" lay-filter="kanbanConfForm">
    <div class="layui-fluid" style="padding-bottom: 75px;">
        <div class="layui-card">
            <div class="layui-card-header">基本信息</div>
            <div class="layui-card-body">
                <div class="layui-form-item layui-row">
                    <input name="id" type="hidden"/>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">页面编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="pageCode" name="pageCode" placeholder="请输入页面编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">ip地址<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="ipAddress" name="ipAddress" placeholder="请输入ip地址" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">MAC地址<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="macAddress" name="macAddress" placeholder="请输入MAC地址" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">车间编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="workshopCode" name="workshopCode" placeholder="请输入车间编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">车间名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="workshopName" name="workshopName" placeholder="请输入车间名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">产线编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="lineCode" name="lineCode" placeholder="请输入产线编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">产线名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="lineName" name="lineName" placeholder="请输入产线名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">工位编码<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="locationCode" name="locationCode" placeholder="请输入工位编码" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">工位名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="locationName" name="locationName" placeholder="请输入工位名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">仓库编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="warehouseCode" name="warehouseCode" placeholder="请输入仓库编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">仓库名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="warehouseName" name="warehouseName" placeholder="请输入仓库名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="form-group-bottom text-center">
        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;取消&emsp;</button>
    </div>
</form>
@}
guns-vip-main/src/main/webapp/pages/modular/sys/kanbanConf/kanbanConf_edit.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
@layout("/common/_form.html",{js:["/assets/modular/sys/kanbanConf/kanbanConf_edit.js"]}){
<form class="layui-form" id="kanbanConfForm" lay-filter="kanbanConfForm">
    <div class="layui-fluid" style="padding-bottom: 75px;">
        <div class="layui-card">
            <div class="layui-card-header">基本信息</div>
            <div class="layui-card-body">
                <div class="layui-form-item layui-row">
                    <input name="id" type="hidden"/>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">页面编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="pageCode" name="pageCode" placeholder="请输入页面编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">ip地址<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="ipAddress" name="ipAddress" placeholder="请输入ip地址" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">MAC地址<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="macAddress" name="macAddress" placeholder="请输入MAC地址" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">车间编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="workshopCode" name="workshopCode" placeholder="请输入车间编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">车间名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="workshopName" name="workshopName" placeholder="请输入车间名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">产线编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="lineCode" name="lineCode" placeholder="请输入产线编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">产线名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="lineName" name="lineName" placeholder="请输入产线名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">工位编码<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="locationCode" name="locationCode" placeholder="请输入工位编码" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">工位名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="locationName" name="locationName" placeholder="请输入工位名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">仓库编号<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="warehouseCode" name="warehouseCode" placeholder="请输入仓库编号" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                    <div class="layui-inline layui-col-md12">
                        <label class="layui-form-label">仓库名称<span style="color: red;">*</span></label>
                        <div class="layui-input-block">
                            <input id="warehouseName" name="warehouseName" placeholder="请输入仓库名称" type="text" class="layui-input" lay-verify="required" required/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="form-group-bottom text-center">
        <button class="layui-btn" lay-filter="btnSubmit" lay-submit>&emsp;提交&emsp;</button>
        <button type="reset" class="layui-btn layui-btn-primary" id="cancel">&emsp;取消&emsp;</button>
    </div>
</form>
@}