Browse Source

rst-客诉-开发

wangxiaoming 7 years ago
parent
commit
1ee55b3255

+ 4 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java

@@ -0,0 +1,4 @@
+package com.iamberry.rst.core.cm;
+
+public class CustomerInfo {
+}

+ 837 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -0,0 +1,837 @@
+package com.iamberry.rst.controllers.cm;
+
+import com.iamberry.rst.core.page.PageRequest;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.*;
+import com.iamberry.rst.core.tools.QRCJson;
+import com.iamberry.rst.core.tools.WeixinUtil;
+import com.iamberry.rst.faces.pts.*;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.ResultInfo;
+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.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.util.*;
+
+/**
+ * Created by LJK on 2017/8/29.
+ */
+@Controller
+@RequestMapping("/admin/machine")
+public class AdminCustomerController {
+
+    @Autowired
+    private MachineService machineService;
+
+    @Autowired
+    private ProduceService produceService;
+
+    @Autowired
+    private PtsBatchService ptsBatchService;
+
+    @Autowired
+    private MachineVersionService machineVersionService;
+
+    @Autowired
+    private PtsBomService ptsBomService;
+
+    @Autowired
+    private MachinePartsService machinePartsService;
+
+    @Autowired
+    private PtsSalesCompanyService ptsSalesCompanyService;
+
+    /**
+     * 查询机器列表
+     *
+     * @param pageSize
+     * @param pageNO
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @RequiresPermissions("machine:select_all:machine")
+    @RequestMapping("/_machine_list")
+    public ModelAndView listOrder(
+            @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+            @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+            @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
+            PtsMachine ptsMachine) {
+        ModelAndView mv = new ModelAndView("pts/machine/machine_list");
+        StringBuilder sb = new StringBuilder("/admin/machine/_machine_list?pageSize=" + pageSize);
+
+        if (StringUtils.isNotEmpty(ptsMachine.getMachineBarcode())) {
+            sb.append("&machineBarcode=");
+            sb.append(ptsMachine.getMachineBarcode());
+            mv.addObject("machineBarcode", ptsMachine.getMachineBarcode());
+        }
+        if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() != -1) {
+            sb.append("&machineIsPrint=");
+            sb.append(ptsMachine.getMachineIsPrint());
+            mv.addObject("machineIsPrint", ptsMachine.getMachineIsPrint());
+        }
+        if (ptsMachine.getMachineProcessState() != null && ptsMachine.getMachineProcessState() != -1) {
+            sb.append("&machineProcessState=");
+            sb.append(ptsMachine.getMachineProcessState());
+            mv.addObject("machineProcessState", ptsMachine.getMachineProcessState());
+        }
+
+        PageRequest<PtsMachine> pageRequest = new PageRequest<PtsMachine>(ptsMachine, pageNO, pageSize, pageTotal == null);
+        PagedResult<PtsMachine> pagedResult = machineService.listMachine(pageRequest);
+
+        long total = 0;
+        if (pageTotal == null) {
+            total = pagedResult.getPages();
+        } else {
+            total = pageTotal;
+            pagedResult.setPages(total);
+        }
+        //查询最新一条机器id
+        Integer machineId = machineService.maxMachineId();
+        mv.addObject("machineId", machineId == null ? 0 : machineId);
+        sb.append("&pageTotal=").append(total).append("&pageNO=");
+        mv.addObject("page", pagedResult);
+        mv.addObject("url", sb.toString());
+        return mv;
+    }
+
+    /**
+     * 查询最新机器信息
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("machine:latest_all:machine")
+    @ResponseBody
+    @RequestMapping("/_LatestMachine_list")
+    public List<PtsMachine> listLatestMachine(HttpServletRequest request) {
+        String machineId = request.getParameter("machineId");
+        if (machineId == null || machineId.equals("")) {
+            return null;
+        }
+        return machineService.listLatestMachine(Integer.valueOf(machineId));
+    }
+
+    /**
+     * 修改机器打印状态为已打印
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("machine:update_print:machine")
+    @ResponseBody
+    @RequestMapping("/_update_print")
+    public Integer updateMachinPrintState(HttpServletRequest request) {
+        String machineBarcode = request.getParameter("machineBarcode");
+        if (machineBarcode == null) {
+            return null;
+        }
+        PtsMachine ptsMachine = new PtsMachine();
+        ptsMachine.setMachineBarcode(machineBarcode);
+        ptsMachine.setMachineIsPrint(2);
+        return machineService.updateMachine(ptsMachine);
+    }
+
+    /**
+     * 查询机器打印列表
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @RequiresPermissions("machine:select_all:machine")
+    @RequestMapping("/_machine_print_list")
+    public ModelAndView listPrintMachine(HttpServletRequest request, PtsMachine ptsMachine,
+                                         @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/machine/machine_print_List");
+        mv.addObject("machineIsPrint", ptsMachine.getMachineIsPrint() == null ? "1" : String.valueOf(ptsMachine.getMachineIsPrint()));
+
+        StringBuilder sb = new StringBuilder("/admin/machine/_machine_print_list?pageSize=" + pageSize);
+
+        if (ptsMachine == null || ptsMachine.getMachineIsPrint() == null || ptsMachine.getMachineIsPrint() == 1) { //未打印
+            List<PtsMachine> machineList = machineService.listPrintOrder(ptsMachine);
+            mv.addObject("machineList", machineList);
+        } else {  //已打印
+            PagedResult<PtsMachine> pagedResult = machineService.getPrintOrderList(pageNO, pageSize, ptsMachine, totalNum == 0);
+            if (totalNum != 0) {
+                pagedResult.setTotal(totalNum);
+                pagedResult.setPages((int) Math.ceil((double) totalNum / pageSize));
+            }
+            sb.append("&machineIsPrint=");
+            if (ptsMachine.getMachineIsPrint() != null && ptsMachine.getMachineIsPrint() == 2) {
+                sb.append(ptsMachine.getMachineIsPrint());
+            }
+            sb.append("&totalNum=");
+            sb.append(totalNum == 0 ? pagedResult.getTotal() : totalNum);
+            sb.append("&pageNO=");
+            mv.addObject("page", pagedResult);
+            mv.addObject("url", sb.toString());
+        }
+        //查询最新一条机器id
+        Integer machineId = machineService.maxMachineId();
+        mv.addObject("machineId", machineId);
+        return mv;
+    }
+
+    /**
+     * 查询机器关联的产品信息
+     *
+     * @param machineId
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:select_all:machine")
+    @RequestMapping("/_getProduce_print")
+    public Produce setProduceList(Integer machineId) {
+        Produce produce = machineService.getProduceByMachineId(machineId);
+        return produce;
+    }
+
+    /**
+     * 打印列表查询所有机器
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:select_all:machine")
+    @RequestMapping("/machine_print_list")
+    public List<PtsMachine> selectPrintMachine(PtsMachine ptsMachine) {
+        return machineService.listPrintOrder(ptsMachine);
+    }
+
+    /**
+     * 查询机器生成流程
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @RequiresPermissions("machine:logs_all:machine")
+    @RequestMapping("/_machine_logs_list")
+    public ModelAndView listLogsMachine(Integer machineId) {
+        if (machineId == null || machineId < 0) {
+            return null;
+        }
+        PtsMachine ptsMachine = machineService.getMachine(machineId);
+        ModelAndView mv = new ModelAndView("pts/machine/machine_particulars");
+        List<PtsMachineLogs> machineLogsList = machineService.listMachineLogs(machineId);
+
+        PtsBom ptsBom = new PtsBom();
+        if (ptsMachine.getMachineBomId() != null && ptsMachine.getMachineBomId() != 0) {
+            //获取bom单
+            ptsBom.setBomId(ptsMachine.getMachineBomId());
+            ptsBom = ptsBomService.getPtsBomDetails(ptsBom);
+        }
+
+        PtsBatch ptsBatch = new PtsBatch();
+        if (ptsMachine.getMachineBatchId() != null && ptsMachine.getMachineBatchId() != 0) {
+            ptsBatch.setBatchId(ptsMachine.getMachineBatchId());
+            ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
+        }
+
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        if (ptsMachine.getMachineSoftwareVersion() != null && ptsMachine.getMachineSoftwareVersion() != 0) {
+            ptsMachineVersion.setMachineVersionId(ptsMachine.getMachineSoftwareVersion());
+            ptsMachineVersion = machineVersionService.getMachineVersion(ptsMachineVersion);
+        }
+
+        Produce produce = new Produce();
+        if (ptsMachineVersion != null && ptsMachineVersion.getProduceId() != null) {
+            produce.setProduceId(ptsBatch.getProduceId());
+            produce = produceService.getProduce(produce);
+        }
+
+        //获取销售公司
+        PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
+        if(ptsMachine != null && ptsMachine.getMachineSalesState() == 1 && ptsMachine.getMachineSalesCompanyId() != null){
+            ptsSalesCompany.setSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
+            ptsSalesCompany = ptsSalesCompanyService.getPtsSalesCompany(ptsSalesCompany);
+        }
+
+        mv.addObject("ptsSalesCompany", ptsSalesCompany);
+        mv.addObject("produce", produce);
+        mv.addObject("ptsMachineVersion", ptsMachineVersion);
+        mv.addObject("ptsBatch", ptsBatch);
+        mv.addObject("ptsBom", ptsBom);
+        mv.addObject("machineLogsList", machineLogsList);
+        mv.addObject("ptsMachine", ptsMachine);
+        return mv;
+    }
+
+    /**
+     * 批量修改机器打印状态为已打印
+     *
+     * @param request
+     * @return
+     */
+    @RequiresPermissions("machine:update_print:machine")
+    @ResponseBody
+    @RequestMapping("/_batchUpdate_print")
+    public Integer batchUpdateMachineIsPring(HttpServletRequest request) {
+        /*String[] listId = request.getParameterValues("machineBarcodes");*/
+        String listId = request.getParameter("machineBarcodes");
+        if (listId == null) {
+            return 0;
+        }
+        String s = new String(listId);
+        String[] a = s.split(",");
+        return machineService.batchUpdateMachineIsPring(a);
+    }
+
+    /**
+     * 查询机器生产&异常统计
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @RequiresPermissions("machine:abnormality:statistics")
+    @RequestMapping("/_produced_abnormality_statistics")
+    public ModelAndView producedAbnormalityStatistics(HttpServletRequest request, PtsMachine ptsMachine) {
+        ModelAndView mv = new ModelAndView("pts/machine/producedAbnormalityStatistics");
+        String produceId = request.getParameter("produceId");//1.产品id
+        Produce produce = new Produce();
+        if (produceId == null || produceId.equals("")) {
+            produce = produceService.getProduceByOne();//默认为第一个产品
+
+        } else {
+            produce.setProduceId(Integer.valueOf(produceId));
+            produce = produceService.getProduce(produce);
+        }
+        mv.addObject("produceId", produce.getProduceId());
+        //根据产品id查询产品类型
+        PtsMachineStatistics ptsMachineStatistics = new PtsMachineStatistics();
+        Calendar date = Calendar.getInstance();
+        String year = String.valueOf(date.get(Calendar.YEAR));//年
+        ptsMachineStatistics.setYear(year);
+        ptsMachineStatistics.setMachineType(produce.getProduceType());
+        //查询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) + "]");
+        }else{
+            mv.addObject("years", "[]");
+        }
+
+        //查询最近七天生产机器
+        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) + "]");
+        }else{
+            mv.addObject("days", "[]");
+            mv.addObject("monthDay", "[]");
+        }
+
+        /*机器总数及流程异常数*/
+        PtsMachineStatistics numbers = machineService.flowAbnormality(ptsMachineStatistics);
+        /*机器总数*/
+        mv.addObject("machineNum", numbers.getMachineCount());
+        double percentage = 0.0;
+        /*流程异常百分比*/
+        if (numbers.getMachineAbnormality() == null) {
+            /*机器异常总数*/
+            mv.addObject("machineAbnormality", 0);
+        } else {
+            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(produce.getProduceType());
+        List<ProduceProcess> processList = produceService.listProduceProcess(produceProcess);
+        mv.addObject("processList", processList);
+        //查询第一条的工序值 默认选择第一条工序
+        if (processList.size() > 0) {
+            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) + "]");
+            }
+        }else{
+            mv.addObject("nodeString", "[]");
+            mv.addObject("desString", "[]");
+        }
+        //查询所有产品
+        List<Produce> list = produceService.getProduceList();
+        mv.addObject("produceList", list);
+        return mv;
+    }
+
+    /**
+     * 根据工序id统计选项数量
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @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;
+    }
+
+    private String productNfcId = "1390730000";//默认nfcId
+
+    /**
+     * 进入批量生产机器页面
+     *
+     * @return
+     * @author LJK
+     * @date 2017年8月31日16:08:15
+     */
+    @RequiresPermissions("machine:add:batch")
+    @RequestMapping("/_to_add_batch")
+    public ModelAndView toAddMachineBatch() {
+        ModelAndView mv = new ModelAndView("pts/machine/batchAddMachine");
+        List<Produce> list = produceService.getProduceList();
+        mv.addObject("produceList", list);
+        return mv;
+    }
+
+    @RequiresPermissions("machine:add:batch")
+    @ResponseBody
+    @RequestMapping("/_add_machine_batch")
+    public ResponseJson addMachineBatch(HttpServletRequest request) {
+        ResponseJson rj = new ResponseJson();
+        String produceId = request.getParameter("produceId");//产品ID
+        String machineSoftwareVersion = request.getParameter("machineSoftwareVersion");
+        String number = request.getParameter("number");
+        if (produceId == null || produceId.equals("") ||
+                machineSoftwareVersion == null || machineSoftwareVersion.equals("") ||
+                number == null || number.equals("")) {
+            rj.setReturnCode(500);
+            return rj;
+        }
+        Produce produce = new Produce();
+        produce.setProduceId(Integer.valueOf(produceId));
+        produce = produceService.getProduce(produce);    //根据产品获取产品信息
+
+        ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
+        //生成条形码前缀
+        String berQrcode = generationBarCode(produce);
+        //获取当前月机器总数
+        java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
+        Date currTime = new Date();
+        String curTime = formatter.format(currTime);
+        Integer machineNumber = machineService.selectMonthCount(curTime);
+        String num = null;
+        for (int i = 0; i < Integer.valueOf(number); i++) {
+            machineNumber = machineNumber + i;
+            switch (String.valueOf(machineNumber + 1).length()) {
+                case 0:
+                    num = "0001";
+                    break;
+                case 1:
+                    num = "000" + String.valueOf(machineNumber);
+                    break;
+                case 2:
+                    num = "00" + String.valueOf(machineNumber);
+                    break;
+                case 3:
+                    num = "0" + String.valueOf(machineNumber);
+                    break;
+                case 4:
+                    num = String.valueOf(machineNumber);
+                    break;
+            }
+            String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode);
+            QRCJson qrc = WeixinUtil.createQrcode(json);
+            PtsMachine ptsMachine = new PtsMachine();
+            ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
+            ptsMachine.setMachineBarcode(berQrcode + num);//条形码
+            ptsMachine.setMachineStatus(1);//机器状态
+            ptsMachine.setMachineProducedTime(new Date());//生产时间
+            ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
+            ptsMachine.setMachineCompoundImg("合成的图片url");
+            ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
+            ptsMachine.setMachineCreateTime(new Date());//创建时间
+            ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
+            ptsMachine.setMachineNfcId(productNfcId);
+            ptsMachine.setMachineHardwareVersion(Integer.valueOf(machineSoftwareVersion));
+            ptsMachine.setMachineSoftwareVersion(Integer.valueOf(machineSoftwareVersion));
+            ptsMachine.setMachineProduceId(Integer.valueOf(produceId));
+            ptsMachine.setMachineIsRetreading(2);
+            ptsList.add(ptsMachine);
+        }
+        Integer msg = machineService.addMahineBatch(ptsList);
+        if (msg > 0) {
+            rj.setReturnCode(200);
+        } else {
+            rj.setReturnCode(500);
+        }
+        return rj;
+    }
+
+
+    private String productModel = "1X";//产品型号
+    private String productFeatures = "A";//产品特性
+    private String softwareVersion = "30";//软件版本
+
+    //生成条形码
+    public String generationBarCode(Produce produce) {
+        Calendar cal = Calendar.getInstance();
+        int year = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH) + 1;
+
+        String months = String.valueOf(month);
+        if (month < 10) {
+            months = "0" + months;
+        }
+        productModel = produce.getProduceModel();
+        productFeatures = produce.getProduceFeature();
+        //拼接
+        String barcode = productModel + productFeatures + softwareVersion + String.valueOf(year).substring(2, 4) + months;
+        return barcode;
+    }
+
+    /**
+     * 进入添加翻新机界面
+     **/
+    @RequiresPermissions("machine:add:batch")
+    @RequestMapping("/_to_add_renovation")
+    public ModelAndView toAddRenovationMachine() {
+        ModelAndView mv = new ModelAndView("pts/machine/addRenovationMachine");
+        //查询所有状态为可用的批次
+        List<PtsBatch> listptsBatch = ptsBatchService.listPtsBatchByStatus();
+        mv.addObject("listptsBatch", listptsBatch);
+        //查询所有软件版本
+        PtsMachineVersion ptsMachineVersion = new PtsMachineVersion();
+        ptsMachineVersion.setMachineVersionType(1);
+        List<PtsMachineVersion> ListVersion = machineVersionService.listMachineVersion(ptsMachineVersion);
+        mv.addObject("listVersion", ListVersion);
+        //根据第一个批次查询所有bom
+        if (listptsBatch.size() > 0) {
+            PtsBom ptsBom = new PtsBom();
+            ptsBom.setBomId(listptsBatch.get(0).getBomId());
+            List<PtsBom> listBom = ptsBomService.listBom(ptsBom);
+            mv.addObject("listBom", listBom);
+        }
+        return mv;
+    }
+
+    /**
+     * 根据产品id获取所有bom
+     **/
+    @ResponseBody
+    @RequiresPermissions("machine:add:batch")
+    @RequestMapping("/select_bom")
+    public ResponseJson selectBatchByProduceId(HttpServletRequest request, Integer batchId) {
+        ResponseJson rj = new ResponseJson();
+        if (batchId == null || batchId.equals("")) {
+            rj.setReturnCode(500);
+            return rj;
+        }
+        PtsBatch ptsBatch = new PtsBatch();
+        ptsBatch.setBatchId(batchId);
+        ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
+
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setBomId(ptsBatch.getBomId());
+        List<PtsBom> listBom = ptsBomService.listBom(ptsBom);
+        rj.addResponseKeyValue("listBom", listBom);
+        rj.setReturnCode(200);
+        return rj;
+    }
+
+    /**
+     * 添加翻新机
+     **/
+    @ResponseBody
+    @RequiresPermissions("machine:add:batch")
+    @RequestMapping("/add_renovationMachine")
+    public ResponseJson addRenovationMachine(HttpServletRequest request, Integer batchId, Integer versionId, Integer bomId, Integer number,Integer isRefurbishment,String machineLine) {
+        ResponseJson rj = new ResponseJson();
+        if (batchId == null || versionId == null || bomId == null || isRefurbishment == null || machineLine == null) {
+            rj.setReturnCode(500);
+            return rj;
+        }
+        PtsBatch ptsBatch = new PtsBatch();
+        ptsBatch.setBatchId(batchId);
+        ptsBatch = ptsBatchService.getPtsBatch(ptsBatch);
+        Produce produce = new Produce();
+        produce.setProduceId(ptsBatch.getProduceId());
+        produce = produceService.getProduce(produce);
+
+        PtsBom ptsBom = new PtsBom();
+        ptsBom.setBomId(bomId);
+        ptsBom = ptsBomService.getPtsBom(ptsBom);
+        if (number == null || number < 1) {
+            number = ptsBatch.getBatchQuantity();
+        }
+        ArrayList<PtsMachine> ptsList = new ArrayList<PtsMachine>();
+        //生成条形码前缀
+        String berQrcode = generationBarCode(produce);
+        //获取当前月机器总数
+        java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM");
+        Date currTime = new Date();
+        String curTime = formatter.format(currTime);
+        Integer machineNumber = machineService.selectMonthCount(curTime);
+        String num = null;
+        for (int i = 0; i < number; i++) {
+            machineNumber++;
+            switch (String.valueOf(machineNumber).length()) {
+                case 0:
+                    num = "0001";
+                    break;
+                case 1:
+                    num = "000" + String.valueOf(machineNumber);
+                    break;
+                case 2:
+                    num = "00" + String.valueOf(machineNumber);
+                    break;
+                case 3:
+                    num = "0" + String.valueOf(machineNumber);
+                    break;
+                case 4:
+                    num = String.valueOf(machineNumber);
+                    break;
+            }
+            String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix + berQrcode);
+            QRCJson qrc = WeixinUtil.createQrcode(json);
+            PtsMachine ptsMachine = new PtsMachine();
+            ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
+            ptsMachine.setMachineBarcode(berQrcode + num);//条形码
+            ptsMachine.setMachineStatus(1);//机器状态
+            ptsMachine.setMachineProducedTime(new Date());//生产时间
+            ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
+            ptsMachine.setMachineCompoundImg("合成的图片url");
+            ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
+            ptsMachine.setMachineCreateTime(new Date());//创建时间
+            ptsMachine.setMachineProduceType(produce.getProduceType());//产品类型
+            ptsMachine.setMachineNfcId(productNfcId);
+            //ptsMachine.setMachineHardwareVersion(ptsBom.getBomId());
+            ptsMachine.setMachineSoftwareVersion(ptsBatch.getBatchSoftwareVersionId());
+            ptsMachine.setMachineProduceId(produce.getProduceId());
+            ptsMachine.setMachineIsRetreading(isRefurbishment);
+            ptsMachine.setMachineBatchId(batchId);
+            ptsMachine.setMachineBomId(bomId);
+            ptsMachine.setMachineLine(machineLine);
+            ptsList.add(ptsMachine);
+        }
+
+        Integer msg = machineService.addMahineBatch(ptsList);
+        if (msg > 0) {
+            rj.setReturnCode(200);
+        } else {
+            rj.setReturnCode(500);
+        }
+        return rj;
+    }
+
+    /**
+     * 出库页面获取
+     **/
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/to_delivery")
+    public ModelAndView toDelivery(HttpServletRequest request) {
+        ModelAndView modelAndView = new ModelAndView("wap/pts/machine_delivery");
+        return modelAndView;
+    }
+
+
+    /**
+     * 出库页面获取销售公司集合
+     **/
+    @ResponseBody
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/list_delivery")
+    public ResponseJson listDelivery(HttpServletRequest request) {
+        PtsSalesCompany ptsSalesCompany = new PtsSalesCompany();
+        List<PtsSalesCompany> ptsSalesCompanyList = ptsSalesCompanyService.listPtsSalesCompany(ptsSalesCompany);
+
+        if(ptsSalesCompanyList == null || ptsSalesCompanyList.size() < 1){
+            ResponseJson rj = new ResponseJson(500, "未查询出销售公司,请到后台添加销售公司信息", 500);
+            rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
+            return rj;
+        }
+        ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+        rj.addResponseKeyValue("ptsSalesCompanyList", ptsSalesCompanyList);
+        return rj;
+    }
+
+
+    /**
+     * 出库录入
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/machine_delivery")
+    public ResponseJson machineDelivery(HttpServletRequest request, PtsMachine ptsMachine) {
+        if (ptsMachine == null || ptsMachine.getMachineBarcode() == null || ptsMachine.getMachineSalesDate() == null || ptsMachine.getMachineSalesCompanyId() == null) {
+            ResponseJson rj = new ResponseJson(500, "ERROR", 500);
+            rj.setResultMsg("信息不全");
+            return rj;
+        }
+        PtsMachine machine = new PtsMachine();
+        machine.setMachineBarcode(ptsMachine.getMachineBarcode());
+
+        //判断机器是否已经出过库了
+        List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(machine);
+        if(listPtsMachine != null && listPtsMachine.size() > 0){
+            PtsMachine ma = listPtsMachine.get(0);
+            if(ma.getMachineSalesState() == 1){
+                ResponseJson rj = new ResponseJson(501, "ERROR", 501);
+                rj.setResultMsg("该机器已经出库了");
+                return rj;
+            }
+        }else{
+            ResponseJson rj = new ResponseJson(501, "ERROR", 501);
+            rj.setResultMsg("未查询到该机器");
+            return rj;
+        }
+        machine.setMachineSalesDate(ptsMachine.getMachineSalesDate());
+        machine.setMachineSalesCompanyId(ptsMachine.getMachineSalesCompanyId());
+        machine.setMachineSalesState(1); //设置状态为已售出
+        int flag = machineService.updateMachineSalesInfo(machine);
+        if(flag < 1){
+            ResponseJson rj = new ResponseJson(500, "ERROR", 500);
+            rj.setResultMsg("录入出库信息失败");
+            return rj;
+        }
+        ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+        rj.setResultMsg("录入出库信息成功");
+        return rj;
+    }
+
+    /**
+     * 出库列表
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/to_list_delivery")
+    public ResponseJson listDeliveryPtsMachine(HttpServletRequest request, PtsMachine ptsMachine) {
+        ptsMachine.setMachineSalesState(1);
+        List<PtsMachine> listPtsMachine = machineService.listMachineWebApp(ptsMachine);
+
+        if(listPtsMachine == null || listPtsMachine.size() <1){
+            ResponseJson rj = new ResponseJson(500, "ERROR", 500);
+            rj.setResultMsg("未查询到机器信息");
+            return rj;
+        }
+        ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+        rj.addResponseKeyValue("listPtsMachine",listPtsMachine);
+        rj.setResultMsg("");
+        return rj;
+    }
+
+    /**
+     * 今日出库台数
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/delivery_desc")
+    public ResponseJson deliveryDesc(HttpServletRequest request, PtsMachine ptsMachine) {
+        List<Map> list = new ArrayList<Map>();
+
+        //获取产品集合
+        List<Produce> produceList = produceService.getProduceList();
+        for(Produce produce : produceList){
+            Map<String,Object> map  = new HashMap<String,Object>();
+            ptsMachine.setMachineProduceId(produce.getProduceId());
+            Integer machineNumber = machineService.machineNumberWebApp(ptsMachine);
+            map.put("name",produce.getProduceName());
+            map.put("number",machineNumber);
+            list.add(map);
+        }
+
+        ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+        rj.addResponseKeyValue("machineNumber",list);
+        rj.setResultMsg("");
+        return rj;
+    }
+
+    /**
+     * 取消出库
+     */
+    @ResponseBody
+    @RequiresPermissions("machine:delivery:machine")
+    @RequestMapping("/cancel_warehouse")
+    public ResponseJson cancelWarehouse(HttpServletRequest request, PtsMachine ptsMachine) {
+        if (ptsMachine == null || ptsMachine.getMachineBarcode() == null) {
+            ResponseJson rj = new ResponseJson(500, "ERROR", 500);
+            rj.setResultMsg("取消出库操作失败");
+            return rj;
+        }
+        PtsMachine machine = new PtsMachine();
+        machine.setMachineBarcode(ptsMachine.getMachineBarcode());
+        machine.setMachineSalesDate(null);
+        machine.setMachineSalesCompanyId(null);
+        machine.setMachineSalesState(2); //设置状态为未售出
+        int flag = machineService.updateMachineSalesInfo(machine);
+        if(flag < 1){
+            ResponseJson rj = new ResponseJson(500, "ERROR", 500);
+            rj.setResultMsg("取消出库操作失败");
+            return rj;
+        }
+        ResponseJson rj = new ResponseJson(200, "SUCCESS", 200);
+        rj.setResultMsg("取消出库操作成功");
+        return rj;
+    }
+
+}
+

+ 342 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/customer_list.ftl

@@ -0,0 +1,342 @@
+<!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"/>
+<#include "/base/add_base.ftl">
+    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .add-list>li{margin: 10px 0;}
+        input[type=radio]{-webkit-appearance:none;appearance:none;background: url(/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(/common/images/pts/radio-2.png) center center no-repeat;background-size:auto 100%;width: 20px;height: 20px;margin-right: 10px;}
+    </style>
+    <title>添加Bom - Bom管理 - RST</title>
+</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>
+<article class="page-container" style="padding: 10px;width: 600px;margin: 0 auto;">
+    <form action="${path}/admin/bom/save_bom" method="post" class="form form-horizontal" id="form-bom-add">
+
+        <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"> <span class="select-box">
+				<select class="select" size="1" name="produceId" datatype="*" errormsg="请选择产品">
+                <#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>
+                <#else>
+                    <option value="">暂时没有产品,需要到生产产品页面添加产品</option>
+                </#if>
+				</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"> <span class="select-box">
+				<select class="select" size="1" name="bomId">
+				</select>
+				</span>
+            </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>Bom名称:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" value="" id="bomName" name="bomName" placeholder="请输入1-20位的名称,支持中文、字母、数字" datatype="/^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$/" errormsg="请输入1-20位的名称,支持中文、字母、数字!">
+            </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="bomVersion" name="bomVersion" placeholder="请输入1-10位的版本号" datatype="*1-10" errormsg="请输入1-10位的版本号!">
+            </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="bomRemarks" id="bomRemarks" cols="" rows="" class="textarea"
+                          placeholder="Bom单备注,最多支持100字符" 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"><span class="c-red">*</span>Bom零件清单:</label>
+            <div class="formControls col-xs-8 col-sm-9 components">
+                <input type="hidden" id="bomComponentJson" name="bomComponentJson">
+                <table class="table table-border table-bordered table-bg table-hover table-sort">
+                    <thead>
+                        <tr class="text-c">
+                            <th width="150">选择零件</th>
+                            <th width="60">零件数量</th>
+                            <th width="20">操作</th>
+                        </tr>
+                    </thead>
+                    <tbody id="componentaAll">
+
+                    </tbody>
+                </table>
+                <span id="componentsMsg" style="color: red"></span>
+            </div>
+        </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="button" value="&nbsp;&nbsp;新增零件&nbsp;&nbsp;" onclick="addComponents('#','')">
+            </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"></label>
+            <span class="c-red">*提示</span><span>:新增的Bom,需要批次选中该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">
+
+    $(function(){
+        $("#form-bom-add").Validform({
+            tiptype: function (msg, o, cssctl) {
+                if (o.type == 3) {//失败
+                    layer.msg(msg, {icon: 5, time: 3000});
+                    $(window).scrollTop(o.obj.offset().top - 40);
+                }
+            },
+            datatype: {//自定义验证类型
+                "select": function (gets, obj, curform, regxp) {
+                    if (gets == "") {
+                        return false;
+                    } else {
+                        return true;
+                    }
+                }
+            },
+            ignoreHidden: true,
+            tipSweep: true, //若为true,则只在表单提交时验证
+            ajaxPost: true, //异步提交
+            beforeCheck: function (curform) {  //验证通过之前执行的函数
+            },
+            beforeSubmit: function (curform) {  //验证通过之后执行的函数
+                var ptsBomComponentsList =  new Array();
+                $("#componentaAll").find("tr").each(function (){
+                    var ptsBomComponents = {};
+                    ptsBomComponents.componentsId = $(this).find("[name='comName']").eq(0).val();
+                    ptsBomComponents.bomComponentsQuantity = $(this).find("[name='comNumber']").eq(0).val();
+                    ptsBomComponentsList.push(ptsBomComponents);
+                })
+                $("#bomComponentJson").val(JSON.stringify(ptsBomComponentsList));
+            },
+            callback: function (data) {//异步回调函数
+                if (data) {
+                    var index = layer.alert(data.resultMsg, function () {
+                        if (data.resultCode == 200) {
+                            location.href = "${path}/admin/bom/_bom_list";
+                        } else {
+                            layer.close(index);
+                        }
+                    });
+                }
+            }
+        });
+    })
+
+    var allComponents;  //所有零件的集合
+    var staticProduceId;  //产品id,用于判断产品更改
+    
+    $(function () {
+        /*添加页面初始化,添加一个零件选择框*/
+        addComponents("#","");
+
+        var produceId =   $("[name='produceId']").val();
+        staticProduceId = produceId;
+        getBomByProduce(produceId);
+
+        /*监听产品选择*/
+        $("[name='produceId']").change(function(){
+            var produceId = $(this).val();
+            getBomByProduce(produceId);
+
+            delComponent(0,"all");
+            addComponents("#","");
+        })
+
+        /*监听修改基础  bom单*/
+        $("[name='bomId']").change(function(){
+            var bomId = $(this).val();
+            getBom(bomId);
+        })
+    })
+    
+    /* 添加零件 */
+    function addComponents(componentsId,number) {
+        var tbody = $("#componentaAll");
+
+        var produceId = $("[name='produceId']").val();
+        if(allComponents == null || produceId != staticProduceId){ //获取零件列表
+            staticProduceId = produceId;
+            allComponents = listComponent(produceId);
+        }
+        var opHtml = '';
+        for(var i=0;i<allComponents.length;i++){
+            var components = allComponents[i];
+            var isSelect = '';
+            if(componentsId == components.componentsId){
+                isSelect = 'selected="selected"';
+            }
+            opHtml += '<option value="'+ components.componentsId +'" '+ isSelect +'>'+ components.componentsName +'('+ components.componentsNo + ')</option>';
+        }
+        var html = '<tr class="text-c"> '
+                +'<td> '
+                +'<select class="select" size="1" name="comName" style="height: 30px;" datatype="*" errormsg="请选择零件"> '
+                +''
+                + opHtml
+                +'</select> '
+                +'</td> '
+                +'<td> '
+                +'<input type="text" class="input-text" value="'+ number +'" id="" name="comNumber" placeholder="零件数量" datatype="n1-3" errormsg="零件数量只能为数字且不能超过999件!"> '
+                +'</td> '
+                +'<td> '
+                +'<a style="" href="javascript:void(0);" title="删除" onclick="delComponent(this,1)"> '
+                +'<i class="Hui-iconfont">&#xe609;</i> '
+                +'</a> '
+                +'</td> '
+                +'</tr>';
+        tbody.append(html);
+    }
+
+    /*删除零件  type=all时删除所有的零件 */
+    function delComponent(node,type) {
+        if(type == "all"){
+            $("#componentaAll").find("tr").each(function () {
+                $(this).remove();
+            })
+        }else{
+            //删除零件必须保证还有一个零件
+            var componentLength = $("#componentaAll").find("tr").length;
+            if(componentLength > 1){
+                $(node).parent().parent().remove();
+            }else{
+                layer.msg('必须要有一个零件', {icon: 5, time: 3000});
+            }
+        }
+    }
+
+    /*获取所有的零件*/
+    function  listComponent(produceId) {
+        var list = new Array();
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listComponents",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    $("#componentsMsg").html("");
+                    list = data.returnMsg.ptsComponentsList;
+                }
+                if(data.returnCode != 200 || list.length < 1){  //提示需要添加零件
+                    $("#componentsMsg").html("该产品没有对应的零件,请到零件管理添加零件");
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+        return list;
+    }
+
+    /*根据产品id,获取bom集合*/
+    function getBomByProduce(produceId){
+        $.ajax({
+            type: "POST",
+            data: {
+                produceId : produceId
+            },
+            url: "${path}/admin/bom/get_listBom",
+            async: false,
+            success: function(data){
+                var html = '<option value="">不选择</option>';
+                if (data.returnCode == 200) {
+                    var bomList = data.returnMsg.ptsBomsList;
+                    for(var i=0;i<bomList.length;i++){
+                        html += '<option value="'+ bomList[i].bomId +'">'+ bomList[i].bomName +'</option>';
+                    }
+                }
+                if(data.returnCode != 200 || data.returnMsg.ptsBomsList <1){
+                    defaultAllInput();
+                }
+                $("[name='bomId']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*获取bom信息,赋值在页面上*/
+    function getBom(bomId){
+        var bom = new Object();
+        $.ajax({
+            type: "POST",
+            data: {
+                bomId : bomId
+            },
+            url: "${path}/admin/bom/get_bom",
+            async: false,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    bom = data.returnMsg.ptsBom;
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+
+        if(bom != null && bom.bomId != null){
+            $("#bomName").val(bom.bomName);
+            $("#bomRemarks").val(bom.bomRemarks);
+            $("#bomVersion").val(bom.bomVersion);
+            delComponent(0,"all");
+            var components = bom.ptsBomComponentsList;
+            if(components != null && components.length > 0){
+                for(var i=0;i<components.length;i++){
+                    addComponents(components[i].componentsId,components[i].bomComponentsQuantity);
+                }
+            }
+        }else{
+            defaultAllInput();
+        }
+    }
+
+    /*当选择产品或者bom不选择时,都需要重置所有的输入框和表格*/
+    function defaultAllInput() {
+        $("#bomName").val("");
+        $("#bomRemarks").val("");
+        delComponent(0,"all");
+        addComponents("#","");
+    }
+</script>
+<!--/请在上方写此页面业务相关的脚本-->
+</body>
+</html>