Explorar o código

机器统计页面

liujiankang %!s(int64=7) %!d(string=hai) anos
pai
achega
5be9f2df8b

+ 18 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsMachineLogs.java

@@ -25,6 +25,8 @@ public class PtsMachineLogs  implements Serializable {
     private String logsProcessPrompt;  //工序异常状态提示
     private Date logsProcessTime; //工序执行时间
     private Date logsCreateTime; //创建时间
+    private Integer processNodeId;//工序节点id
+    private String processNodeName;//工序节点名称
 
     public Integer getLogsId() {
         return logsId;
@@ -145,4 +147,20 @@ public class PtsMachineLogs  implements Serializable {
     public void setLogsErrorType(Integer logsErrorType) {
         this.logsErrorType = logsErrorType;
     }
+
+    public Integer getProcessNodeId() {
+        return processNodeId;
+    }
+
+    public void setProcessNodeId(Integer processNodeId) {
+        this.processNodeId = processNodeId;
+    }
+
+    public String getProcessNodeName() {
+        return processNodeName;
+    }
+
+    public void setProcessNodeName(String processNodeName) {
+        this.processNodeName = processNodeName;
+    }
 }

+ 96 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsMachineStatistics.java

@@ -0,0 +1,96 @@
+package com.iamberry.rst.core.pts;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 机器统计实体类
+ * Created by Administrator on 2017/8/25.
+ */
+public class PtsMachineStatistics implements Serializable{
+    private static final long serialVersionUID = -6496841333407812728L;
+    private String year;//年
+    private String  month;//月
+    private String day;//日
+    private Integer num;//数量
+    private String date;//日期
+
+    private Integer machineCount;//机器总数
+    private Integer machineAbnormality;//生产异常总数
+
+    private Integer machineType;//1.净水机 2.冲奶机
+
+    private String nodeDes;//工序选项描述
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public String getDay() {
+        return day;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public Integer getMachineCount() {
+        return machineCount;
+    }
+
+    public void setMachineCount(Integer machineCount) {
+        this.machineCount = machineCount;
+    }
+
+    public Integer getMachineAbnormality() {
+        return machineAbnormality;
+    }
+
+    public void setMachineAbnormality(Integer machineAbnormality) {
+        this.machineAbnormality = machineAbnormality;
+    }
+
+    public Integer getMachineType() {
+        return machineType;
+    }
+
+    public void setMachineType(Integer machineType) {
+        this.machineType = machineType;
+    }
+
+    public String getNodeDes() {
+        return nodeDes;
+    }
+
+    public void setNodeDes(String nodeDes) {
+        this.nodeDes = nodeDes;
+    }
+}

+ 13 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineService.java

@@ -6,6 +6,7 @@ import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.PtsMachine;
 import com.iamberry.rst.core.pts.PtsMachineLogs;
+import com.iamberry.rst.core.pts.PtsMachineStatistics;
 
 import java.util.List;
 
@@ -48,4 +49,16 @@ public interface MachineService {
 
     //批量修改打印状态
     Integer batchUpdateMachineIsPring(String[] machineBarcodes);
+
+    //生产机器1-12月份统计
+    List<PtsMachineStatistics> monthStatistics(PtsMachineStatistics ptsMachineStatistics);
+
+    //生产机器最近七天生产份统计
+    List<PtsMachineStatistics> dayStatistics(PtsMachineStatistics ptsMachineStatistics);
+
+    //生产流程异常机器统计
+    PtsMachineStatistics flowAbnormality(PtsMachineStatistics ptsMachineStatistics);
+
+    //根据工序id统计生成机器时选项被选择的次数
+    List<PtsMachineStatistics> nodeNormalByPrduceId(Integer processId);
 }

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineServiceImpl.java

@@ -6,6 +6,7 @@ import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsMachine;
 import com.iamberry.rst.core.pts.PtsMachineLogs;
+import com.iamberry.rst.core.pts.PtsMachineStatistics;
 import com.iamberry.rst.faces.pts.MachineService;
 import com.iamberry.rst.service.pts.mapper.MachineMapper;
 import com.iamberry.rst.util.PageUtil;
@@ -87,4 +88,24 @@ public class MachineServiceImpl implements MachineService {
         return machineMapper.batchUpdateMachineIsPring(machineBarcodes);
     }
 
+    @Override
+    public List<PtsMachineStatistics> monthStatistics(PtsMachineStatistics ptsMachineStatistics) {
+        return machineMapper.monthStatistics(ptsMachineStatistics);
+    }
+
+    @Override
+    public List<PtsMachineStatistics> dayStatistics(PtsMachineStatistics ptsMachineStatistics) {
+        return machineMapper.dayStatistics(ptsMachineStatistics);
+    }
+
+    @Override
+    public PtsMachineStatistics flowAbnormality(PtsMachineStatistics ptsMachineStatistics) {
+        return machineMapper.flowAbnormality(ptsMachineStatistics);
+    }
+
+    @Override
+    public List<PtsMachineStatistics> nodeNormalByPrduceId(Integer processId) {
+        return machineMapper.nodeNormalByPrduceId(processId);
+    }
+
 }

+ 14 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineMapper.java

@@ -3,6 +3,7 @@ package com.iamberry.rst.service.pts.mapper;
 import com.iamberry.rst.core.pts.Produce;
 import com.iamberry.rst.core.pts.PtsMachine;
 import com.iamberry.rst.core.pts.PtsMachineLogs;
+import com.iamberry.rst.core.pts.PtsMachineStatistics;
 
 import java.util.List;
 
@@ -42,4 +43,17 @@ public interface MachineMapper {
    Integer getMachineIsHave(PtsMachine ptsMachine);
    //批量修改打印状态
    Integer batchUpdateMachineIsPring(String[] machineBarcodes);
+
+   //生产机器1-12月份统计
+   List<PtsMachineStatistics> monthStatistics(PtsMachineStatistics ptsMachineStatistics);
+
+    //生产机器最近七天生产份统计
+    List<PtsMachineStatistics> dayStatistics(PtsMachineStatistics ptsMachineStatistics);
+
+    //生产流程异常机器统计
+   PtsMachineStatistics flowAbnormality(PtsMachineStatistics ptsMachineStatistics);
+
+
+    //根据工序id统计生成机器时选项被选择的次数
+    List<PtsMachineStatistics> nodeNormalByPrduceId(Integer processId);
 }

+ 103 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineMapper.xml

@@ -188,4 +188,107 @@
         </foreach>)
     </update>
 
+
+    <!-- 生产机器1-12月份统计 -->
+    <select id="monthStatistics" parameterType="PtsMachineStatistics" resultType="PtsMachineStatistics">
+        SELECT a.year,a.month,a.num from
+        (SELECT
+            YEAR (machine_produced_time) as year,
+            MONTH (machine_produced_time) as month,
+            count(machine_id) as num
+        FROM
+            tb_rst_pts_machine
+        where YEAR (machine_produced_time) = #{year}
+        AND machine_produce_type = #{machineType}
+        GROUP BY
+            YEAR (machine_produced_time),
+            MONTH (machine_produced_time)
+        UNION
+        SELECT #{year} as year,1 as month,'0' as num
+        UNION
+        SELECT #{year} as year,2 as month,'0' as num
+        UNION
+        SELECT #{year} as year,3 as month,'0' as num
+        UNION
+        SELECT #{year} as year,4 as month,'0' as num
+        UNION
+        SELECT #{year} as year,5 as month,'0' as num
+        UNION
+        SELECT #{year} as year,6 as month,'0' as num
+        UNION
+        SELECT #{year} as year,7 as month,'0' as num
+        UNION
+        SELECT #{year} as year,8 as month,'0' as num
+        UNION
+        SELECT #{year} as year,9 as month,'0' as num
+        UNION
+        SELECT #{year} as year,10 as month,'0' as num
+        UNION
+        SELECT #{year} as year,11 as month,'0' as num
+        UNION
+        SELECT #{year} as year,12 as month,'0' as num
+        ) as a group by a.month ORDER BY a.month ASC
+    </select>
+
+    <!-- 生产机器最近七天生产份统计 -->
+    <select id="dayStatistics" parameterType="PtsMachineStatistics" resultType="PtsMachineStatistics">
+        SELECT * from (SELECT
+        DAY (machine_produced_time) AS day,
+        date_format(machine_produced_time ,'%m.%d' )  AS date,
+
+        count(machine_id) as num
+        FROM
+        tb_rst_pts_machine
+        WHERE
+        DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(machine_produced_time)
+        and
+        machine_produce_type = #{machineType}
+        GROUP BY DAY(machine_produced_time)
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 7 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 7 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 6 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 6 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 5 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 5 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 4 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 4 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 3 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 3 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 2 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 2 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        UNION
+        SELECT DAY (DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS day,date_format(DATE_SUB(CURDATE(), INTERVAL 1 DAY) ,'%m.%d' )  AS date,'0' as num FROM tb_rst_pts_machine
+        ) days GROUP BY days.day
+    </select>
+
+    <!-- 生产流程异常机器统计 -->
+    <select id="flowAbnormality" parameterType="PtsMachineStatistics" resultType="PtsMachineStatistics">
+        SELECT
+            COUNT(1) AS machineCount,
+            sum(
+                CASE
+                WHEN machine_process_state = 2 THEN
+                    1
+                ELSE
+                    0
+                END
+            ) AS machineAbnormality
+        FROM
+            tb_rst_pts_machine
+        where machine_produce_type = #{machineType}
+    </select>
+
+    <!--根据工序id统计生成机器时选项被选择的次数-->
+    <select id="nodeNormalByPrduceId" parameterType="Integer" resultType="PtsMachineStatistics">
+        SELECT
+            pn.node_des AS nodeDes,
+            COUNT(ml.process_node_id) AS num
+        FROM
+            tb_rst_pts_process_node pn
+        LEFT JOIN tb_rst_pts_machine_logs ml ON pn.node_id = ml.process_node_id
+        WHERE
+            pn.process_id = #{processId}
+        GROUP BY
+            ml.process_node_id
+    </select>
 </mapper>

+ 129 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachineController.java

@@ -4,22 +4,28 @@ import com.iamberry.rst.core.order.Order;
 import com.iamberry.rst.core.order.RentType;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.ProduceProcess;
 import com.iamberry.rst.core.pts.PtsMachine;
 import com.iamberry.rst.core.pts.PtsMachineLogs;
+import com.iamberry.rst.core.pts.PtsMachineStatistics;
 import com.iamberry.rst.faces.pts.*;
+import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.Iterator;
-import java.util.List;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * Created by LJK on 2017/8/29.
@@ -30,6 +36,9 @@ public class AdminMachineController {
 
     @Autowired
     private MachineService machineService;
+
+    @Autowired
+    private ProduceService produceService;
     /**
      * 查询机器列表
      * @author LJK
@@ -188,4 +197,122 @@ public class AdminMachineController {
         String[] a = s.split(",");
         return machineService.batchUpdateMachineIsPring(a);
     }
+
+    /**
+     * 查询机器打印列表
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     * @return
+     */
+    @RequiresPermissions("machine:abnormality:statistics")
+    @RequestMapping("/_produced_abnormality_statistics")
+    public ModelAndView producedAbnormalityStatistics(HttpServletRequest request,PtsMachine ptsMachine){
+        ModelAndView mv = new ModelAndView("pts/machine/producedAbnormalityStatistics");
+        String machineType = request.getParameter("machineType");//1.净水机 2.冲奶机
+        if(machineType == null || machineType.equals("")){
+            machineType = "1";
+        }
+        mv.addObject("machineType",machineType);
+        PtsMachineStatistics ptsMachineStatistics = new PtsMachineStatistics();
+        Calendar date = Calendar.getInstance();
+        String year = String.valueOf(date.get(Calendar.YEAR));//年
+        ptsMachineStatistics.setYear(year);
+        ptsMachineStatistics.setMachineType(Integer.valueOf(machineType));
+        //查询1-12月每月生产机器数
+       List<PtsMachineStatistics> ptsMachineStatisticsList = machineService.monthStatistics(ptsMachineStatistics);
+       if(ptsMachineStatisticsList.size() > 0){
+           StringBuffer yearBf = new StringBuffer();
+           for(int i=0;i< ptsMachineStatisticsList.size();i++){
+               yearBf.append(ptsMachineStatisticsList.get(i).getNum().toString()+",");
+           }
+           String yearString = yearBf.toString();
+           mv.addObject("years", "["+yearString.substring(0,yearString.length()-1)+"]");
+       }
+
+       //查询最近七天生产机器
+        List<PtsMachineStatistics> dayList = machineService.dayStatistics(ptsMachineStatistics);
+        if(dayList.size() > 0){
+            StringBuffer dayBf = new StringBuffer();
+            StringBuffer dateBf = new StringBuffer();
+            for(int i=0;i< dayList.size();i++){
+                dayBf.append(dayList.get(i).getNum().toString()+",");
+                dateBf.append(dayList.get(i).getDate()+",");
+            }
+            String dayString = dayBf.toString();
+            String monthDayString = dateBf.toString();
+            mv.addObject("days", "["+dayString.substring(0,dayString.length()-1)+"]");
+            mv.addObject("monthDay", "["+monthDayString.substring(0,monthDayString.length()-1)+"]");
+        }
+
+        /*机器总数及流程异常数*/
+        PtsMachineStatistics numbers = machineService.flowAbnormality(ptsMachineStatistics);
+        /*机器总数*/
+        mv.addObject("machineNum", numbers.getMachineCount());
+        /*机器异常总数*/
+        mv.addObject("machineAbnormality", numbers.getMachineAbnormality());
+        /*流程异常百分比*/
+        double percentage = (double)numbers.getMachineAbnormality() / (double)numbers.getMachineCount()*100;
+        NumberFormat nf=new DecimalFormat( "0.0 ");
+        percentage = Double.parseDouble(nf.format(percentage));
+        mv.addObject("abnormalityPercentage", percentage);
+        /*正常百分比*/
+        double normalPercentage = Double.parseDouble(nf.format(100.0 - percentage));
+        mv.addObject("normalPercentage",normalPercentage);
+        /*根据机器类型查询机器所有工序*/
+        ProduceProcess produceProcess = new ProduceProcess();
+        produceProcess.setProduceId(machineType.equals("1")? 1:2);
+        List<ProduceProcess> processList = produceService.listProduceProcess(produceProcess);
+        mv.addObject("processList",processList);
+        //查询第一条的工序值 默认选择第一条工序
+        List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(processList.get(0).getProcessId());
+        if(nodeCountList.size() > 0){
+            JSONObject json = new JSONObject();
+            StringBuffer nodeBf = new StringBuffer();
+            StringBuffer desBf = new StringBuffer();
+            for(int i=0;i< nodeCountList.size();i++){
+                nodeBf.append(nodeCountList.get(i).getNum().toString()+",");
+                desBf.append("\""+nodeCountList.get(i).getNodeDes()+"\"" + ",");
+
+            }
+            String nodeString = nodeBf.toString();
+            String desString = desBf.toString();
+            mv.addObject("nodeString", "["+nodeString.substring(0,nodeString.length()-1)+"]");
+            mv.addObject("desString", "["+desString.substring(0,desString.length()-1)+"]");
+        }
+
+        return mv;
+    }
+
+    /**
+     * 根据工序id统计选项数量
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     * @return
+     */
+    @RequiresPermissions("machine:abnormality:statistics")
+    @ResponseBody
+    @RequestMapping("/_node_normal")
+    public ModelMap nodeNormal(HttpServletRequest request){
+        String processId = request.getParameter("processId");//工序id
+        ModelMap mm = new ModelMap();
+        if(processId == null || processId.equals("")){
+            mm.put("returnCode",500);
+            return mm;
+        }
+        List<PtsMachineStatistics> nodeCountList = machineService.nodeNormalByPrduceId(Integer.valueOf(processId));
+        if(nodeCountList.size() > 0){
+            StringBuffer nodeBf = new StringBuffer();
+            StringBuffer desBf = new StringBuffer();
+            for(int i=0;i< nodeCountList.size();i++){
+                nodeBf.append(nodeCountList.get(i).getNum().toString()+",");
+                desBf.append("\""+nodeCountList.get(i).getNodeDes()+"\"" + ",");
+            }
+            String nodeString = nodeBf.toString();
+            String desString = desBf.toString();
+            mm.put("returnCode",200);
+            mm.put("nodeString","["+nodeString.substring(0,nodeString.length()-1)+"]");
+            mm.put("desString","["+desString.substring(0,desString.length()-1)+"]");
+        }
+        return mm;
+    }
 }

+ 2 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/MachineController.java

@@ -118,6 +118,8 @@ public class MachineController {
             ptsMachineLogs.setProduceName(produce.getProduceName());
             ptsMachineLogs.setProcessName(produceProcess.getProcessName());
             ptsMachineLogs.setDeviceName(ptsDevice.getDeviceName());
+            ptsMachineLogs.setProcessNodeId(processNode.getNodeId());
+            ptsMachineLogs.setProcessNodeName(processNode.getNodeDes());
             if(i == 0){//如果当前循环的是第一条数据则排序必须是1,否则为异常
                 if(produceProcess.getProcessSort() == 1){
                     if(processNode.getNodeStatus() == 0){//工序选项状态为异常则机器表状态也是异常

+ 1 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -45,6 +45,7 @@
 		<typeAlias type="com.iamberry.rst.core.pts.PtsEmployee" alias="PtsEmployee"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsMachine" alias="PtsMachine"/>
 		<typeAlias type="com.iamberry.rst.core.pts.PtsMachineLogs" alias="PtsMachineLogs"/>
+		<typeAlias type="com.iamberry.rst.core.pts.PtsMachineStatistics" alias="PtsMachineStatistics"/>
 	</typeAliases>
 	<!-- PageHelper -->
 	<plugins>

+ 328 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machine/producedAbnormalityStatistics.ftl

@@ -0,0 +1,328 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="renderer" content="webkit|ie-comp|ie-stand">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+<meta http-equiv="Cache-Control" content="no-siteapp" />
+
+<style>
+	.charts-box{width:700px;height:400px;display: inline-block;position: relative;margin-right: 40px;margin-bottom: 40px;}
+	.my-nav{width: 100%;height: 48px;background: #fff;display: table;text-align: center;}
+	.my-nav>a{display: table-cell;vertical-align: middle; border: 1px solid #32a3d8;font-size: 18px;border-left: 0;color: #32a3d8;}
+	.my-nav>a:first-child{border-left: 1px solid #32a3d8;}
+	.my-nav>a.active{background-color: #32a3d8;color:#fff;}
+</style>
+<title>生产统计</title>
+<#include "/base/list_base.ftl">
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 统计管理 <span class="c-gray en">&gt;</span> 生产统计 <a class="btn btn-success radius r mr-20" style="line-height:1.6em;margin-top:3px;background-color: #32a3d8;border: 1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
+<div class="pd-20">
+	<div style="width: 250px;margin-bottom: 20px;">
+	<nav class="my-nav" id="tab-nav-menu">
+		<a <#if machineType == '1'>class="active" </#if> onclick="machineTypeNormal(1);">净水机</a><a <#if machineType == '2'>class="active" </#if> onclick="machineTypeNormal(2);">冲奶机</a>
+	</nav>
+	</div>
+	<div>
+		<div class="charts-box">
+	<div id="container" style="width:700px;height:400px;display: inline-block;"></div>
+	</div>
+		<div class="charts-box">
+	<div id="container1" style="width:700px;height:400px;display: inline-block;"></div>
+	</div>
+	</div>
+	<div>
+	<div class="charts-box" style="height: 478px;background-color: #f5f5f5;">
+		<div style="margin: 15px;">
+		<nav class="my-nav" id="tab-nav-map">
+            <#list processList as list>
+                <a  name="${list.processId }" <#if list_index == 0>class="active"</#if> >${list.processName }</a>
+            </#list>
+		</nav>
+		</div>
+	<div id="container3" style="width:700px;height:400px;display: inline-block;"></div>
+	</div>	
+		<div class="charts-box" style="height: 478px;">
+	<div id="container2" style="width:700px;height:478px;display: inline-block;"></div>
+	</div>
+	
+	</div>
+</div>
+<script type="text/javascript" src="${path}/common/lib/hcharts/Highcharts/5.0.6/js/highcharts.js"></script>
+<!--<script type="text/javascript" src="lib/Highcharts/4.1.7/js/modules/exporting.js"></script>-->
+<script type="text/javascript">
+$(function () {
+	
+});	
+
+ var chart =new Highcharts.Chart('container', {
+        chart: {
+            type: 'column',
+            backgroundColor:'#f5f5f5'
+        },
+        title: {
+            text: '每月生产数量'
+        },
+        subtitle: {
+            text: ''
+        },
+        xAxis: {
+            categories: [
+                '一月',
+                '二月',
+                '三月',
+                '四月',
+                '五月',
+                '六月',
+                '七月',
+                '八月',
+                '九月',
+                '十月',
+                '十一月',
+                '十二月'
+            ]
+        },
+        legend: {
+            enabled: false
+        },
+        yAxis: {
+            min: 0,
+            title: {
+                text: '数量'
+            }
+        },
+        tooltip: {
+            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
+            pointFormat: '<tr><td style="color:{series.color};padding:0"> </td>' +
+                '<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
+            footerFormat: '</table>',
+            shared: true,
+            useHTML: true
+        },
+        plotOptions: {
+            column: {
+                pointPadding: 0.2,
+                borderWidth: 0
+            }
+        },
+        series: [{
+            name: ' ',
+            data: ${years!''}
+
+        }]
+    });
+    
+    var chart1 =new Highcharts.Chart('container1', { 
+        chart: {
+            type: 'column',
+            backgroundColor:'#f5f5f5'
+        },
+        title: {
+            text: '七天每日生产数量'
+        },
+        subtitle: {
+            text: ''
+        },
+        xAxis: {
+            categories: ${monthDay!''}
+        },
+        legend: {
+            enabled: false
+        },
+        yAxis: {
+            min: 0,
+            title: {
+                text: '数量'
+            }
+        },
+        tooltip: {
+            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
+            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
+                '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
+            footerFormat: '</table>',
+            shared: true,
+            useHTML: true
+        },
+        plotOptions: {
+            column: {
+                pointPadding: 0.2,
+                borderWidth: 0
+            }
+        },
+        series: [{
+            name: 'Tokyo',
+            data: ${days!''}
+
+        }]
+    });
+    
+  var chart2 =new Highcharts.Chart('container2', {
+        chart: {
+            plotBackgroundColor: null,
+            plotBorderWidth: null,
+            plotShadow: false,
+            backgroundColor:'#f5f5f5'
+        },
+        title: {
+            text: '流程异常'
+        },
+        subtitle: {
+            text: '共生产台${machineNum!''}机器,${machineAbnormality!''}台流程异常<span style="color:#fba62e;">异常率${abnormalityPercentage!''}%</span>'
+        },
+        tooltip: {
+    	    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
+        },
+        plotOptions: {
+            pie: {
+                allowPointSelect: true,
+                cursor: 'pointer',
+                dataLabels: {
+                    enabled: true,
+                    color: '#000000',
+                    connectorColor: '#000000',
+                    format: '<b>{point.name}</b>: {point.percentage:.1f} %'
+                }
+            }
+        },
+        series: [{
+            type: 'pie',
+            name: 'Browser share',
+            colors: ['#2adaa7', '#fba62e', '#90ed7d', '#f7a35c', '#8085e9', '#f15c80', '#e4d354', '#2b908f', '#f45b5b', '#91e8e1'],
+            data: [
+                ['正常',   ${normalPercentage!''}],
+                {
+                    name: '异常',
+                    y: ${abnormalityPercentage!''},
+                    sliced: true,
+                    selected: true
+                },
+            ]
+        }]
+    });
+  var chart3 =new Highcharts.Chart('container3', {
+
+        chart: {
+            type: 'column',
+            backgroundColor:'#f5f5f5'
+        },
+        title: {
+            text: ''
+        },
+        subtitle: {
+            text: ''
+        },
+        xAxis: {
+            categories: ${desString!''}
+        },
+        legend: {
+            enabled: false
+        },
+        yAxis: {
+            min: 0,
+            title: {
+                text: '类型'
+            }
+        },
+        tooltip: {
+            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
+            pointFormat: '<tr><td style="color:{series.color};padding:0"> </td>' +
+                '<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
+            footerFormat: '</table>',
+            shared: false,
+            useHTML: false
+        },
+        plotOptions: {
+            column: {
+                pointPadding: 0.2,
+                borderWidth: 0
+            }
+        },
+        series: [{
+            name: ' ',
+            data: ${nodeString!''}
+
+        }]
+    });
+    
+    
+//按钮切换    
+$(document).on('click', '#tab-nav-menu>a', function() {
+	$(this).addClass("active").siblings().removeClass("active");
+	//这里写更新1,2,3,4图数据的代码,逻辑自己判断
+});	
+
+
+$(document).on('click', '#tab-nav-map>a', function() {
+	$(this).addClass("active").siblings().removeClass("active");
+    var processId = $(this).attr("name");
+    $.ajax({
+        "type" : "post",
+        "url" : "${path}/admin/machine/_node_normal",
+        "dataType" : "json",
+        "data" :{processId : processId},
+        "success" : function(data) {
+            if(data.returnCode == 200){
+                var desString = eval(data.desString);
+                var nodeString = eval(data.nodeString);
+                chart3.update({
+                    chart: {
+                        type: 'column',
+                        backgroundColor:'#f5f5f5'
+                    },
+                    title: {
+                        text: ''
+                    },
+                    subtitle: {
+                        text: ''
+                    },
+                    xAxis: {
+                        categories: desString
+                    },
+                    legend: {
+                        enabled: false
+                    },
+                    yAxis: {
+                        min: 0,
+                        title: {
+                            text: '类型'
+                        }
+                    },
+                    tooltip: {
+                        headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
+                        pointFormat: '<tr><td style="color:{series.color};padding:0"> </td>' +
+                        '<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
+                        footerFormat: '</table>',
+                        shared: false,
+                        useHTML: false
+                    },
+                    plotOptions: {
+                        column: {
+                            pointPadding: 0.2,
+                            borderWidth: 0
+                        }
+                    },
+                    series: [{
+                        name: ' ',
+                        data: nodeString
+
+                    }]
+                });
+            }else{
+                layer.msg('查询失败', {icon: 2, time: 2000});
+            }
+        },
+        "error":function(data){
+            layer.msg('操作失败', {icon: 2, time: 2000});
+        }
+    });
+
+});
+
+function machineTypeNormal(machineType) {
+    window.location.href=root_path + '/admin/machine/_produced_abnormality_statistics?machineType='+machineType;
+}
+</script>
+</body>
+</html>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
watero-rst-web/src/main/webapp/common/lib/hcharts/Highcharts/5.0.6/js/highcharts.js