春风项目四线(合箱线、总装线)
wujian
5 天以前 ea3c33c8561df39d4f123d1424fda99dd0f0c51d
add - panel
已添加2个文件
已修改10个文件
317 ■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/Query/EngineQuery.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/Query/SAPQuery.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/ReportVO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/ResultDataVO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/bs/beatSetting/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/paramCollection/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/spcDataAnalyse/index.vue 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/Query/EngineQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.jcdm.main.bs.orderScheduling.Query;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class EngineQuery {
    @JsonProperty("ZFDJM")
    private String ZFDJM;
}
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/Query/SAPQuery.java
@@ -1,9 +1,13 @@
package com.jcdm.main.bs.orderScheduling.Query;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class SAPQuery {
    private String IV_ZFDJM;
    @JsonProperty("IV_ZFDJM")
    private List<EngineQuery> IV_ZFDJM;
}
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
@@ -18,14 +18,12 @@
import com.jcdm.common.exception.ServiceException;
import com.jcdm.common.utils.StringUtils;
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.main.bs.orderScheduling.Query.EngineQuery;
import com.jcdm.main.bs.orderScheduling.Query.SAPQuery;
import com.jcdm.main.bs.orderScheduling.common.Constants;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
import com.jcdm.main.bs.orderScheduling.vo.FollowReportVO;
import com.jcdm.main.bs.orderScheduling.vo.LineChartVO;
import com.jcdm.main.bs.orderScheduling.vo.ReportVO;
import com.jcdm.main.bs.orderScheduling.vo.SumDataVO;
import com.jcdm.main.bs.orderScheduling.vo.*;
import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
import com.jcdm.main.da.paramCollection.mapper.DaParamCollectionMapper;
import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection;
@@ -46,6 +44,7 @@
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -505,33 +504,43 @@
    @PostMapping("/engine-report")
    public R getReportDetail(SAPQuery sapQuery){
    public ReportVO getReportDetail(@RequestBody SAPQuery sapQuery){
        ReportVO reportVO = new ReportVO();
        if (StrUtil.isBlank(sapQuery.getIV_ZFDJM())){
            reportVO.setEV_STATUS("E");
            reportVO.setEV_MESSAGE("发动机号不能为空");
        List<ResultDataVO> EV_DATA = new ArrayList<>();
        List<EngineQuery> engineQueryList = sapQuery.getIV_ZFDJM();
        if (CollUtil.isEmpty(engineQueryList)){
            reportVO.setEV_DATA(EV_DATA);
            return reportVO;
        }
        BsOrderScheduling query = new BsOrderScheduling();
        query.setEngineNo(sapQuery.getIV_ZFDJM());
        List<String> engineNoList = engineQueryList.stream().map(EngineQuery::getZFDJM).collect(Collectors.toList());
        query.setEngineNoList(engineNoList);
        List<BsOrderScheduling> bsOrderSchedulingList = bsOrderSchedulingService.selectBsOrderSchedulingList(query);
        if (CollUtil.isNotEmpty(bsOrderSchedulingList)){
            BsOrderScheduling bsOrderScheduling = bsOrderSchedulingList.get(0);
            if (StrUtil.isBlank(bsOrderScheduling.getReport20())){
                reportVO.setEV_STATUS("0");
                reportVO.setEV_MESSAGE("未报工");
            } else {
                if ("1".equals(bsOrderScheduling.getReport20())){
                    reportVO.setEV_STATUS("1");
                    reportVO.setEV_MESSAGE("已报工");
                } else if ("3".equals(bsOrderScheduling.getReport20())){
                    reportVO.setEV_STATUS("E");
                    reportVO.setEV_MESSAGE(bsOrderScheduling.getRemarks());
        for (String s : engineNoList) {
            ResultDataVO  resultDataVO = new ResultDataVO();
            resultDataVO.setZFDJM(s);
            List<BsOrderScheduling> collect = bsOrderSchedulingList.stream().filter(x -> x.getEngineNo().equals(s)).collect(Collectors.toList());
            if (CollUtil.isNotEmpty(collect)){
                BsOrderScheduling bsOrderScheduling = collect.get(0);
                if (StrUtil.isBlank(bsOrderScheduling.getReport20())){
                    resultDataVO.setSTATU("0");
                    resultDataVO.setEV_MESSAGE("未报工");
                } else {
                    if ("1".equals(bsOrderScheduling.getReport20())){
                        resultDataVO.setSTATU("1");
                        resultDataVO.setEV_MESSAGE("已报工");
                    } else if ("3".equals(bsOrderScheduling.getReport20())){
                        resultDataVO.setSTATU("2");
                        resultDataVO.setEV_MESSAGE(bsOrderScheduling.getRemarks());
                    }
                }
            } else {
                resultDataVO.setSTATU("2");
                resultDataVO.setEV_MESSAGE("未查询到此发动机信息");
            }
        } else {
            reportVO.setEV_STATUS("E");
            reportVO.setEV_MESSAGE("未查询到此发动机信息");
            EV_DATA.add(resultDataVO);
        }
        return R.ok(reportVO);
        reportVO.setEV_DATA(EV_DATA);
        return reportVO;
    }
}
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/mapper/BsOrderSchedulingMapper.java
@@ -39,6 +39,7 @@
     * @return è®¢å•æŽ’产集合
     */
    public List<BsOrderScheduling> selectBsOrderSchedulingList(BsOrderScheduling bsOrderScheduling);
    public List<BsOrderScheduling> selectBsOrderSchedulingForReport(BsOrderScheduling bsOrderScheduling);
    public List<BsOrderScheduling> selectBsOrderSchedulingListForNum(@Param("queryDate") String queryDate,@Param("addQueryDate") String addQueryDate);
    public List<BsOrderScheduling> selectBsOrderSchedulingPage(BsOrderScheduling bsOrderScheduling);
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/ReportVO.java
@@ -1,12 +1,14 @@
package com.jcdm.main.bs.orderScheduling.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class ReportVO {
    private String EV_STATUS;
    private String EV_MESSAGE;
    @JsonProperty("EV_DATA")
    private List<ResultDataVO> EV_DATA;
}
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/vo/ResultDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.jcdm.main.bs.orderScheduling.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class ResultDataVO {
    @JsonProperty("ZFDJM")
    private String ZFDJM;
    @JsonProperty("STATU")
    private String STATU;
    @JsonProperty("EV_MESSAGE")
    private String EV_MESSAGE;
}
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchRules/controller/DaTileMatchRulesController.java
@@ -88,7 +88,7 @@
                colorInt = 4;
            }
            if (ObjectUtil.isNotEmpty(colorInt)){
                ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP055.Color", colorInt);
                ReadWriteEntity entity = new ReadWriteEntity("CFL4LJ.OP001.Color", colorInt);
                miloService.writeToOpcByte(entity);
            }
        }
jcdm-main/src/main/resources/mapper/bs/orderScheduling/BsOrderSchedulingMapper.xml
@@ -45,6 +45,23 @@
        select id, order_no, engine_no, product_type, model, production_status, working_hours, current_workstation, quality_status, whether_or_print, report_10, report_20, combined_box_time, final_assembly_time, operator, operate_time, status, spare_field_1, spare_field_2, spare_field_3, spare_field_4, create_user, create_time, update_user, update_time, remarks, report_30, box_closing_online_time, closing_box_offline_time, final_assembly_launch_time, final_assembly_offline_time, cvt_launch_time, cvt_offline_time from bs_order_scheduling
    </sql>
    <sql id="selectBsOrderSchedulingForReport">
        select id, engine_no, report_20, remarks from bs_order_scheduling
    </sql>
    <select id="selectBsOrderSchedulingForReport"
            parameterType="BsOrderScheduling" resultMap="BsOrderSchedulingResult">
        <include refid="selectBsOrderSchedulingForReport"/>
            <where>
                <if test="engineNoList != null and engineNoList.size() > 0">
                    and engine_no in
                    <foreach collection="engineNoList" open="(" close=")" separator="," item="engine">
                        #{engine}
                    </foreach>
                </if>
            </where>
    </select>
    <select id="selectBsOrderSchedulingList" parameterType="BsOrderScheduling" resultMap="BsOrderSchedulingResult">
        <include refid="selectBsOrderSchedulingVo"/>
        <where>
jcdm-ui/package.json
@@ -40,7 +40,7 @@
    "axios": "0.24.0",
    "clipboard": "2.0.8",
    "core-js": "3.25.3",
    "echarts": "5.4.0",
    "echarts": "^4.9.0",
    "element-ui": "^2.15.13",
    "file-saver": "2.0.5",
    "fuse.js": "6.4.3",
@@ -56,6 +56,7 @@
    "vue": "2.6.12",
    "vue-count-to": "1.0.13",
    "vue-cropper": "0.5.5",
    "vue-echarts": "^4.0.0",
    "vue-meta": "2.4.0",
    "vue-qr": "^4.0.9",
    "vue-router": "3.4.9",
jcdm-ui/src/views/main/bs/beatSetting/index.vue
@@ -121,24 +121,15 @@
      </span>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="产品编码" prop="productCode">
          <el-select style="width: 100%" @change="handleSelectChange(form.productCode)" v-model="form.productCode" placeholder="请输入产品编码">
            <el-option
              v-for="item in options"
              :key="item.productCode"
              :label="item.productCode"
              :value="item.productCode">
            </el-option>
          </el-select>
          <el-input v-model="form.productCode" placeholder="请输入产品编码" />
        </el-form-item>
        <el-form-item  label="产品名称" prop="productName">
          <el-input  disabled v-model="form.productName" placeholder="请输入产品名称" />
          <el-input v-model="form.productName" placeholder="请输入产品名称" />
        </el-form-item>
        <el-form-item label="节拍" prop="beat">
          <el-input v-model="form.beat" placeholder="请输入节拍" />
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="form.remark" placeholder="请输入备注" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
@@ -211,6 +202,9 @@
        beat: [
          { required: true, message: "节拍不能为空", trigger: "blur" }
        ],
        productCode: [
          { required: true, message: "产品编码不能为空", trigger: "blur" }
        ],
      }
    };
  },
jcdm-ui/src/views/main/da/paramCollection/index.vue
@@ -279,8 +279,8 @@
        const startDate = value[0];
        const endDate = value[1];
        const dayCount = this.daysBetween(startDate, endDate);
        if (dayCount + 1 > 7) {
          this.$message.error('请选择连续的7天!');
        if (dayCount + 1 > 3) {
          this.$message.error('请选择连续的3天!');
          this.queryParams.dateConditions = []; // é‡ç½®æ—¥æœŸèŒƒå›´
        }
      }
jcdm-ui/src/views/main/da/spcDataAnalyse/index.vue
@@ -56,18 +56,28 @@
    <el-card style="margin-top: 10px" class="box-card">
    <el-row :gutter="10" class="mb8">
      <el-tabs v-model="activeName" @tab-click="handleClick">
        <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
        <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
        <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
        <el-tab-pane label="正态分布" name="first">
          <div>
            <!--        <v-chart :option="chartOption" :style="{width: '600px', height: '400px'}"/>-->
            <div ref="chart1" :style="{ width: '900px', height: '400px' }"></div>
          </div>
        </el-tab-pane>
        <el-tab-pane label="散列图" name="second">
          <div ref="chart2" :style="{ width: '900px', height: '400px' }"></div>
        </el-tab-pane>
      </el-tabs>
    </el-row>
<!--      <div>-->
<!--&lt;!&ndash;        <v-chart :option="chartOption" :style="{width: '600px', height: '400px'}"/>&ndash;&gt;-->
<!--        <div ref="chart" :style="{ width: '100%', height: '400px' }"></div>-->
<!--      </div>-->
<!--    <el-table v-loading="loading" border :data="paramCollectionList" @selection-change="handleSelectionChange" v-if="paramCollectionList.length > 0">-->
    <el-table v-loading="loading" border :data="paramCollectionList" @selection-change="handleSelectionChange" v-if="paramCollectionList.length > 0">
<!--    </el-table>-->
    </el-table>
      <el-empty v-else>
        <span slot="description">暂无数据</span>
      </el-empty>
<!--      <el-empty v-else>-->
<!--        <span slot="description">暂无数据</span>-->
<!--      </el-empty>-->
    </el-card>
@@ -75,13 +85,30 @@
</template>
<script>
import { listParamCollection, getParamCollection, delParamCollection, addParamCollection, updateParamCollection } from "@/api/main/da/paramCollection/paramCollection";
import {queryDaParamCollectionListForSearch, getSelectOption, queryChart} from "../../../../api/main/da/paramCollection/paramCollection";
import {
  addParamCollection,
  delParamCollection,
  getParamCollection,
  updateParamCollection
} from "@/api/main/da/paramCollection/paramCollection";
import {
  getSelectOption,
  queryChart,
  queryDaParamCollectionListForSearch
} from "../../../../api/main/da/paramCollection/paramCollection";
import VueECharts from 'vue-echarts';
import echarts from 'echarts'
import async from "async";
export default {
  name: "ParamCollection",
  components: {
    'v-chart': VueECharts
  },
  data() {
    return {
      convertedData:[],
      convertedData2:[],
      activeName: 'second',
      dataTypeList:[
        {
@@ -155,16 +182,91 @@
        paramValue: [
          { required: true, message: "参数值不能为空", trigger: "blur" }
        ],
      }
      },
    };
  },
  created() {
    // this.getList();
  },
  mounted() {
    this.initChart1();
    this.initChart2();
    this.getSelectOptionMethod()
  },
  methods: {
    initChart1() {
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      const chart = echarts.init(this.$refs.chart1);
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      const option = {
        title: {
          text: '正态分布图',
        },
        tooltip: {},
        xAxis: {
          type: 'value',
          scale: true
        },
        yAxis: {
          type: 'value',
        },
        series: [
          {
            name: '正态分布',
            type: 'line',
            smooth: true,
            // data: this.generateNormalDistributionData(10,0,1), // å‡å€¼0,标准差1的正态分布数据
            // data: this.queryChartMethod(), // å‡å€¼0,标准差1的正态分布数据
            data: this.convertedData, // å‡å€¼0,标准差1的正态分布数据
          },
        ],
      };
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      chart.setOption(option);
    },
    initChart2() {
      // åŸºäºŽå‡†å¤‡å¥½çš„dom,初始化echarts实例
      const chart = echarts.init(this.$refs.chart2);
      // æŒ‡å®šå›¾è¡¨çš„配置项和数据
      const option = {
        title: {
          text: '散列图',
        },
        tooltip: {},
        xAxis: {
          type: 'category',
          data:[]
        },
        yAxis: {
          type: 'value',
          scale: true
        },
        series: [
          {
            name: '散列图',
            type: 'scatter',
            data: this.convertedData2, // å‡å€¼0,标准差1的正态分布数据
          },
        ],
      };
      // ä½¿ç”¨åˆšæŒ‡å®šçš„配置项和数据显示图表。
      chart.setOption(option);
    },
    generateNormalDistributionData(numPoints, mean, stdDev) {
      let data = [];
      for (let i = 0; i < numPoints; i++) {
        const x = (i - numPoints / 2) / (numPoints / 4); // ç¼©æ”¾åˆ°åˆé€‚çš„X范围
        const y = (1 / (stdDev * Math.sqrt(2 * Math.PI))) * Math.exp(-0.5 * Math.pow((x - mean) / stdDev, 2));
        data.push([x, y]);
      }
      console.log('rrered1111111111ata',data)
      data = this.chartData
      return data;
    },
    getSelectOptionMethod(){
      getSelectOption(this.queryParams).then(res => {
        console.log('rrrrrrr',res)
@@ -174,41 +276,63 @@
        }
      })
    },
    queryChartMethod(){
      queryChart(this.queryParams).then(res => {
   async queryChartMethod(){
      //计算方式可以百度
      let convertedData = []
      await queryChart(this.queryParams).then(res => {
        if (res.code === 200){
          console.log('res',res)
          let dataArray = []
          if (res.data.length > 0){
            res.data.forEach(x => {
              let num = parseInt(x)
              let num = parseFloat(x)
              dataArray.push(num)
            })
          }
          console.log('res222',dataArray)
          this.convertedData2 = dataArray
          let array=dataArray
          console.log('arra',array)
          // å¹³å‡å€¼
          let mean=(array.reduce((a,b)=>a+b))/array.length
          mean = mean.toFixed(2)
          console.log('mean',mean)
          // æ–¹å·®
          let variance=array.map(x=>{
            return Math.pow(x-mean,2)
          }).reduce((a,b)=>a+b)/array.length
          console.log('variance',variance)
          console.log('variance222',variance)
          // æ ‡å‡†å·®
          let StandardDeviation = Math.sqrt(variance)
          StandardDeviation = StandardDeviation.toFixed(2)
          console.log('StandardDeviation',StandardDeviation)
          //计算方式可以百度
          let convertedData=[]
          for(let x=mean-3*StandardDeviation;x<=mean + 3*StandardDeviation;x++){
          console.log('mean-3*StandardDeviation',mean - 3*StandardDeviation)
          console.log('mean+3*StandardDeviation',parseFloat(mean) + 3*StandardDeviation)
          let step = 0.1
          for(let x=mean-3*StandardDeviation; x<=parseFloat(mean) + 3*StandardDeviation; x = parseFloat((x+step).toFixed(2))){
            console.log('x',x)
            //for循环中的条件代表你要生成几个标准差的数据,
            //  å†å¸¦å…¥æ­£æ€åˆ†å¸ƒå…¬å¼ï¼Œå°±å¯ä»¥ç”Ÿæˆä¸€æ¡æ•´æ¡åˆ†å¸ƒæ›²çº¿çš„数据
            let y=1/(StandardDeviation*Math.sqrt(2*(Math.PI)))*Math.exp(-(Math.pow(x-mean,2))/(2*(Math.pow(StandardDeviation,2))))
            convertedData.push([x,y])
            console.log('(StandardDeviation*Math.sqrt(2*(Math.PI)))',(StandardDeviation*Math.sqrt(2*(Math.PI))))
            console.log('1/(StandardDeviation*Math.sqrt(2*(Math.PI)))',1/(StandardDeviation*Math.sqrt(2*(Math.PI))))
            console.log('-(Math.pow(x-mean,2))',-(Math.pow(x-mean,2)))
            console.log('(2*(Math.pow(parseFloat(StandardDeviation),2)))',(2*(Math.pow(parseFloat(StandardDeviation),2))))
            const temp =1/(StandardDeviation*Math.sqrt(2*(Math.PI)))*Math.exp(-(Math.pow(x-mean,2))/(2*(Math.pow(parseFloat(StandardDeviation),2))))
            console.log('temp',temp)
            let y = parseFloat(temp.toFixed(2))
            console.log('yyyyyyyyyyy',y)
            let a = []
            a = [x,y]
            console.log('a',a)
            convertedData.push(a)
          }
        }
      })
     console.log('34535435345',convertedData)
     this.convertedData = convertedData
     this.initChart1()
     this.initChart2()
    },
    handleClick(tab, event) {
      console.log(tab, event);
@@ -218,8 +342,8 @@
        const startDate = value[0];
        const endDate = value[1];
        const dayCount = this.daysBetween(startDate, endDate);
        if (dayCount + 1 > 7) {
          this.$message.error('请选择连续的7天!');
        if (dayCount + 1 > 2) {
          this.$message.error('请选择连续的2天!');
          this.queryParams.dateConditions = []; // é‡ç½®æ—¥æœŸèŒƒå›´
        }
      }