春风项目四线(合箱线、总装线)
wujian
2024-08-03 131e8c0adbd4f56e1f7e7f877ff1b03e1683314f
fix7
已修改16个文件
316 ■■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/domain/DaParamCollection.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchCollection/controller/DaTileMatchCollectionController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/components/itemSelect/single.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/cfkb/crankshaft/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/paramCollection/index.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/passingStationCollection/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/om/productionOrde/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/service/impl/BsOrderSchedulingServiceImpl.java
@@ -145,8 +145,9 @@
        BsOrderScheduling bsOrderScheduling =  new BsOrderScheduling();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime plusDays = now.plusDays(1);
        LocalDateTime startTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.getDayOfMonth(),8,0,0);
        LocalDateTime endTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.plusDays(1).getDayOfMonth(),23,0,0);
        LocalDateTime endTime = LocalDateTime.of(now.getYear(),plusDays.getMonthValue(),plusDays.getDayOfMonth(),23,0,0);
        String s1 = startTime.format(formatter);
        String s2 = endTime.format(formatter);
        bsOrderScheduling.setStartTime(s1);
jcdm-main/src/main/java/com/jcdm/main/da/paramCollection/domain/DaParamCollection.java
@@ -42,7 +42,7 @@
    /** 总成序列号 */
    @Excel(name = "箱体编码")
    @ExcelProperty(value = "箱体编码", index = 0)
    private String sfcCode;
        private String sfcCode;
    /** 产品编号 */
    @Excel(name = "产品编号")
jcdm-main/src/main/java/com/jcdm/main/da/passingStationCollection/service/impl/DaPassingStationCollectionServiceImpl.java
@@ -229,6 +229,7 @@
            rmRepairRecord.setBoxCode(result.getSfcCode());
            rmRepairRecord.setProcessesCode(result.getLocationCode());
            rmRepairRecord.setOriginalResult(result.getOutRsSign());
            rmRepairRecord.setCreateTime(new Date());
            rmRepairRecordMapper.insertRmRepairRecord(rmRepairRecord);
            daPassingStationCollectionMapper.deleteDaPassingStationCollectionById(result.getId());
        }
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchCollection/controller/DaTileMatchCollectionController.java
@@ -146,7 +146,8 @@
        }
        String balanceSplit = "";
        String boxCodeSplit = "";
        ArrayList<String> xtList = ListUtil.toList(boxCode.split(";"));
//        ArrayList<String> xtList = ListUtil.toList(boxCode.split(";"));
        ArrayList<String> xtList = ListUtil.toList(boxCode.split(","));
        ArrayList<String> czList = ListUtil.toList(balanceCode.split(";"));
        if (CollUtil.isNotEmpty(xtList) && xtList.size()>1 &&
                CollUtil.isNotEmpty(czList) && czList.size()>3){
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/service/impl/DaTileMatchRulesServiceImpl.java
@@ -122,7 +122,8 @@
            daTileMatchRules.setScanObject2("曲轴");
            List<DaTileMatchRules> daTileMatchRulesList = this.selectDaTileMatchRulesList(daTileMatchRules);
            if (StrUtil.isNotBlank(XT) && StrUtil.isNotBlank(CZ)){
                ArrayList<String> xtList = ListUtil.toList(XT.split(";"));
//                ArrayList<String> xtList = ListUtil.toList(XT.split(";"));
                ArrayList<String> xtList = ListUtil.toList(XT.split(","));
                ArrayList<String> czList = new ArrayList<>();
                String s2 = "";
                if (CZ.contains(";")){
jcdm-main/src/main/java/com/jcdm/main/om/productionOrde/controller/OmProductionOrdeInfoController.java
@@ -7,6 +7,8 @@
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import com.jcdm.common.exception.ServiceException;
import com.jcdm.main.bs.modelNumber.domain.BsModelNumber;
import com.jcdm.main.bs.modelNumber.service.IBsModelNumberService;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
@@ -128,16 +130,16 @@
        String dateTimeRule = omProductionOrdeInfo.getDateTimeRule();
        Long[] id=omProductionOrdeInfo.getIdNums();
        OmProductionOrdeInfo ProductionOrde;
        OmProductionOrdeInfo ProductionOrde = new OmProductionOrdeInfo();
        for (int a=0;a<id.length;a++){
            ProductionOrde=omProductionOrdeInfoService.selectOmProductionOrdeInfoById(id[a]);
            Integer planQty = Math.toIntExact(ProductionOrde.getPlanQty());//计划数量
            String engineNo = "";
            if(planQty>0) {
                for (int i = 0; i < planQty; i++) {
                    engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0");
                    String engineNo = omProductionOrdeInfo.getTypeZ() + " " + dateTimeRule + StringUtils.leftPad(String.valueOf(startCode), 3, "0");
                    BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
                    bsOrderScheduling.setOrderNo(ProductionOrde.getWorkOrderNo());
                    bsOrderScheduling.setWorkingHours(String.valueOf(i+1));
                    bsOrderScheduling.setModel(ProductionOrde.getTypeZ());
                    bsOrderScheduling.setEngineNo(engineNo);
                    bsOrderScheduling.setProductionStatus("1");
@@ -203,11 +205,18 @@
    @GetMapping("/getProductionNotice")
    public AjaxResult getProductionNotice(OmProductionOrdeInfo omProductionOrdeInfo)
    {
        String factory = omProductionOrdeInfo.getWorkshopCode();
        String productionNotice = omProductionOrdeInfo.getProductionNotice();
        if (StrUtil.isBlank(productionNotice)){
            throw new ServiceException("请输入生产通知单号");
        }
        if (StrUtil.isBlank(factory)){
            throw new ServiceException("请选择工厂编号");
        }
        List<OmProductionOrdeInfo> omProductionOrdeInfos = omProductionOrdeInfoService.selectOmProductionOrdeInfoList(omProductionOrdeInfo);
        if(omProductionOrdeInfos.size() == 0){
            try {
                ReceivingServices.insertWebserviceData(productionNotice);
                ReceivingServices.insertWebserviceData(factory,productionNotice);
            } catch (Exception e) {
                return error("接收失败!请检查通知单号");
            }
jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java
@@ -263,6 +263,27 @@
                List<BsOrderScheduling> queryOrderList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderSchedulingQuery);
                if (CollUtil.isNotEmpty(queryOrderList)){
                    a = "1";
                    //如果是老车型,判断是否重复扫码
                    if (OPCElement.OP050_CODE_CHECK.equals(Node)){
                        String type = productNewFlag(SNCode);
                        if (!"280".equals(type) && !"380".equals(type)){
                            DaPassingStationCollection passCheck = new DaPassingStationCollection();
                            passCheck.setSfcCode(SNCode);
                            passCheck.setLocationCode("OP050");
                            List<DaPassingStationCollection> passCheckList = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(passCheck);
                            if (CollUtil.isNotEmpty(passCheckList)){
                                //是否返修
                                a = "5";
//                                RmRepairRecord repairRecordCheck = new RmRepairRecord();
//                                repairRecordCheck.setBoxCode(SNCode);
//                                repairRecordCheck.setProcessesCode("OP050");
//                                List<RmRepairRecord> repairCheckList = rmRepairRecordService.selectRmRepairRecordList(repairRecordCheck);
//                                if (CollUtil.isEmpty(repairCheckList)){
//
//                                }
                            }
                        }
                    }
                }else {
                    a = "4";
                }
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
@@ -1,12 +1,15 @@
package com.jcdm.main.webservice.service;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.jcdm.common.exception.ServiceException;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
import com.jcdm.main.da.opcuaconfig.init.BeanUtils;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
@@ -36,7 +39,8 @@
//    private static IOmProductionOrdeInfoService omProductionOrdeInfoService;
    private static IOmProductionOrdeInfoService omProductionOrdeInfoService = BeanUtils.getBean(IOmProductionOrdeInfoService.class);
    public static final String ProductionPlanInformationUrl = "http://podqapp.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
    public static final String ProductionPlanInformationUrl = "http://popappdb.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http%3A%2F%2Fcfmoto.com%2Fxi%2FMES";
//    public static final String ProductionPlanInformationUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
    public static void main(String[] args) throws Exception {
//        getInterfaceInformationXml(ProductionPlanInformationUrl,getProductionPlanInformationXml("A0055577"));
@@ -104,26 +108,38 @@
//        }
    }
    
    public static void insertWebserviceData(String str) {
        String result = getInterfaceInformationXml(ProductionPlanInformationUrl, getProductionPlanInformationXml(str));
    public static void insertWebserviceData(String factory,String str) {
        String result = getInterfaceInformationXml(ProductionPlanInformationUrl, getProductionPlanInformationXml(factory,str));
        String jsonStr = xmlToJSON2(result);
        Gson gson = new Gson();
        // 将json字符串转换成对象
        ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
        for (Item item : itemList.getItem()) {
            OmProductionOrdeInfo ordeInfo = new OmProductionOrdeInfo();
            ordeInfo.setProductCode(item.getPLNBEZ());
            ordeInfo.setProductName(item.getMAKTX());
            ordeInfo.setLineCode(item.getFEVOR());
            ordeInfo.setWorkOrderNo(item.getAUFNR());
            ordeInfo.setPlanQty((long) Double.parseDouble(item.getPSMNG()));
            ordeInfo.setProductionNotice(item.getZSCTZD());
            ordeInfo.setTypeZ(item.getFERTH());
            ordeInfo.setCreateUser(item.getZUSER());
            //ordeInfo.setCreateTime(item.getZDATE());
            ordeInfo.setDemandDate(item.getGSTRP());//开工日期
            omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
        if (StrUtil.isNotBlank(jsonStr)){
            if (!jsonStr.contains("[") && !jsonStr.contains("]")){
                StringBuilder stringBuilder = new StringBuilder(jsonStr);
                stringBuilder.insert(8,"[");
                stringBuilder.insert(jsonStr.length(),"]");
                jsonStr = stringBuilder.toString();
            }
            Gson gson = new Gson();
            // 将json字符串转换成对象
            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
            for (Item item : itemList.getItem()) {
                OmProductionOrdeInfo ordeInfo = new OmProductionOrdeInfo();
                ordeInfo.setWorkshopCode(item.getWERKS());
                ordeInfo.setProductCode(item.getPLNBEZ());
                ordeInfo.setProductName(item.getMAKTX());
                ordeInfo.setLineCode(item.getFEVOR());
                ordeInfo.setWorkOrderNo(item.getAUFNR());
                ordeInfo.setPlanQty((long) Double.parseDouble(item.getPSMNG()));
                ordeInfo.setProductionNotice(item.getZSCTZD());
                ordeInfo.setTypeZ(item.getFERTH());
                ordeInfo.setCreateUser(item.getZUSER());
                //ordeInfo.setCreateTime(item.getZDATE());
                ordeInfo.setDemandDate(item.getGSTRP());//开工日期
                omProductionOrdeInfoService.insertOmProductionOrdeInfo(ordeInfo);
            }
        } else {
            throw new ServiceException("未接收到数据,请检查");
        }
    }
    public static String getInterfaceInformationXml(String url,String xml){
@@ -177,15 +193,15 @@
        return "接口调用错误";
    }
    public static String getProductionPlanInformationXml(String str){
    public static String getProductionPlanInformationXml(String factory,String planNo){
        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
                "   <soapenv:Header/>\n" +
                "   <soapenv:Body>\n" +
                "      <urn:ZPP_CF_MES_005>\n" +
                "         <!--Optional:-->\n" +
                "         <IV_WERKS>1000</IV_WERKS>\n" +
                "         <IV_WERKS>"+factory+"</IV_WERKS>\n" +
                "         <!--Optional:-->\n" +
                "         <IV_ZSCTZD>"+str+"</IV_ZSCTZD>\n" +
                "         <IV_ZSCTZD>"+planNo+"</IV_ZSCTZD>\n" +
                "      </urn:ZPP_CF_MES_005>\n" +
                "   </soapenv:Body>\n" +
                "</soapenv:Envelope>";
@@ -200,15 +216,26 @@
     */
    public static String xmlToJSON2(String xmlStr){
        JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
        String data = new String();
        Gson gson = new Gson();
        JsonObject jsonObject2 = gson.fromJson(jsonObject1.toString(), JsonObject.class);
        JsonObject etData = jsonObject2
        JsonObject result = jsonObject2
                .getAsJsonObject("SOAP:Envelope")
                .getAsJsonObject("SOAP:Body")
                .getAsJsonObject("n0:ZPP_CF_MES_005.Response")
                .getAsJsonObject("ET_DATA");
        return etData.toString();
                .getAsJsonObject("n0:ZPP_CF_MES_005.Response");
        if (ObjectUtil.isNotNull(result)){
            String string = result.get("EV_MESSAGE").toString();
            if (string.contains("查询成功")){
                JsonObject etData = jsonObject2
                        .getAsJsonObject("SOAP:Envelope")
                        .getAsJsonObject("SOAP:Body")
                        .getAsJsonObject("n0:ZPP_CF_MES_005.Response")
                        .getAsJsonObject("ET_DATA");
                data = etData.toString();
            }
        }
        return data;
    }
    /**
     * 方式--贰
jcdm-main/src/main/resources/mapper/da/passingStationCollection/DaPassingStationCollectionMapper.xml
@@ -42,8 +42,8 @@
            <if test="productionLine != null  and productionLine != ''"> and production_line = #{productionLine}</if>
            <if test="locationCode != null  and locationCode != ''"> and location_code = #{locationCode}</if>
            <if test="equipmentNo != null  and equipmentNo != ''"> and equipment_no = #{equipmentNo}</if>
            <if test="inboundTime != null "> and inbound_time = #{inboundTime}</if>
            <if test="outboundTime != null "> and outbound_time = #{outboundTime}</if>
            <if test="inboundTime != null "> and CAST(inbound_time as DATE) = #{inboundTime}</if>
            <if test="outboundTime != null "> and CAST(outbound_time as DATE) = #{outboundTime}</if>
            <if test="outRsSign != null "> and out_rs_sign = #{outRsSign}</if>
            <if test="outRsSign != null "> and out_rs_sign = #{outRsSign}</if>
            <if test="startTime != null and startTime != '' and endTime != null and endTime != ''"> and outbound_time between #{startTime} and #{endTime}</if>
jcdm-ui/src/components/itemSelect/single.vue
@@ -116,8 +116,8 @@
        pageSize: 10,
        materialCode: undefined,
        materialName: undefined,
        itemTypeId: 0,
        typeL: 1,
        itemTypeId: null,
        typeL: null,
      },
      // 列信息
      columns: [
@@ -185,7 +185,6 @@
    },
    // 单选选中数据
    handleRowChange(row) {
      debugger;
      if(row){
        this.selectedRows = row;
      }
jcdm-ui/src/views/main/cfkb/crankshaft/index.vue
@@ -244,8 +244,10 @@
    // 取箱体码第三段为配瓦值
    axisValueextracted() {
      console.log("33")
      if (this.from.scanObject1.indexOf(";") !== -1) {
        const parts1 = this.from.scanObject1.split(";");
      // if (this.from.scanObject1.indexOf(";") !== -1) {
      if (this.from.scanObject1.indexOf(",") !== -1) {
        // const parts1 = this.from.scanObject1.split(";");
        const parts1 = this.from.scanObject1.split(",");
        if (parts1.length >= 2) {
          console.log("44", parts1)
          //const axisValueextracted = parts1[2].substring(3,4);
jcdm-ui/src/views/main/cfkb/crankshaftUp/index.vue
@@ -234,46 +234,46 @@
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.clear();
      if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
        && this.from.axisName !== null && this.from.axisName !== ""
        && this.from.neckName !== null && this.from.neckName !== ""
        && this.from.tileName !== null && this.from.tileName !== ""
        && this.from.productSeries !== null && this.from.productSeries !== "")
      {
        this.axisValueextracted();
        this.neckValueextracted();
        if(this.queryParams.axisValue !== null && this.queryParams.neckValue !== null){
          this.insetFromToQueryParams();
          this.getList();
        }
        else{
          const h = this.$createElement;
          this.$message({
            message: h('p',null, [
              h('span', null, '警告 '),
              h('i', { style: 'color: black' }, '箱体码或曲轴码输入有误'),
              h()]),
            type: 'error',
            center: true,
            offset:300
          });
        }
      }
      else{
        const h = this.$createElement;
        this.$message({
          message: h('p',null, [
            h('span', null, '警告 '),
            h('i', { style: 'color: black' }, '请填写所有搜索条件'),
            h()]),
          type: 'error',
          center: true,
          offset:300
        });
      }
    },
    // handleQuery() {
    //   this.clear();
    //   if(this.from.scanObject1 !== null && this.from.scanObject2 !== null
    //     && this.from.axisName !== null && this.from.axisName !== ""
    //     && this.from.neckName !== null && this.from.neckName !== ""
    //     && this.from.tileName !== null && this.from.tileName !== ""
    //     && this.from.productSeries !== null && this.from.productSeries !== "")
    //   {
    //     this.axisValueextracted();
    //     this.neckValueextracted();
    //     if(this.queryParams.axisValue !== null && this.queryParams.neckValue !== null){
    //       this.insetFromToQueryParams();
    //       this.getList();
    //     }
    //     else{
    //       const h = this.$createElement;
    //       this.$message({
    //         message: h('p',null, [
    //           h('span', null, '警告 '),
    //           h('i', { style: 'color: black' }, '箱体码或曲轴码输入有误'),
    //           h()]),
    //         type: 'error',
    //         center: true,
    //         offset:300
    //       });
    //     }
    //   }
    //   else{
    //     const h = this.$createElement;
    //     this.$message({
    //       message: h('p',null, [
    //         h('span', null, '警告 '),
    //         h('i', { style: 'color: black' }, '请填写所有搜索条件'),
    //         h()]),
    //       type: 'error',
    //       center: true,
    //       offset:300
    //     });
    //   }
    // },
    // 取箱体码第三段为配瓦值
    axisValueextracted() {
jcdm-ui/src/views/main/da/paramCollection/index.vue
@@ -1,19 +1,19 @@
<template>
  <div class="app-container">
    <el-card class="box-card">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="产品编码" prop="productCode">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
      <el-form-item label="发动机编码" prop="sfcCode">
        <el-input
          v-model="queryParams.productCode"
          placeholder="请输入产品编码"
          v-model="queryParams.sfcCode"
          placeholder="请输入发动机编码"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="产品名称" prop="productName">
      <el-form-item label="工位编号" prop="locationCode">
        <el-input
          v-model="queryParams.productName"
          placeholder="请输入产品名称"
          v-model="queryParams.locationCode"
          placeholder="请输入工位编号"
          clearable
          @keyup.enter.native="handleQuery"
        />
@@ -73,12 +73,12 @@
    <el-table v-loading="loading" border :data="paramCollectionList" @selection-change="handleSelectionChange" v-if="paramCollectionList.length > 0">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="工单编号" align="center" prop="workOrderNo"></el-table-column>
      <el-table-column label="总成序列号" align="center" width="140" prop="sfcCode" ></el-table-column>
      <el-table-column label="产品编号" align="center" prop="productCode"></el-table-column>
      <el-table-column label="产线编号" align="center" prop="productionLine"></el-table-column>
<!--      <el-table-column label="工单编号" align="center" prop="workOrderNo"></el-table-column>-->
      <el-table-column label="发动机编码" align="center" width="160" prop="sfcCode" ></el-table-column>
<!--      <el-table-column label="产品编号" align="center" prop="productCode"></el-table-column>-->
<!--      <el-table-column label="产线编号" align="center" prop="productionLine"></el-table-column>-->
      <el-table-column label="工位编号" align="center" prop="locationCode"></el-table-column>
      <el-table-column label="设备编号" align="center" prop="equipmentNo"></el-table-column>
<!--      <el-table-column label="设备编号" align="center" prop="equipmentNo"></el-table-column>-->
      <el-table-column label="参数编码" align="center" prop="paramCode"></el-table-column>
      <el-table-column label="参数值" align="center" prop="paramValue"></el-table-column>
      <el-table-column label="参数上限" align="center" prop="paramUpper"></el-table-column>
@@ -131,24 +131,24 @@
    <!-- 添加或修改设备产品过程参数采集对话框 -->
    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="工单编号" prop="workOrderNo">
          <el-input v-model="form.workOrderNo" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="总成序列号" prop="sfcCode">
<!--        <el-form-item label="工单编号" prop="workOrderNo">-->
<!--          <el-input v-model="form.workOrderNo" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
        <el-form-item label="发动机编码" prop="sfcCode">
          <el-input v-model="form.sfcCode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="产品编号" prop="productCode">
          <el-input v-model="form.productCode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="产线编号" prop="productionLine">
          <el-input v-model="form.productionLine" type="textarea" placeholder="请输入内容" />
        </el-form-item>
<!--        <el-form-item label="产线编号" prop="productionLine">-->
<!--          <el-input v-model="form.productionLine" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
        <el-form-item label="工位编号" prop="locationCode">
          <el-input v-model="form.locationCode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="设备编号" prop="equipmentNo">
          <el-input v-model="form.equipmentNo" type="textarea" placeholder="请输入内容" />
        </el-form-item>
<!--        <el-form-item label="设备编号" prop="equipmentNo">-->
<!--          <el-input v-model="form.equipmentNo" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
        <el-form-item label="参数编码" prop="paramCode">
          <el-input v-model="form.paramCode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
@@ -230,18 +230,18 @@
        id: [
          { required: true, message: "主键id不能为空", trigger: "blur" }
        ],
        workOrderNo: [
          { required: true, message: "工单编号不能为空", trigger: "blur" }
        ],
        // workOrderNo: [
        //   { required: true, message: "工单编号不能为空", trigger: "blur" }
        // ],
        sfcCode: [
          { required: true, message: "总成序列号不能为空", trigger: "blur" }
        ],
        productCode: [
          { required: true, message: "产品编号不能为空", trigger: "blur" }
        ],
        productionLine: [
          { required: true, message: "产线编号不能为空", trigger: "blur" }
        ],
        // productionLine: [
        //   { required: true, message: "产线编号不能为空", trigger: "blur" }
        // ],
        locationCode: [
          { required: true, message: "工位编号不能为空", trigger: "blur" }
        ],
jcdm-ui/src/views/main/da/passingStationCollection/index.vue
@@ -2,6 +2,9 @@
  <div class="app-container">
    <el-card class="box-card">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label-width="100" label="发动机编码" prop="sfcCode">
        <el-input v-model="queryParams.sfcCode" placeholder="请输入发动机编码" clearable @keyup.enter.native="handleQuery"/>
      </el-form-item>
      <el-form-item label="入站时间" prop="inboundTime">
        <el-date-picker clearable
          v-model="queryParams.inboundTime"
@@ -75,7 +78,7 @@
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="工单编号" align="center" prop="workOrderNo">
      </el-table-column>
      <el-table-column label="总成序列号" align="center" prop="sfcCode">
      <el-table-column label="发动机编码" align="center" prop="sfcCode" width="150">
      </el-table-column>
      <el-table-column label="产品编号" align="center" prop="productCode">
      </el-table-column>
@@ -83,12 +86,12 @@
      </el-table-column>
      <el-table-column label="工位编号" align="center" prop="locationCode">
      </el-table-column>
      <el-table-column label="入站时间" align="center" prop="inboundTime" width="100">
      <el-table-column label="入站时间" align="center" prop="inboundTime" width="160">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.inboundTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="出站时间" align="center" prop="outboundTime" width="100">
      <el-table-column label="出站时间" align="center" prop="outboundTime" width="160">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.outboundTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
        </template>
@@ -147,7 +150,7 @@
        <el-form-item label="工单编号" prop="workOrderNo">
          <el-input v-model="form.workOrderNo" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="总成序列号" prop="sfcCode">
        <el-form-item label="发动机编码" prop="sfcCode">
          <el-input v-model="form.sfcCode" type="textarea" placeholder="请输入内容" />
        </el-form-item>
        <el-form-item label="产品编号" prop="productCode">
@@ -352,7 +355,7 @@
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除产品过站采集编号为"' + ids + '"的数据项?').then(function() {
      this.$modal.confirm('是否确认删除?').then(function() {
        return delPassingStationCollection(ids);
      }).then(() => {
        this.getList();
jcdm-ui/src/views/main/om/productionOrde/index.vue
@@ -6,6 +6,15 @@
      <el-form-item label-width="100" label="生产通知单" prop="productName">
        <el-input v-model="queryParams.productionNotice" placeholder="请输入生产通知单" clearable @keyup.enter.native="handleQuery"/>
      </el-form-item>
      <el-form-item label-width="100" label="工厂编号" prop="workshopCode">
        <el-select v-model="queryParams.workshopCode" placeholder="请选择工厂编号" clearable>
          <el-option
            v-for="dict in dict.type.factory_code"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"/>
        </el-select>
      </el-form-item>
      <el-form-item label-width="80" label="生产订单" prop="workOrderNo">
        <el-input v-model="queryParams.workOrderNo" placeholder="请输入生产订单" clearable @keyup.enter.native="handleQuery"/>
      </el-form-item>
@@ -336,7 +345,7 @@
export default {
  name: "ProductionOrde",
  dicts: ['order_state','year','month','day','subscription_type', 'sys_yes_no', 'data_type','sys_normal_disable'],
  dicts: ['order_state','year','month','day','subscription_type', 'sys_yes_no', 'data_type','sys_normal_disable','factory_code'],
  components: {
    ItemSelect ,
    Detail
@@ -393,7 +402,7 @@
        marketAreaCode: null,
        softwareVersionCode: null,
        productCompanyCode: null,
        frontEndId: 0,
        frontEndId: null,
        idNums: null,
        typeZ: null,
        flag: null,
@@ -512,7 +521,7 @@
        dateTimeRule = this.form.typeZ +" "+dateTimeRule;//此处加机型,顺序不能颠倒
        //赋值起始编码
        this.form.startEndCode =   dateTimeRule + String(parseInt(startCode)).padStart(3, '0') + "         " + dateTimeRule + String(parseInt(startCode) + parseInt(planQty)-1).padStart(3, '0') ;
        this.form.startEndCode =   dateTimeRule + String(parseInt(startCode)).padStart(3, '0') +"\n"+ dateTimeRule + String(parseInt(startCode) + parseInt(planQty)-1).padStart(3, '0') ;
      }
    },
jcdm-ui/src/views/main/om/productionOrde/planStatistics.vue
@@ -93,9 +93,9 @@
        <el-form-item label="种类" prop="productName">
          <el-input v-model="form.typeZ" disabled placeholder="请输入种类" />
        </el-form-item>
        <el-form-item label="实际数量" prop="actualQty">
          <el-input v-model="form.actualQty"  placeholder="请输入实际数量" />
        </el-form-item>
<!--        <el-form-item label="实际数量" prop="actualQty">-->
<!--          <el-input v-model="form.actualQty"  placeholder="请输入实际数量" />-->
<!--        </el-form-item>-->
        <el-form-item label="车间编号" prop="workshopCode">
          <el-select style="width: 93%" @change="handleSelectChange(form.workshopCode)" v-model="form.workshopCode" placeholder="请选择车间编号">
            <el-option