wangxiaoming 7 éve
szülő
commit
91d5af21ad
22 módosított fájl, 743 hozzáadás és 32 törlés
  1. 42 1
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBom.java
  2. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBomComponents.java
  3. 15 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBomService.java
  4. 29 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java
  5. 15 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBomMapper.java
  6. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/produceMapper.xml
  7. 42 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml
  8. 2 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml
  9. 24 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachinePartsController.java
  10. 55 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java
  11. 8 23
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsEmployeeController.java
  12. 91 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java
  13. 2 0
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  14. 188 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl
  15. 2 2
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/employee/employee_list.ftl
  16. 199 0
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_add.ftl
  17. 12 3
      watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/update_produce.ftl
  18. BIN
      watero-rst-web/src/main/webapp/common/images/pts/addparts.jpg
  19. BIN
      watero-rst-web/src/main/webapp/common/images/uploadimages/addparts.jpg
  20. 1 0
      watero-rst-web/src/main/webapp/common/kingedit/jsp/file_manager_json.jsp
  21. 2 0
      watero-rst-web/src/main/webapp/common/kingedit/jsp/upload_json.jsp
  22. 1 1
      wateroPF-wechat-web/src/main/resources/platform.properties

+ 42 - 1
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBom.java

@@ -2,12 +2,14 @@ package com.iamberry.rst.core.pts;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * bom单管理
  */
 public class PtsBom implements Serializable{
-    private static final long serialVersionUID = -1841049934073982721L;
+
+    private static final long serialVersionUID = 1986441624496176922L;
 
     private Integer bomId;//bom单id
 
@@ -21,6 +23,14 @@ public class PtsBom implements Serializable{
 
     private Date bomUpdateTime;//修改时间
 
+    private Integer allComponentsCost; //总零件成本(分)
+
+    private Integer allComponentsWeight;//总零件重量(g)
+
+    private String produceName; //产品名称
+
+    private List<PtsBomComponents> ptsBomComponentsList;//bom单的关联表
+
     public Integer getBomId() {
         return bomId;
     }
@@ -68,4 +78,35 @@ public class PtsBom implements Serializable{
     public void setBomUpdateTime(Date bomUpdateTime) {
         this.bomUpdateTime = bomUpdateTime;
     }
+
+    public List<PtsBomComponents> getPtsBomComponentsList() {
+        return ptsBomComponentsList;
+    }
+
+    public void setPtsBomComponentsList(List<PtsBomComponents> ptsBomComponentsList) {
+        this.ptsBomComponentsList = ptsBomComponentsList;
+    }
+    public Integer getAllComponentsCost() {
+        return allComponentsCost;
+    }
+
+    public void setAllComponentsCost(Integer allComponentsCost) {
+        this.allComponentsCost = allComponentsCost;
+    }
+
+    public Integer getAllComponentsWeight() {
+        return allComponentsWeight;
+    }
+
+    public void setAllComponentsWeight(Integer allComponentsWeight) {
+        this.allComponentsWeight = allComponentsWeight;
+    }
+
+    public String getProduceName() {
+        return produceName;
+    }
+
+    public void setProduceName(String produceName) {
+        this.produceName = produceName;
+    }
 }

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/pts/PtsBomComponents.java

@@ -16,6 +16,8 @@ public class PtsBomComponents implements Serializable{
 
     private Integer bomComponentsQuantity;//零件数量
 
+    private PtsComponents ptsComponents; //零件
+
     public Integer getBomComponentsId() {
         return bomComponentsId;
     }
@@ -47,4 +49,12 @@ public class PtsBomComponents implements Serializable{
     public void setBomComponentsQuantity(Integer bomComponentsQuantity) {
         this.bomComponentsQuantity = bomComponentsQuantity;
     }
+
+    public PtsComponents getPtsComponents() {
+        return ptsComponents;
+    }
+
+    public void setPtsComponents(PtsComponents ptsComponents) {
+        this.ptsComponents = ptsComponents;
+    }
 }

+ 15 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/PtsBomService.java

@@ -0,0 +1,15 @@
+package com.iamberry.rst.faces.pts;
+
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.core.pts.PtsEmployee;
+
+import java.util.List;
+
+public interface PtsBomService {
+
+    //查询bom单列表
+    PagedResult<PtsBom> listPtsBom(int pageNO, int pageSize, PtsBom ptsBom, boolean isTotalNum);
+
+}

+ 29 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/PtsBomServiceImpl.java

@@ -0,0 +1,29 @@
+package com.iamberry.rst.service.pts;
+
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.core.pts.PtsEmployee;
+import com.iamberry.rst.faces.pts.PtsBomService;
+import com.iamberry.rst.service.pts.mapper.PtsBomMapper;
+import com.iamberry.rst.util.PageUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PtsBomServiceImpl implements PtsBomService {
+
+    @Autowired
+    private PtsBomMapper ptsBomMapper;
+
+
+    //查询bom单列表
+    @Override
+    public PagedResult<PtsBom> listPtsBom(int pageNO, int pageSize, PtsBom ptsBom, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        List<PtsBom> list = ptsBomMapper.listPtsBom(ptsBom);
+        return PageUtil.getPage(list);
+    }
+}

+ 15 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/PtsBomMapper.java

@@ -0,0 +1,15 @@
+package com.iamberry.rst.service.pts.mapper;
+
+import com.iamberry.rst.core.pts.PtsBom;
+
+import java.util.List;
+
+/**
+ * bom单管理
+ */
+public interface PtsBomMapper {
+
+    //查询bom单列表
+    List<PtsBom> listPtsBom(PtsBom ptsBom);
+
+}

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

@@ -117,6 +117,9 @@
         tb_rst_pts_produce.produce_type AS produceType,
         tb_rst_pts_produce.produce_name AS produceName,
         tb_rst_pts_produce.produce_status AS  produceStatus,
+        tb_rst_pts_produce.produce_pattern AS producePattern,
+        tb_rst_pts_produce.produce_model AS produceModel,
+        tb_rst_pts_produce.produce_feature AS  produceFeature,
         tb_rst_pts_produce.produce_remake AS produceRemake,
         tb_rst_pts_produce.produce_create_time AS  produceCreateTime,
         tb_rst_pts_produce.produce_update_time AS produceUpdateTime

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

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.rst.service.pts.mapper.PtsBomMapper">
+
+    <select id="listPtsBom" parameterType="PtsBom" resultType="PtsBom">
+        SELECT
+            trpb.bom_id AS bomId,
+            trpb.bom_name AS bomName,
+            trpb.produce_id AS  produceId,
+            trpb.bom_remarks AS  bomRemarks,
+            trpb.bom_create_time AS bomCreateTime,
+            trpb.bom_update_time AS  bomUpdateTime,
+            SUM(trpc.components_cost * trpbc.bom_components_quantity) AS allComponentsCost,
+            SUM(trpc.components_weight * trpbc.bom_components_quantity) AS allComponentsWeight,
+            trpp.produce_name AS produceName
+        FROM
+            tb_rst_pts_bom trpb
+        LEFT JOIN tb_rst_pts_bom_components trpbc ON trpb.bom_id = trpbc.bom_id
+        LEFT JOIN tb_rst_pts_components trpc ON trpbc.components_id = trpc.components_id
+        LEFT JOIN tb_rst_pts_produce trpp ON trpb.produce_id = trpp.produce_id
+        <where>
+            <if test="bomId !=null">
+                AND trpb.bom_id like CONCAT('%',#{bomId},'%')
+            </if>
+            <if test="bomName !=null and bomName !=''">
+                AND trpb.bom_name like CONCAT('%',#{bomName},'%')
+            </if>
+            <if test="bomRemarks !=null and bomRemarks !=''">
+                AND trpb.bom_remarks like CONCAT('%',#{bomRemarks},'%')
+            </if>
+            <if test="bomRemarks !=null and bomRemarks !=''">
+                AND trpb.bom_remarks like CONCAT('%',#{bomRemarks},'%')
+            </if>
+            <if test="produceId !=null">
+                AND trpb.produce_id = #{produceId}
+            </if>
+        </where>
+        GROUP BY trpb.bom_id
+    </select>
+
+
+</mapper>

+ 2 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml

@@ -23,7 +23,7 @@
                 employee_id = #{employeeId}
             </if>
             <if test="employeeNo !=null and employeeNo !=''">
-                and employee_no = #{employeeNo}
+                and employee_no = like CONCAT('%',#{employeeNo},'%')
             </if>
             <if test="employeeState !=null">
                 and employee_state = #{employeeState}
@@ -72,7 +72,7 @@
                 employee_id = #{employeeId}
             </if>
             <if test="employeeNo !=null and employeeNo !=''">
-               AND employee_no = #{employeeNo}
+               AND employee_no = like CONCAT('%',#{employeeNo},'%')
             </if>
             <if test="employeeName !=null and employeeName !=''">
                 AND employee_name like CONCAT('%',#{employeeName},'%')

+ 24 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminMachinePartsController.java

@@ -0,0 +1,24 @@
+package com.iamberry.rst.controllers.pts;
+
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+/**
+ * Created by LJK on 2017/8/29.
+ */
+@Controller
+@RequestMapping("/admin/machineParts")
+public class AdminMachinePartsController {
+
+    /**
+     * 进入添加机器零件页面
+     * **/
+    @RequiresPermissions("machineParts:add:machineParts")
+    @RequestMapping("/_to_add_machineParts")
+    public ModelAndView toAddMachineParts(){
+        ModelAndView mv = new ModelAndView("pts/machinePtras/ptras_add");
+        return mv;
+    }
+}

+ 55 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsBomController.java

@@ -1,4 +1,59 @@
 package com.iamberry.rst.controllers.pts;
 
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.Produce;
+import com.iamberry.rst.core.pts.PtsBom;
+import com.iamberry.rst.faces.pts.ProduceService;
+import com.iamberry.rst.faces.pts.PtsBomService;
+import com.iamberry.rst.utils.StitchAttrUtil;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+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.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * bom单管理 controller
+ * wangxiaoming
+ */
+@Controller
+@RequestMapping("/admin/bom")
 public class AdminPtsBomController {
+
+    @Autowired
+    private PtsBomService ptsBomService;
+
+    @Autowired
+    private ProduceService produceService;
+
+    /**
+     * 获取bom单列表
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("bom:select:list")
+    @RequestMapping("/_bom_list")
+    public ModelAndView getPtsBom(HttpServletRequest request,PtsBom ptsBom,
+                                  @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                  @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                  @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
+        ModelAndView mv = new ModelAndView("pts/bom/bom_list");
+        PagedResult<PtsBom> pagedResult = ptsBomService.listPtsBom(pageNO, pageSize, ptsBom, totalNum == 0);
+        if (totalNum != 0){
+            pagedResult.setTotal(totalNum);
+        }
+
+        //获取产品集合,用于页面选择产品
+        List<Produce> list = produceService.getProduceList();
+        mv.addObject("produceList",list);
+
+        StitchAttrUtil.setModelAndView(ptsBom, mv, "/admin/bom/_bom_list", pagedResult);
+        return mv;
+    }
+
 }

+ 8 - 23
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/AdminPtsEmployeeController.java

@@ -3,6 +3,7 @@ package com.iamberry.rst.controllers.pts;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.pts.PtsEmployee;
 import com.iamberry.rst.faces.pts.PtsEmployeeService;
+import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,50 +40,34 @@ public class AdminPtsEmployeeController {
                                         @RequestParam(value = "pageNO", defaultValue = "1",required=false) Integer pageNO,
                                         @RequestParam(value = "totalNum", defaultValue = "0",required=false) Integer totalNum) {
         ModelAndView mv = new ModelAndView("pts/employee/employee_list");
-        StringBuilder sb = new StringBuilder("/admin/employee/_employee_list?pageSize=" + pageSize);
         PtsEmployee employee = new PtsEmployee();
 
         String employeeName = request.getParameter("employeeName");
         String employeeNo = request.getParameter("employeeNo");
         String employeeTel = request.getParameter("employeeTel");
-        String employeeState = request.getParameter("employeeState");
+        String state = request.getParameter("employeeState");
+        Integer employeeState = null;
 
         if (employeeName != null && !"".equals(employeeName)) {
             employee.setEmployeeName(employeeName);
-            sb.append("&employeeName=");
-            sb.append(employeeName);
         }
         if (employeeNo != null && !"".equals(employeeNo)) {
             employee.setEmployeeNo(employeeNo);
-            sb.append("&employeeNo=");
-            sb.append(employeeNo);
         }
         if (employeeTel != null && !"".equals(employeeTel)) {
             employee.setEmployeeTel(employeeTel);
-            sb.append("&employeeTel=");
-            sb.append(employeeTel);
         }
-        if (employeeState != null && !"".equals(employeeState)) {
-            employee.setEmployeeState(Integer.valueOf(employeeState));
-            sb.append("&employeeState=");
-            sb.append(employeeState);
+        if (state != null && !"".equals(state)) {
+            employeeState = Integer.valueOf(state);
+            employee.setEmployeeState(employeeState);
         }
 
         PagedResult<PtsEmployee> pagedResult = ptsEmployeeService.getEmployeeList(pageNO, pageSize, employee, totalNum == 0);
-        if(totalNum != 0) {
+        if (totalNum != 0){
             pagedResult.setTotal(totalNum);
-            pagedResult.setPages((int) Math.ceil((double)totalNum/pageSize));
         }
 
-        sb.append("&totalNum=");
-        sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
-        sb.append("&pageNO=");
-        mv.addObject("employeeName", employeeName);
-        mv.addObject("employeeNo", employeeNo);
-        mv.addObject("employeeTel", employeeTel);
-        mv.addObject("employeeState", employeeState);
-        mv.addObject("page", pagedResult);
-        mv.addObject("url", sb.toString());
+        StitchAttrUtil.setModelAndView(employee, mv, "/admin/employee/_employee_list", pagedResult);
         return mv;
     }
 

+ 91 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/StitchAttrUtil.java

@@ -0,0 +1,91 @@
+package com.iamberry.rst.utils;
+
+import com.iamberry.rst.core.page.PagedResult;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.lang.reflect.Field;
+import java.util.*;
+
+public class StitchAttrUtil {
+
+    public final static String noProperty[] = {"serialVersionUID"};
+    public static Set<String> propertySet = new HashSet<String>(Arrays.asList(noProperty));
+
+    /**
+     * 组装ModelAndView
+     * @param object
+     * @param modelAndView
+     * @param url
+     * @param pagedResult
+     * @throws IllegalAccessException
+     */
+    public static void setModelAndView(Object object, ModelAndView modelAndView, String url, PagedResult<?> pagedResult) {
+        StringBuilder sb = new StringBuilder(url);
+
+        if(pagedResult.getTotal() != 0) {
+            pagedResult.setPages((int) Math.ceil((double)pagedResult.getTotal()/pagedResult.getPageSize()));
+        }
+
+        sb.append("?pageSize=" + pagedResult.getPageSize());
+        sb.append("&totalNum=" + pagedResult.getTotal() );
+        StitchAttrUtil.setUrlByObj(sb,object);
+        sb.append("&&pageNO=");
+
+        Map<String, Object> map = StitchAttrUtil.getObjToMap(object);
+        modelAndView.addAllObjects(map);
+
+        modelAndView.addObject("page", pagedResult);
+        modelAndView.addObject("url", sb.toString());
+        return;
+    }
+
+    /**
+     * 将obj 转为map,
+     * 属性值为null的不会 put 到 Map 中
+     * 属性名称在  noProperty 数组中的属性不会 put 到 Map 中
+     * @param object
+     * @return
+     * @throws IllegalAccessException
+     */
+    public static Map<String, Object> getObjToMap(Object object) {
+        Map<String, Object> map = new HashMap<>();
+        Class<?> clazz = object.getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            field.setAccessible(true);
+            String fieldName = field.getName();
+            Object value = null;
+            try {
+                value = field.get(object);
+            }catch (IllegalAccessException e){
+            }
+            if (value != null && !propertySet.contains(fieldName)) {
+                map.put(fieldName, value);
+            }
+        }
+        return map;
+    }
+
+    /**
+     * 拼接url
+     * @param sb
+     * @param object
+     * @throws IllegalAccessException
+     */
+    public static void setUrlByObj(StringBuilder sb,Object object){
+        Class<?> clazz = object.getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            field.setAccessible(true);
+            String fieldName = field.getName();
+            Object value = null;
+            try {
+                value = field.get(object);
+            }catch (IllegalAccessException e){
+            }
+            if (value != null && !propertySet.contains(fieldName)) {
+                sb.append("&"+fieldName+ "=" + value.toString());
+            }
+        }
+    }
+
+
+}

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

@@ -46,6 +46,7 @@
 		<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"/>
+		<typeAlias type="com.iamberry.rst.core.pts.PtsBom" alias="PtsBom"/>
 	</typeAliases>
 	<!-- PageHelper -->
 	<plugins>
@@ -67,5 +68,6 @@
 		<mapper resource="com/iamberry/rst/service/pts/mapper/deviceMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/equipmentMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/pts/mapper/ptsBomMapper.xml"/>
 	</mappers>
 </configuration>

+ 188 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/bom/bom_list.ftl

@@ -0,0 +1,188 @@
+<!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" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+<#include "/base/list_base.ftl">
+    <title>bom单列表</title>
+    <style>
+        *{padding: 0;margin: 0;}
+        .my-input{border: 1px solid rgba(0,0,0,.1);padding: 1px 5px;height: 32px;margin-right: 10px;}
+        .my-input::-webkit-input-placeholder,.my-select{color: #dcdcdc;}
+        .my-select{border: 1px solid rgba(0,0,0,.1);padding:6px 50px 6px 15px;height: 34px;margin: 0 10px; -webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/select-1.png) right center no-repeat;background-size:auto 100%;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        .barcodeImg{margin:10px 0px}
+        .table-bg thead th{background-color: #e2f6ff;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-1.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+        input[type=radio]:checked{-webkit-appearance:none;appearance:none;background: url(/rst/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> Bom单管理
+    <span class="c-gray en">&gt;</span> Bom单列表
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="page-container">
+    <div class="text-c">
+        <form action="${path}/admin/bom/_bom_list" method="post">
+            <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddEmployee();">增加Bom</button>
+            <select class="my-select" name="produceId" style="height: 36px;width: 150px">
+                <option value ="">所有产品</option>
+                <#if produceList?? &&  (produceList?size > 0) >
+                    <#list produceList as produce>
+                        <option value ="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+                    </#list>
+                </#if>
+            </select>
+            <input type="text" class="my-input"  style="width:150px" value="${bomId!}" placeholder="Bom单编号" id="bomId" name="bomId">
+            <input type="text" class="my-input"  style="width:150px" value="${bomName!}" placeholder="Bom单名称" id="bomName" name="bomName">
+            <input type="text" class="my-input"  style="width:150px" value="${bomRemarks!}" placeholder="Bom单备注" id="bomRemarks" name="bomRemarks">
+            <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
+        </form>
+    </div>
+
+    <div class="mt-20">
+        <table class="table table-border table-bordered table-bg table-hover table-sort">
+        <thead>
+        <tr class="text-c">
+            <th width="50">Bom编号</th>
+            <th width="60">所属产品</th>
+            <th width="100">bom名称</th>
+            <th width="80">零件总成本(元)</th>
+            <th width="80">零件总重(KG)</th>
+            <th width="100">备注</th>
+            <th width="80">最近修改时间</th>
+            <th width="80">添加时间</th>
+            <th width="80">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+            <#if page.dataList?? &&  (page.dataList?size > 0) >
+                    <#list page.dataList as bom>
+                        <tr class="text-c">
+                            <td>${bom.bomId!''}</td>
+                            <td>${bom.produceName!''}</td>
+                            <td>${bom.bomName!''}</td>
+                            <td>${bom.allComponentsCost!''}</td>
+                            <td>${bom.allComponentsWeight!''}</td>
+                            <td>${bom.bomRemarks!''}</td>
+                            <td>${(bom.bomUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                            <td>${(bom.bomCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                            <td>
+                                <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_employee(${bom.bomId!''});">
+                                    <i class="Hui-iconfont">&#xe6df;</i>
+                                </a>
+                            </td>
+                        </tr>
+                    </#list>
+            <#else>
+                <tr><td colspan="9" class="td-manage text-c" >暂时没有Bom,请添加!</td></tr>
+            </#if>
+        </tbody>
+    </table>
+    </div>
+</div>
+<tfoot>
+<#include "/base/page_util.ftl">
+</tfoot>
+<script type="text/javascript">
+    /*
+        参数解释:
+        title	标题
+        url		请求的url
+        id		需要操作的数据id
+        w		弹出层宽度(缺省调默认值)
+        h		弹出层高度(缺省调默认值)
+    */
+
+
+    /*子页面添加完信息后回显添加结果是否成功*/
+    function admin_result(str,num) {
+        layer.msg(str,{icon:num,time:1000});
+    }
+
+    function edit_process(url) {
+        window.location.href = url
+    }
+
+    /*管理员-详情*/
+    function admin_add_filter(url){
+        window.location.href= url;
+    }
+    /*管理员-删除*/
+    function admin_del(obj,id){
+        layer.confirm('确认要删除吗?',function(index){
+            $.ajax({
+                type: 'POST',
+                url: '',
+                dataType: 'json',
+                success: function(data){
+                    $(obj).parents("tr").remove();
+                    layer.msg('已删除!',{icon:1,time:1000});
+                },
+                error:function(data) {
+                    console.log(data.msg);
+                },
+            });
+        });
+    }
+
+    /*管理员-编辑*/
+    function admin_edit(title,url,id,w,h){
+        layer_show(title,url,w,h);
+    }
+    /* 录入FAQ */
+    function add_FAQ(menuId,type) {
+        window.location.href= root_path + "/admin/faq/_add_FAQ?menuId="+menuId+"&menuType="+type;
+       // layer_show("增加FAQ", root_path + "/admin/faq/_add_FAQ?menuId="+menuId+"&menuType="+type);
+    }
+
+    /* 修改二级菜单状态 */
+    function update_FAQState(detaId) {
+        layer.confirm('确认要停用吗?',function(index){
+            $.post(root_path + "/admin/faq/updat_FAQState",{detaId:detaId}, function(result){
+                if (result.returnCode != 200 || result.returnCode != 200) {
+                    layer.msg('修改失败,请重试!',{icon: 5,time:3000});
+                } else {
+                    layer.msg('修改成功!',{icon: 1,time:2000}, function () {
+                        // 关闭当前页面,并刷新父级页面
+                        window.location.reload();
+                    });
+                }
+            });
+        });
+    }
+
+</script>
+<script>
+    /**
+     * 跳转到添加员工页面
+     */
+    function toAddEmployee(){
+        window.location.href= "${path}/admin/employee/to_save_employee";
+    }
+
+    /**
+     *跳转到编辑页面
+     * @param employee
+     */
+    function admin_update_employee(employeeId) {
+        window.location.href= "${path}/admin/employee/to_update_employee?employeeId="+employeeId;
+    }
+
+    /**
+     * 删除员工
+     * @param employeeId
+     */
+    function admin_del_employee(employeeId) {
+        window.location.href= "${path}/admin/employee/delete_employee?employeeId="+employeeId;
+    }
+</script>
+</body>
+</html>

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/pts/employee/employee_list.ftl

@@ -37,8 +37,8 @@
             <input type="text" class="my-input"  style="width:150px" value="${employeeTel!}" placeholder="员工电话" id="employeeTel" name="employeeTel">
             <select class="my-select" name="employeeState" style="height: 30px;width: 150px">
                 <option value ="">全部</option>
-                <option value ="1" <#if employeeState??><#if employeeState == "1">selected="selected"</#if></#if>>在职</option>
-                <option value ="0" <#if employeeState??><#if employeeState == "0">selected="selected"</#if></#if>>离职</option>
+                <option value ="1" <#if employeeState??><#if employeeState == 1>selected="selected"</#if></#if>>在职</option>
+                <option value ="0" <#if employeeState??><#if employeeState == 0>selected="selected"</#if></#if>>离职</option>
             </select>
             <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
         </form>

+ 199 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/pts/machinePtras/ptras_add.ftl

@@ -0,0 +1,199 @@
+<!--_meta 作为公共模版分离出去-->
+<!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" />
+<link rel="Bookmark" href="/favicon.ico" >
+<link rel="Shortcut Icon" href="/favicon.ico" />
+<#include "/base/add_base.ftl">
+    <link href="${path }/common/kingedit/themes/default/default.css" rel="stylesheet" type="text/css" />
+<title>添加机器零件</title>
+</head>
+<body>
+<article class="page-container">
+	<form action="" method="post" class="form form-horizontal" id="form-member-add">
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">所属机器:</label>
+            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
+				<select class="select" size="1" name="city">
+					<option value="1">净水机</option>
+					<option value="2">冲奶机</option>
+				</select>
+				</span> </div>
+        </div>
+
+		<div class="row cl">
+			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件编号:</label>
+			<div class="formControls col-xs-8 col-sm-9">
+				<input type="text" class="input-text" value=""  id="username" name="username" placeholder="请输入零件编号,支持数字、字母组合">
+			</div>
+		</div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件名称:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value=""  id="username" name="username" placeholder="请输入1-30位的名称,支持中文、字母、数字">
+            </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">供应商:</label>
+            <div class="formControls col-xs-8 col-sm-9"> <span class="select-box">
+				<select class="select" size="1" name="city">
+					<option value="1">刘志伟</option>
+					<option value="2">汪小明</option>
+				</select>
+				</span> </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">零件图片:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <img alt="介绍图" src="/common/images/pts/addparts.jpg" id="partsImg" width="90" height="80">
+                <input type="hidden" id="insertfilePartsImg" name="insertfilePartsImg" value=""/>
+			</div>
+        </div>
+
+		<div class="row cl">
+			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件状态:</label>
+			<div class="formControls col-xs-8 col-sm-9 skin-minimal">
+				<div class="radio-box">
+					<input name="sex" type="radio" id="sex-1" checked>
+					<label for="sex-1">正在使用</label>
+				</div>
+				<div class="radio-box">
+					<input type="radio" id="sex-2" name="sex">
+					<label for="sex-2">已取消</label>
+				</div>
+			</div>
+		</div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件成本:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value=""  id="username" name="username" placeholder="请输入零件成本,单位为元">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件重量:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value=""  id="username" name="username" placeholder="请输入零件重量,单位为克">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>零件材料:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value="" id="username" name="username" placeholder="请输入1-30位的材料,支持中文、字母、数字">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>材料类型:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value="" id="username" name="username" placeholder="请输入材料的类型">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>MBSC:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value=""  id="username" name="username" placeholder="请输入MBSC">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>规格:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value="" id="username" name="username" placeholder="请输入材料规格(允许为空)">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">备注:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <textarea name="beizhu" cols="" rows="" class="textarea"  placeholder="请输入零件的备注(允许为空)" onKeyUp="$.Huitextarealength(this,100)"></textarea>
+                <p class="textarea-numberbar"><em class="textarea-length">0</em>/100</p>
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"></label>
+        	<span class="c-red">*提示</span><span>:新增的零件,如果在机器生产有使用,请更新Bom单。</span>
+        </div>
+		<div class="row cl">
+			<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
+				<input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+			</div>
+		</div>
+	</form>
+</article>
+<script type="text/javascript" src="${path}/common/kingedit/kindeditor.js"></script>
+<script type="text/javascript" src="${path}/common/kingedit/lang/zh_CN.js"></script>
+<script type="text/javascript">
+
+    KindEditor.ready(function(K) {
+        var editor = K.editor({
+            fileManagerJson : '${path}/common/kingedit/jsp/file_manager_json.jsp',
+            uploadJson : '${path}/common/kingedit/jsp/upload_json.jsp',
+            allowFileManager : true
+        });
+        K('#partsImg').click(function() {
+            var imgid = $(this).attr("id");//获取当前ID
+            editor.loadPlugin('image', function() {
+                editor.plugin.imageDialog({
+                    showRemote : false,
+                    imageUrl : K('#insertfilePartsImg').val(),
+                    clickFn : function(url, title, width, height, border, align) {
+                        K('#partsImg').attr("src",url);
+                        K('#insertfilePartsImg').val(url);
+                        editor.hideDialog();
+                        return false;
+                    }
+                });
+            });
+        });
+    });
+
+        $(function(){
+	$('.skin-minimal input').iCheck({
+		checkboxClass: 'icheckbox-blue',
+		radioClass: 'iradio-blue',
+		increaseArea: '20%'
+	});
+	
+	$("#form-member-add").validate({
+		rules:{
+			username:{
+				required:true,
+				minlength:2,
+				maxlength:16
+			},
+			sex:{
+				required:true,
+			},
+			mobile:{
+				required:true,
+				isMobile:true,
+			},
+			email:{
+				required:true,
+				email:true,
+			},
+			uploadfile:{
+				required:true,
+			},
+			
+		},
+		onkeyup:false,
+		focusCleanup:true,
+		success:"valid",
+		submitHandler:function(form){
+			//$(form).ajaxSubmit();
+			var index = parent.layer.getFrameIndex(window.name);
+			//parent.$('.btn-refresh').click();
+			parent.layer.close(index);
+		}
+	});
+});
+</script> 
+<!--/请在上方写此页面业务相关的脚本-->
+</body>
+</html>

+ 12 - 3
watero-rst-web/src/main/webapp/WEB-INF/views/pts/produce/update_produce.ftl

@@ -97,11 +97,13 @@
                 </#list>
             </ul>
 
-
             <div style="clear: both;"></div>
             <div style="padding-top: 15px;"><button type="button" class="my-btn-edit" onclick="addProcess(this)">增加节点</button></div>
+
+            <div style="color: red; margin: 10px;">*说明:如果机器正在生产,请不要修改,待生成完成以后修改;如果信息有误,请联系深圳技术部协助处理。</div>
             <div>
-                <button type="reset" class="my-btn-reset" >重置</button><button type="submit" class="my-btn-submit">确认提交</button>
+
+                <button type="submit" class="my-btn-submit">确认提交</button>
             </div>
         </div>
 
@@ -163,7 +165,14 @@
             if(!flag)
                 return false;
 
-            ajaxReq();
+            layer.confirm('您确定要修改产品信息吗?', {
+                btn: ['确定','取消'] //按钮
+            }, function(){
+                ajaxReq();
+            }, function(){
+                layer.closeAll('dialog');
+               return false;
+            });
             return false;
         })
     })

BIN
watero-rst-web/src/main/webapp/common/images/pts/addparts.jpg


BIN
watero-rst-web/src/main/webapp/common/images/uploadimages/addparts.jpg


+ 1 - 0
watero-rst-web/src/main/webapp/common/kingedit/jsp/file_manager_json.jsp

@@ -2,6 +2,7 @@
 <%@ page import="java.util.*,java.io.*" %>
 <%@ page import="java.text.SimpleDateFormat" %>
 <%@ page import="org.json.simple.*" %>
+<%@ page import="com.alibaba.fastjson.JSONObject" %>
 <%
 //根目录路径,可以指定绝对路径,比如 /var/www/attached/
 

+ 2 - 0
watero-rst-web/src/main/webapp/common/kingedit/jsp/upload_json.jsp

@@ -7,6 +7,7 @@
 <%@ page import="org.apache.commons.fileupload.disk.*" %>
 <%@ page import="org.apache.commons.fileupload.servlet.*" %>
 <%@ page import="org.json.simple.*" %>
+<%@ page import="com.alibaba.fastjson.JSONObject" %>
 <%
 String saveServerPath = "/common/images/uploadimages/";
 // hostname
@@ -33,6 +34,7 @@ if(!ServletFileUpload.isMultipartContent(request)){
 //检查目录
 File uploadDir = new File(savePath);
 if(!uploadDir.isDirectory()){
+	out.println(getError(savePath));
 	out.println(getError("上传目录不存在。"));
 	return;
 }

+ 1 - 1
wateroPF-wechat-web/src/main/resources/platform.properties

@@ -172,7 +172,7 @@ productId=29439
 # charset
 charset=UTF-8
 # partner
-partner=1321590501
+partner=1240220902
 # keystore_password
 KEYSTORE_PASSWORD=124022090
 # keystore_file