zhoushihao
2024-09-18 4170df95c30c0e761ce14ed1a33d1bccfe542c34
Merge remote-tracking branch 'origin/master'
10个文件已修改
36个文件已添加
2583 ■■■■■ 已修改文件
UI-Project/src/views/GlassStorage/GlassStorage.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/rawfilmstorage.vue 454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/service/RawGlassStorageStationService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/service/impl/RawGlassStorageStationServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/controller/RawGlassStorageTaskController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/GlassStorageApplication.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/job/push.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/controller/LoadPositionController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/entity/LoadPosition.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/service/LoadPositionService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/controller/RawUsageController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/entity/RawUsage.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/service/RawUsageService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/entity/ShelfRack.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/service/ShelfRackService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/controller/StorageTaskController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/entity/StorageTask.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/service/StorageTaskService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application-dev.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application-prod.yml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application.yml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/resources/mapper/ShelfRackMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/main/resources/mapper/StorageTaskMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/yiwumes/src/test/java/mes/GlassStorageModuleApplicationTest.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/GlassStorage/GlassStorage.vue
New file
@@ -0,0 +1,49 @@
<script setup>
import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router";
let indexFlag=$ref(1)
function changeRouter(index){
  indexFlag=index
}
</script>
<template>
  <!-- <div id="main-div"> -->
    <div id="main-body">
      <router-view  />
    </div>
  <!-- </div> -->
</template>
<style scoped>
#main-div{
  width: 100%;
  height: 100%;
}
#div-title{
  height: 2%;
  width: 100%;
}
#searchButton{
  margin-top: -5px;
  margin-left: 1rem;
}
/* #searchButton1{
//margin-left: 10rem;
} */
/*main-body样式*/
#main-body{
  width: 100%;
  height: 95%;
  /* margin-top: 1%; */
}
#select{
  margin-left:0.5rem;
}
:deep(.indexTag .el-breadcrumb__inner){
  color: #5CADFE !important;
}
</style>
UI-Project/src/views/GlassStorage/rawfilmstorage.vue
New file
@@ -0,0 +1,454 @@
<script lang="ts" setup>
import {Search} from "@element-plus/icons-vue";
import {reactive} from "vue";
import {useRouter} from "vue-router"
const router = useRouter()
import type { TableColumnCtx } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useI18n } from 'vue-i18n'
import { WebSocketHost ,host} from '@/utils/constants'
import request from "@/utils/request"
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
import { ref, onMounted, onUnmounted, onBeforeUnmount } from "vue";
const tableDataa = ref([])
const tableDatab = ref([])
const { t } = useI18n()
const add = ref(false)
const dialogFormVisiblea = ref(false)
const dialogFormVisibleb = ref(false)
const dialogFormVisiblec = ref(false)
const timeRange = ref(["2022-01-01", "2025-01-01"])
let webSocket: WebSocket | null = null;
const value = ref('')
const options = [
  {
    value: t('film.warehousing1'),
    label: t('film.warehousing1'),
  },
  {
    value: t('film.warehousing2'),
    label: t('film.warehousing2'),
  }
]
const report = ref({
  enableType: '',
  enableState: '',
});
onMounted(() => {
    connectWebSocket();
    // socket = initializeWebSocket(socketUrl, handleMessage);
});
onUnmounted(() => {
  if (webSocket) {
    webSocket.close();
  }
});
  // onUnmounted(() => {
  //   if (socket) {
  //   closeWebSocket(socket);
  //   }
  //   });
let socket = null;
const connectWebSocket = () => {
  if (!webSocket) {
    const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/rawGlass`;
    webSocket = new WebSocket(socketUrl);
    webSocket.onmessage = (event) => {
      const data = JSON.parse(event.data);
       if(data.tasks !=null){
        tableDataa.value = data.tasks[0]
        console.log(data.tasks[0]);
        }
        if(data.rack !=null){
        tableDatab.value = data.rack[0]
        }
    //   const data = JSON.parse(event.data);
    //   const scaleFactor =  1621.78/6000;
    //   const scaleFactory =  750/3300;
    //   if (data.currentCutTerritory && data.currentCutTerritory.length > 0) {
    //   const newRects = data.currentCutTerritory[0].map(rect => {
    //     const existingRect = adjustedRects.value.find(r => r.glass_id === rect.glass_id);
    //   });
    //   adjustedRects.value = newRects;
    //  }
    };
  }
};
// const socketUrl = `ws://${WebSocketHost}:${host}/api/glassStorage/api/talk/rawGlass`;
// const handleMessage = (data) => {
//   // if(data.tasks!=null){
//   // tableData.splice(0, tableData.length, ...data.prioritylist[0]);
//   // }
//   if(data.tasks !=null){
//   tableDataa.value = data.tasks[0]
//   console.log(data.tasks[0]);
//   }
//   if(data.rack !=null){
//   tableDatab.value = data.rack[0]
//   }
// };
  // 删除
 const opena = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.dedelete'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
  // 禁用
  const openb = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.dedisable'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
  // 出库
  const openc = async(row) => {
  try {
    const confirmResult = await ElMessageBox.confirm(
      t('film.deoutbound'),
      t('productStock.prompt'),
      {
        confirmButtonText: t('productStock.yes'),
        cancelButtonText: t('productStock.cancel'),
        type: 'warning',
      }
    );
    if (confirmResult === 'confirm') {
      const response = await request.post("/loadGlass/sys/user/deleteUser",  [row.id])
    if (response.code === 200) {
      ElMessage.success(response.message);
      } else {
      ElMessage.error(response.msg);
      }
    }
  } catch (error) {
    console.error('发生错误:', error);
  }
};
// 查询数据
const selectReportData = async () => {
  const response = await request.post("/glassStorage/raw_glass_storage_task/selectRawglasstask", {
    createTime: timeRange.value[0],
    patternQuantity: timeRange.value[1],
    enableType: report.value.enableType,
    enableState: report.value.enableState
  })
  if (response.code === 200) {
    tableDataa.value = response.data;
    ElMessage.success(response.message);
    if (webSocket) {
        webSocket.close();
        webSocket = null;
      }
  } else {
    connectWebSocket();
    ElMessage.error(response.message);
  }
};
// 是否禁用
const toggleEnableState = async (row: any) => {
  if (!row.deviceId) {
    ElMessage.error(t('basicData.updatanull'));
    return;
  }
  const newState = row.enableState === 1 ? 0 : 1;
  try {
    // 发送请求到后端更新状态
    const response = await request.post('/glassStorage/rawGlassStorageDetails/updateEnableState', { deviceId: row.deviceId, enableState: newState });
    if (response.code === 200) {
      ElMessage.success(response.message);
      row.enableState = newState;
    } else {
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理请求错误
    ElMessage.error(t('basicData.glassnull'));
  }
};
const handleEdit = (row) => {
  dialogFormVisiblec.value = true;
};
function getStatusType1(enableType) {
switch (enableType) {
  case 1:
    return 'info';
  case 2:
    return 'warning';
  case 3:
    return 'success';
}
}
function getStatusText1(enableType) {
switch (enableType) {
  case 1:
    return t('film.stocke');//入库
  case 2:
    return t('film.outbound');//出库
  case 3:
  return t('film.dispatch');//调度
}
}
function getStatusType2(enableState) {
switch (enableState) {
  case 1:
    return 'info';
  case 2:
    return 'warning';
  case 3:
    return 'success';
}
}
function getStatusText2(enableState) {
switch (enableState) {
  case 1:
    return t('film.built');//新建
  case 2:
    return t('film.execution');//执行中
  case 3:
  return t('film.finish');//完成
}
}
onBeforeUnmount(() => {
  closeWebSocket();
});
</script>
<template>
  <div>
  <div style="display: flex; flex-direction: row; align-items: center; margin-top: 20px;">
    <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisiblea = true">{{ $t('film.mes') }}</el-button>
  <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('film.warehousing') }}</el-button>
    <el-date-picker style="margin-left: 10px;"  v-model="timeRange" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD"
      :start-placeholder="$t('film.starttime')" :end-placeholder="$t('film.endtime')" :default-time="defaultTime" />
    <el-select v-model="report.enableType" clearable :placeholder="$t('film.taskstatus')" style="margin-left: 10px;" >
      <el-option :label="$t('film.built')" value="1"></el-option>
      <el-option :label="$t('film.execution')" value="2"></el-option>
      <el-option :label="$t('film.finish')" value="3"></el-option>
    </el-select>
    <el-select v-model="report.enableState" clearable :placeholder="$t('film.tasktype')" style="margin-left: 10px;" >
      <el-option :label="$t('film.stocke')" value="1"></el-option>
      <el-option :label="$t('film.outbound')" value="2"></el-option>
      <el-option :label="$t('film.dispatch')" value="3"></el-option>
    </el-select>
    <el-button type="primary" style="margin-left: 10px;" @click="selectReportData()">{{ $t('film.inquire') }}</el-button>
  </div>
  <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
        <el-table height="300" ref="table"
        :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="enableId" align="center" :label="$t('film.enableid')"/>
          <el-table-column prop="originateSlot" align="center" :label="$t('film.originateslot')"/>
          <el-table-column prop="endSlot" align="center" :label="$t('film.endslot')"/>
          <el-table-column prop="patternQuantity" align="center" :label="$t('film.patternquantity')"/>
          <el-table-column
          align="center"
          :label="$t('film.enabletype')"
          prop="enableType"
        >
        <template #default="scope">
      <el-tag :type="getStatusType1(scope.row.enableType)">
        {{ getStatusText1(scope.row.enableType) }}
      </el-tag>
    </template>
        </el-table-column>
        <el-table-column
          align="center"
          :label="$t('film.enablestate')"
          prop="enableState"
        >
        <template #default="scope">
      <el-tag :type="getStatusType2(scope.row.enableState)">
        {{ getStatusText2(scope.row.enableState) }}
      </el-tag>
    </template>
        </el-table-column>
          <el-table-column prop="createTime" align="center" :label="$t('film.createtime')" />
        </el-table>
      </div>
    </el-card>
    <div class="awatch">
    <img src="../../assets/ypcc.png" alt="" style="width: 100%;height: 120%;margin-left: 10px;position: relative;margin-top: -20px;">
</div>
    <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%" >
    <el-table  ref="table" style="margin-top: 20px;height: 700px;"
        :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
          <el-table-column prop="deviceId" fixed align="center" :label="$t('film.station')" min-width="80"/>
          <el-table-column prop="patternWidth" align="center" :label="$t('film.width')"  min-width="80" />
          <el-table-column prop="patternHeight" align="center" :label="$t('film.height')" min-width="80" />
          <el-table-column prop="patternThickness" align="center" :label="$t('film.thickness')" min-width="80" />
          <el-table-column prop="filmsId" align="center" :label="$t('film.films')" min-width="80" />
          <el-table-column prop="remainQuantity" align="center" :label="$t('film.remainquantity')" min-width="120" />
          <el-table-column
          align="center"
            :label="$t('film.enablestate')"
            min-width="80"
            prop="enablestate"
          >
          <template #default="scope">
          <el-tag
            :type="scope.row.enableState == 1 ? 'success' : 'danger'"
            @click="toggleEnableState(scope.row)"
            >
            {{ scope.row.enableState == 1 ? $t('film.start') : $t('film.disable')}}
          </el-tag>
        </template>
          </el-table-column>
          <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="270">
            <template #default="scope">
              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button>
              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('film.delete') }}</el-button>
              <el-button size="mini" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button>
            </template>
        </el-table-column>
        </el-table>
</el-dialog>
<el-dialog v-model="dialogFormVisibleb" top="15vh" width="60%">
  <div style="margin-top: 10px;margin-bottom: 10px;">
      <el-form size="mini" label-width="150px">
      <el-form label-width="70vm" label-position="right">
        <el-row >
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.widtha')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inwidth')" v-model="number" autocomplete="off" />
              </el-form-item>
              </div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.heighta')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inheight')" v-model="number" autocomplete="off" />
              </el-form-item></div>
              </div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.thicknessa')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inthickness')" v-model="number" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.filmsa')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.infilms')" v-model="number" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
        </el-row>
        <el-row style="margin-top: 10px;">
          <el-col :span="6">
              <div id="dt" style="font-size: 15px;">
        <div>
              <el-form-item :label="$t('film.quantitya')" :required="true" style="width: 17vw;">
                <el-input :placeholder="$t('film.inquantity')" v-model="number" autocomplete="off" />
              </el-form-item></div></div>
          </el-col>
          <el-col :span="9">
            <div id="dta" style="font-size: 15px;">
        <div>
          <el-form-item :label="$t('film.inwarehousing')" :required="true" style="width: 17vw">
            <el-select :placeholder="$t('film.selectwarehousing')">
      <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      />
          </el-select>
              </el-form-item></div>
              </div>
          </el-col>
        </el-row>
        </el-form>
            </el-form>
          </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirm">
          {{ $t('basicData.confirm') }}
        </el-button>
        <el-button @click="dialogFormVisibleb = false">{{ $t('basicData.cancel') }}</el-button>
      </div>
    </template>
</el-dialog>
<el-dialog v-model="dialogFormVisiblec" top="21vh" width="40%">
    <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
      <el-form size="mini" label-width="100px">
        <el-form label-width="210px" label-position="right">
          <el-form-item :label="$t('film.thickremainquantity')" :required="true" style="width: 25vw">
            <el-input v-model="workstationId" autocomplete="off" />
          </el-form-item>
        </el-form>
      </el-form>
    </div>
    <template #footer>
      <div id="dialog-footer">
        <el-button type="primary" @click="handleConfirm">
          {{ $t('reportWork.sure') }}
        </el-button>
        <el-button @click="dialogFormVisiblec = false">{{ $t('reportWork.cancel') }}</el-button>
      </div>
    </template>
  </el-dialog>
        </div>
</template>
<style scoped>
#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
.awatch{
  height: 400px;
  width: 1500px;
  max-width: 100%;
}
#dialog-footer {
  text-align: center;
  margin-top: -15px;
}
</style>
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/push.java
@@ -1,28 +1,22 @@
package com.mes.job;
import cn.hutool.json.JSONObject;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.shelfrack.service.ShelfRackService;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import com.mes.storagetask.service.StorageTaskService;
import com.mes.tools.WebSocketServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
@@ -46,7 +40,7 @@
        JSONObject jsonObject = new JSONObject();
        List<RawGlassStorageDetails> rack =  rawGlassStorageDetailsService.list();
        List<RawGlassStorageStation> state =  rawGlassStorageStationService.list();
        List<RawGlassStorageTask> tasks =  rawGlassStorageTaskService.selectTasks();
        List<RawGlassStorageTask> tasks =  rawGlassStorageTaskService.list();
        jsonObject.append("rack",rack);
        jsonObject.append("state",state);
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -1,9 +1,11 @@
package com.mes.rawglassdetails.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
@@ -14,8 +16,24 @@
 * @since 2024-09-10
 */
@RestController
@RequestMapping("/raw_glass_storage_details/raw-glass-storage-details")
@RequestMapping("/rawGlassStorageDetails")
public class RawGlassStorageDetailsController {
    @Autowired
//    RawGlassStorageDetailsService rawGlassStorageDetailsService;
    private RawGlassStorageDetailsService rawGlassStorageDetailsService;
    @ApiOperation("工位状态")
    @PostMapping("/updateEnableState")
    @ResponseBody
    public Result<Boolean> updateStatus(@RequestBody Integer enableState) {
        boolean result = rawGlassStorageDetailsService.updateRawGlassStorageDetails(String.valueOf(enableState));
        if (enableState == 1) {
            return Result.build(1, "启用", result);
        } else {
            return Result.build(0, "禁用", result);
        }
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/entity/RawGlassStorageDetails.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -57,7 +59,7 @@
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    private Date createTime;
    /**
     * 剩余数量
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -1,21 +1,17 @@
package com.mes.rawglassdetails.service;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import java.util.List;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wf
 * @since 2024-09-10
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface RawGlassStorageDetailsService extends IService<RawGlassStorageDetails> {
    List<RawGlassStorageDetails> selectDetails();
    boolean updateRawGlassStorageDetails(String films_id);//要大写这个
    /**
     *删除表
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -2,24 +2,26 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.mapper.RawGlassStorageTaskMapper;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wf
 * @since 2024-09-10
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
public abstract class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
@Slf4j
public class RawGlassStorageDetailsServiceImpl extends ServiceImpl<RawGlassStorageDetailsMapper, RawGlassStorageDetails> implements RawGlassStorageDetailsService {
    @Override
    public boolean updateRawGlassStorageDetails(String films_id) {
@@ -35,7 +37,6 @@
        QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("device_id", device_id);
        return  remove(queryWrapper);//remove才是删除,delete得用另外的依赖,默认方法是remove返回bool
    }
    @Override
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/service/RawGlassStorageStationService.java
@@ -1,18 +1,14 @@
package com.mes.rawglassstation.service;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import java.util.List;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author wf
 * @since 2024-09-10
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface RawGlassStorageStationService extends IService<RawGlassStorageStation> {
    List<RawGlassStorageStation> selectStations();
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassstation/service/impl/RawGlassStorageStationServiceImpl.java
@@ -2,26 +2,25 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.rawglassstation.entity.RawGlassStorageStation;
import com.mes.rawglassstation.mapper.RawGlassStorageStationMapper;
import com.mes.rawglassstation.service.RawGlassStorageStationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author wf
 * @since 2024-09-10
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
public abstract class RawGlassStorageStationServiceImpl extends ServiceImpl<RawGlassStorageStationMapper, RawGlassStorageStation> implements RawGlassStorageStationService {
    public List<RawGlassStorageStation> selectDetails() {
@Slf4j
public class RawGlassStorageStationServiceImpl extends ServiceImpl<RawGlassStorageStationMapper, RawGlassStorageStation> implements RawGlassStorageStationService {
    @Override
    public List<RawGlassStorageStation> selectStations() {
        return list();
    }
    @Override
@@ -43,4 +42,7 @@
    public boolean insertRawGlassStorageStation(RawGlassStorageStation rw) {
        return this.save(rw);
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/controller/RawGlassStorageTaskController.java
@@ -1,8 +1,14 @@
package com.mes.rawglasstask.controller;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import com.mes.utils.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -14,8 +20,14 @@
 * @since 2024-09-10
 */
@RestController
@RequestMapping("/raw_glass_storage_task/raw-glass-storage-task")
@RequestMapping("/raw_glass_storage_task")
public class RawGlassStorageTaskController {
    @Autowired
    private RawGlassStorageTaskService rwService; //这里是你定义调用的service,这个是报工的
    @ApiOperation("原片仓储数据查询")
    @PostMapping("/selectRawglasstask")
    public Result selectDamage(@RequestBody RawGlassStorageTask rw) {
        return Result.build(200,"查询成功", rwService.selectTasking(rw));
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/entity/RawGlassStorageTask.java
@@ -20,14 +20,35 @@
public class RawGlassStorageTask implements Serializable {
    private static final long serialVersionUID = 1L;
//    public Object getEndTime;
      @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 任务ID
     */
    private Integer enableId;
    /**
     * 起始格子
     */
    private Integer originateSlot;
    /**
     * 目标格子
     */
    private Integer endSlot;
    /**
     * 原片数量
     */
    private String patternQuantity;
    /**
     * 任务类型
     */
    private Integer enableType;
    /**
     * 任务状态
@@ -37,7 +58,8 @@
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    private String createTime;
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java
New file
@@ -0,0 +1,65 @@
package com.mes.rawglasstask.service.impl;
import com.baomidou.mybatisplus.core.assist.ISqlRunner;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.pp.entity.request.Reportingdamage;
import com.mes.rawglasstask.entity.RawGlassStorageTask;
import com.mes.rawglasstask.mapper.RawGlassStorageTaskMapper;
import com.mes.rawglasstask.service.RawGlassStorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
@Slf4j
public class RawGlassRawGlassStorageTaskServiceImpl extends ServiceImpl<RawGlassStorageTaskMapper, RawGlassStorageTask> implements RawGlassStorageTaskService {
    @Override
    public List<RawGlassStorageTask> selectTask() {
        return list();
    }
    @Override
    public List<RawGlassStorageTask> selectTasking(RawGlassStorageTask rw) {
        QueryWrapper<RawGlassStorageTask> queryWrapper = new QueryWrapper<>();
        //下面这个列是查询字段,不要可以删掉默认查询全部
        queryWrapper.ge("create_time", rw.getCreateTime())//大于时间
                .le("create_time",rw.getPatternQuantity())//小于时间
                .groupBy("enable_id");//排序字段
        if(rw.getEnableType()!=null){
            queryWrapper.eq("enable_type", rw.getEnableType());
        }if(rw.getEnableState()!=null){
            queryWrapper.eq("enable_state", rw.getEnableState());
        }
        return baseMapper.selectList(queryWrapper);
//        return  list(queryWrapper);
    }
    @Override
    public boolean insertRawGlassStorageTask(RawGlassStorageTask rw) {
        return this.save(rw);
    }
    @Override
    public boolean updateRawGlassStorageTask(String originate_slot) {
        UpdateWrapper<RawGlassStorageTask> wrapper = new UpdateWrapper<>();
        wrapper.set("originate_slot","1005")
                .eq( "originate_slot",originate_slot);
        return update(wrapper);
    }
    @Override
    public boolean deleteRawGlassStorageTask(String id) {
        QueryWrapper<RawGlassStorageTask> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", id);
        return  remove(queryWrapper);
    }
}
hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
@@ -5,7 +5,7 @@
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        hangzhoumes:
          url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8
          url: jdbc:mysql://10.153.19.150:3306/yiwumes?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
hangzhoumesParent/moduleService/yiwumes/pom.xml
New file
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>moduleService</artifactId>
        <groupId>com.mes</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>glassStorage</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.4</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/GlassStorageApplication.java
New file
@@ -0,0 +1,28 @@
package com.mes;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
 * @Author : zhoush
 * @Date: 2024/4/7 14:36RRRR
 * @Description:
 */
@Slf4j
@SpringBootApplication
@EnableSwagger2WebMvc
@EnableDiscoveryClient
@MapperScan(basePackages = "com.mes.*.mapper")
@EnableScheduling
public class GlassStorageApplication {
    public static void main(String[] args) {
        SpringApplication.run(GlassStorageApplication.class, args);
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/job/push.java
New file
@@ -0,0 +1,54 @@
package com.mes.job;
import cn.hutool.json.JSONObject;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.shelfrack.service.ShelfRackService;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import com.mes.storagetask.service.StorageTaskService;
import com.mes.tools.WebSocketServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class push {
    @Autowired
    private StorageTaskService storageTaskService;
    @Autowired
    private ShelfRackService shelfRackService;
    @Scheduled(fixedDelay = 2000)
    public void sendDownWorkstations() {
        log.info("发送任务信息和架子信息");
        JSONObject jsonObject = new JSONObject();
        List<RawUsageAndShelfRack> rack =  shelfRackService.selectshelf_rack();
        List<StorageTaskRequest>  tasks =  storageTaskService.Tasks();
        jsonObject.append("rack",rack);
        jsonObject.append("tasks",tasks);
        log.info(jsonObject.toString());
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("storageTask");
        if (sendwServer != null) {
            for (WebSocketServer webserver : sendwServer) {
                if (webserver != null&&webserver.session.isOpen()) {
                    log.info("已发送");
                    webserver.sendMessage(String.valueOf(jsonObject));
                }
            }
        }
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
New file
@@ -0,0 +1,99 @@
package com.mes.loadposition.controller;
import com.mes.loadposition.entity.LoadPosition;
import com.mes.loadposition.service.LoadPositionService;
import com.mes.utils.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@RestController
@RequestMapping("/api/loadPosition")
@Api(tags = " 控制器")
public class LoadPositionController {
    @Autowired
    private LoadPositionService loadPositionService;
    /**
     * 列表查询
     *
     * @param params
     * @return
     */
    @ApiOperation(value = "列表查询",notes = "列表查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @PostMapping("/findList")
    public Result findList(@RequestBody LoadPosition params) {
        List<LoadPosition> result = loadPositionService.findList(params);
        return Result.success(result);
    }
    /**
     * 查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "查询", notes = "查询详情")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/{id}")
    public Result findById(@PathVariable("id") Long id) {
        LoadPosition loadPosition = loadPositionService.getBaseMapper().selectById(id);
        return Result.success(loadPosition);
    }
    /**
     * 新增
     *
     * @param loadPosition
     * @return
     */
    @ApiOperation(value = "新增", notes = "新增数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PostMapping
    public Result insert( @RequestBody LoadPosition loadPosition) {
        boolean result = loadPositionService.save(loadPosition);
        return Result.success(result);
    }
    /**
     * 修改
     *
     * @param loadPosition
     * @return
     */
    @ApiOperation(value = "修改", notes = "修改数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PutMapping
    public Result update( @RequestBody LoadPosition loadPosition) {
        boolean result = loadPositionService.updateById(loadPosition);
        return Result.success(result);
    }
    /**
     * 删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "删除", notes = "删除数据")
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable("id") Long id) {
        int result = loadPositionService.getBaseMapper().deleteById(id);
        return Result.success(result);
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/entity/LoadPosition.java
New file
@@ -0,0 +1,79 @@
package com.mes.loadposition.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Data
@Component
@EqualsAndHashCode(callSuper = false)
@TableName("load_position")
@ApiModel(value = "LoadPosition", description = " ")
public class LoadPosition implements Serializable{
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     *  架子编号
     */
    @ApiModelProperty("架子编号")
    private String number;
    /**
     *  机器编号
     */
    @ApiModelProperty("机器编号")
    private Long machineId;
    /**
     *  启用标记
     */
    @ApiModelProperty("启用标记")
    private String flag;
    /**
     *  工作状态
     */
    @ApiModelProperty("工作状态")
    private String state;
    /**
     *  仓储任务编号
     */
    @ApiModelProperty("仓储任务编号")
    private Integer storageTaskId;
    /**
     *  上片位类型
     */
    @ApiModelProperty("上片位类型")
    private Integer typeFlag;
    /**
     *  线路
     */
    @ApiModelProperty("线路")
    private Integer routeGroup;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
New file
@@ -0,0 +1,16 @@
package com.mes.loadposition.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.loadposition.entity.LoadPosition;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 *
 */
public interface LoadPositionMapper extends BaseMapper<LoadPosition> {
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.mapper.LoadPositionMapper">
</mapper>
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/service/LoadPositionService.java
New file
@@ -0,0 +1,19 @@
package com.mes.loadposition.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.loadposition.entity.LoadPosition;
import java.util.List;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface LoadPositionService extends IService<LoadPosition> {
    List<LoadPosition> findList(LoadPosition params);
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
New file
@@ -0,0 +1,32 @@
package com.mes.loadposition.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.loadposition.entity.LoadPosition;
import com.mes.loadposition.service.LoadPositionService;
import com.mes.loadposition.mapper.LoadPositionMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
public class LoadPositionServiceImpl extends ServiceImpl<LoadPositionMapper, LoadPosition> implements LoadPositionService {
    @Autowired
    private LoadPositionMapper loadPositionMapper;
    @Override
    public List<LoadPosition> findList(LoadPosition params){
        LambdaQueryWrapper<LoadPosition> query = Wrappers.lambdaQuery(LoadPosition.class);
        return loadPositionMapper.selectList(query);
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/controller/RawUsageController.java
New file
@@ -0,0 +1,119 @@
package com.mes.rawusage.controller;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.*;
import com.mes.rawusage.entity.RawUsage;
import com.mes.rawusage.service.RawUsageService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@RestController
@RequestMapping("/api/rawUsage")
@Api(tags = " 控制器")
public class RawUsageController {
    @Autowired
    private RawUsageService rawUsageService;
    /**
     * 列表查询
     *
     * @param params
     * @return
     */
    @ApiOperation(value = "列表查询",notes = "列表查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @PostMapping("/findList")
    public Result findList(@RequestBody RawUsage params) {
        List<RawUsage> result = rawUsageService.findList(params);
        return Result.success(result);
    }
    /**
     * 查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "查询", notes = "查询详情")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/{id}")
    public Result findById(@PathVariable("id") Long id) {
        RawUsage rawUsage = rawUsageService.getById(id);
        return Result.success(rawUsage);
    }
    /**
     * 新增
     *
     * @param rawUsage
     * @return
     */
    @ApiOperation(value = "新增", notes = "新增数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PostMapping
    public Result insert( @RequestBody RawUsage rawUsage) {
        boolean result = rawUsageService.save(rawUsage);
        return Result.success(result);
    }
    /**
     * 修改
     *
     * @param rawUsage
     * @return
     */
    @ApiOperation(value = "修改", notes = "修改数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PostMapping("/updaterawUsage")
    public Result updaterawUsage(@RequestBody RawUsage rawUsage) {
        boolean result = rawUsageService.updateById(rawUsage);
        return Result.success(result);
    }
    /**
     * 删除
     *
     * @param
     * @return
     */
    @ApiOperation(value = "删除", notes = "删除数据")
    @PostMapping("/id")
    public Result delete(@RequestBody RawUsage rawUsage) {
         rawUsageService.updateRawPackageAndStorageRack(rawUsage);
        return Result.success();
    }
    @ApiOperation(value = "入库", notes = "入库")
    @PostMapping("/inStorage")
    public Result inStorage(@RequestBody RawUsageAndShelfRack rawUsage) {
        rawUsageService.inStorage(rawUsage);
        return Result.success();
    }
    @ApiOperation(value = "出库", notes = "出库")
    @PostMapping("/outStorage")
    public Result outStorage(@RequestBody RawUsageAndShelfRack rawUsage) {
        rawUsageService.outStorage(rawUsage);
        return Result.success();
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/entity/RawUsage.java
New file
@@ -0,0 +1,110 @@
package com.mes.rawusage.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.stereotype.Component;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Data
@Component
@EqualsAndHashCode(callSuper = false)
@TableName("raw_usage")
@ApiModel(value = "RawUsage", description = " ")
public class RawUsage implements Serializable{
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     *  玻璃类型
     */
    @ApiModelProperty("玻璃类型")
    private String rawType;
    /**
     *  宽度
     */
    @ApiModelProperty("宽度")
    private Float rawWidth;
    /**
     *  高度
     */
    @ApiModelProperty("高度")
    private Float rawHeight;
    /**
     *  厚度
     */
    @ApiModelProperty("厚度")
    private Float rawThickness;
    /**
     *  状态
     */
    @ApiModelProperty("状态")
    private String state;
    /**
     *  颜色
     */
    @ApiModelProperty("颜色")
    private String color;
    /**
     *  总数量
     */
    @ApiModelProperty("总数量")
    private Integer pieces;
    /**
     *  剩余数量
     */
    @ApiModelProperty("剩余数量")
    private Integer leftPieces;
    /**
     *  物料编码
     */
    @ApiModelProperty("物料编码")
    private String qrcode;
    /**
     *  创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     *  生产日期
     */
    @ApiModelProperty("生产日期")
    private Date productionTime;
    /**
     *  批次号
     */
    @ApiModelProperty("批次号")
    private String batchId;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
New file
@@ -0,0 +1,15 @@
package com.mes.rawusage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.rawusage.entity.RawUsage;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 *
 */
public interface RawUsageMapper extends BaseMapper<RawUsage> {
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.rawusage.mapper.RawUsageMapper">
</mapper>
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/service/RawUsageService.java
New file
@@ -0,0 +1,36 @@
package com.mes.rawusage.service;
import com.mes.rawusage.entity.RawUsage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import java.util.List;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface RawUsageService extends IService<RawUsage> {
    List<RawUsage> findList(RawUsage params);
    /**
     * @param raw
     * 修改
     */
    void updateRawPackageAndStorageRack(RawUsage raw);
    /**
     * @param raw
     * 入库
     */
    void inStorage(RawUsageAndShelfRack raw);
    /**
     * @param raw
     * 出库
     */
    void outStorage(RawUsageAndShelfRack raw);
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
New file
@@ -0,0 +1,138 @@
package com.mes.rawusage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.rawusage.mapper.RawUsageMapper;
import com.mes.rawusage.entity.RawUsage;
import com.mes.rawusage.service.RawUsageService;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.shelfrack.mapper.ShelfRackMapper;
import com.mes.storagetask.entity.StorageTask;
import com.mes.storagetask.mapper.StorageTaskMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.InvocationTargetException;
import java.time.LocalDateTime;
import java.util.List;
import static cn.hutool.core.date.DateTime.now;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
public class RawUsageServiceImpl extends ServiceImpl<RawUsageMapper, RawUsage> implements RawUsageService {
    @Autowired
    private RawUsageMapper rawUsageMapper;
    @Autowired
    private ShelfRackMapper shelfRackMapper;
    @Autowired
    private StorageTaskMapper storageTaskMapper;
    @Override
    public List<RawUsage> findList(RawUsage params){
        LambdaQueryWrapper<RawUsage> query = Wrappers.lambdaQuery(RawUsage.class);
        return rawUsageMapper.selectList(query);
    }
    @Override
    public void updateRawPackageAndStorageRack(RawUsage raw) {
        // Step 1: 查询raw_package_id
        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
                .eq(ShelfRack::getNumber, raw.getId());
        ShelfRack shelfRack = shelfRackMapper.selectOne(queryWrapper);
        if (shelfRack == null) {
            throw new RuntimeException("未找到与指定货架ID关联的原料包信息");
        }
        // Step 2: 更新raw_package表
        RawUsage rawUsage=new RawUsage();
        rawUsage.setState("空闲");
        rawUsage.setId(shelfRack.getRawPackageId());
        rawUsageMapper.updateById(rawUsage);
        // Step 3: 更新storage_rack表
        ShelfRack rack = new ShelfRack();
        rack.setState("空闲");
        rack.setRawPackageId(null);  // 设置RawPackageId为特定的空值,例如0
        LambdaQueryWrapper<ShelfRack> queryWrapper2 = Wrappers.lambdaQuery(ShelfRack.class)
                .eq(ShelfRack::getNumber, raw.getId());
        shelfRackMapper.update(rack, queryWrapper2);
    }
    @Override
    public void inStorage(RawUsageAndShelfRack raw) {
        RawUsage rawPackage = new RawUsage();
        BeanUtils.copyProperties(raw,rawPackage);
        rawPackage.setRawType(raw.getRawThickness() + raw.getColor());
        rawPackage.setState("使用中");
        rawPackage.setLeftPieces(rawPackage.getPieces());
        rawUsageMapper.insert(rawPackage);
        // 更新架表
        ShelfRack rack = new ShelfRack();
        rack.setState("使用中");
        rack.setRawPackageId(rawPackage.getId());  // 设置RawPackageId为特定的空值,例如0
        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
                .eq(ShelfRack::getNumber, raw.getNumber());
        shelfRackMapper.update(rack, queryWrapper);
        StorageTask storageTask=new StorageTask();
        storageTask.setTaskState("等待中");
        storageTask.setTaskType("从仓位到吊装位");
        storageTask.setLoadRack(raw.getLoadRack());
        storageTask.setShelfRack(raw.getNumber());
        storageTask.setRouteGroup(1);
        storageTask.setStartTime(now());
        storageTask.setFinishTime(now());
        insertTask(storageTask);
    }
    @Override
    public void outStorage(RawUsageAndShelfRack raw) {
        ShelfRack rack = new ShelfRack();
        rack.setState("等待出库");
        rack.setRawPackageId(null);  // 设置RawPackageId为特定的空值,例如0
        LambdaQueryWrapper<ShelfRack> queryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
                .eq(ShelfRack::getNumber, raw.getNumber());
        shelfRackMapper.update(rack, queryWrapper);
        StorageTask storageTask=new StorageTask();
        storageTask.setTaskState("等待中");
        storageTask.setTaskType("从仓位到吊装位");
        storageTask.setLoadRack(raw.getLoadRack());
        storageTask.setShelfRack(raw.getNumber());
        storageTask.setRouteGroup(1);
        storageTask.setStartTime(now());
        storageTask.setFinishTime(now());
        insertTask(storageTask);
    }
    public void insertTask(StorageTask storageTask) {
        storageTaskMapper.insert(storageTask);
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
New file
@@ -0,0 +1,113 @@
package com.mes.shelfrack.controller;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.*;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.service.ShelfRackService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
import java.util.Map;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@RestController
@RequestMapping("/api/shelfRack")
@Api(tags = " 控制器")
public class ShelfRackController {
    @Autowired
    private ShelfRackService shelfRackService;
    /**
     * 列表查询
     *
     * @param params
     * @return
     */
    @ApiOperation(value = "列表查询",notes = "列表查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @PostMapping("/findList")
    public Result findList(@RequestBody ShelfRack params) {
        List<ShelfRack> result = shelfRackService.findList(params);
        return Result.success(result);
    }
    /**
     * 查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "查询", notes = "查询详情")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/{id}")
    public Result findById(@PathVariable("id") Long id) {
        ShelfRack shelfRack = shelfRackService.getBaseMapper().selectById(id);
        return Result.success(shelfRack);
    }
    /**
     * 新增
     *
     * @param shelfRack
     * @return
     */
    @ApiOperation(value = "新增", notes = "新增数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PostMapping
    public Result insert( @RequestBody ShelfRack shelfRack) {
        boolean result = shelfRackService.save(shelfRack);
        return Result.success(result);
    }
    /**
     * 修改
     *
     * @param shelfRack
     * @return
     */
    @ApiOperation(value = "修改", notes = "修改数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PutMapping
    public Result update( @RequestBody ShelfRack shelfRack) {
        boolean result = shelfRackService.updateById(shelfRack);
        return Result.success(result);
    }
    /**
     * 删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "删除", notes = "删除数据")
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable("id") Long id) {
        int result = shelfRackService.getBaseMapper().deleteById(id);
        return Result.success(result);
    }
    @ApiOperation(value = "架子表格查询",notes = "架子表格查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/findshelfrack")
    public Result findshelfrack() {
        List<RawUsageAndShelfRack> result = shelfRackService.selectshelf_rack();
        return Result.success(result);
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
New file
@@ -0,0 +1,68 @@
package com.mes.shelfrack.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.stereotype.Component;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Data
@Component
@EqualsAndHashCode(callSuper = false)
@TableName("shelf_rack")
@ApiModel(value = "ShelfRack", description = " ")
public class ShelfRack implements Serializable{
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     *  架子编号
     */
    @ApiModelProperty("架子编号")
    private String number;
    /**
     *  工作状态
     */
    @ApiModelProperty("工作状态")
    private String state;
    /**
     *  包号编号
     */
    @ApiModelProperty("包号编号")
    private Integer rawPackageId;
    /**
     *  修改时间
     */
    @ApiModelProperty("修改时间")
    private Date modTime;
    /**
     *  启用状态
     */
    @ApiModelProperty("启用状态")
    private String enableState;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/entity/request/RawUsageAndShelfRack.java
New file
@@ -0,0 +1,76 @@
package com.mes.shelfrack.entity.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
public class RawUsageAndShelfRack {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("ID")
    private Integer id;
    @ApiModelProperty("玻璃类型")
    private String rawType;
    @ApiModelProperty("宽度")
    private Float rawWidth;
    @ApiModelProperty("高度")
    private Float rawHeight;
    @ApiModelProperty("厚度")
    private Float rawThickness;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("总数量")
    private Integer pieces;
    @ApiModelProperty("剩余数量")
    private Integer leftPieces;
    @ApiModelProperty("物料编码")
    private String qrcode;
    @ApiModelProperty("创建时间")
    private Date createTime;
    private Date productionTime;
    @ApiModelProperty("批次号")
    private String batchId;
    @ApiModelProperty("架子编号")
    private String number;
    @ApiModelProperty("工作状态")
    private String state;
    @ApiModelProperty("包号编号")
    private Integer rawPackageId;
    private Date modTime;
    @ApiModelProperty("启用状态")
    private String enableState;
    @ApiModelProperty("上片位编号")
    private String loadRack;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
New file
@@ -0,0 +1,23 @@
package com.mes.shelfrack.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import java.util.List;
import java.util.Map;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 *
 */
public interface ShelfRackMapper extends MPJBaseMapper<ShelfRack> {
    List<RawUsageAndShelfRack> selectshelf_rack();
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
New file
@@ -0,0 +1,20 @@
package com.mes.shelfrack.service;
import com.mes.shelfrack.entity.ShelfRack;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import java.util.List;
import java.util.Map;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface ShelfRackService extends IService<ShelfRack> {
    List<ShelfRack> findList(ShelfRack params);
    List<RawUsageAndShelfRack> selectshelf_rack();
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
New file
@@ -0,0 +1,61 @@
package com.mes.shelfrack.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.mes.common.config.Const;
import com.mes.rawusage.entity.RawUsage;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.shelfrack.mapper.ShelfRackMapper;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.service.ShelfRackService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
public class ShelfRackServiceImpl extends ServiceImpl<ShelfRackMapper, ShelfRack> implements ShelfRackService {
    @Autowired
    private ShelfRackMapper shelfRackMapper;
    @Override
    public List<ShelfRack> findList(ShelfRack params){
        LambdaQueryWrapper<ShelfRack> query = Wrappers.lambdaQuery(ShelfRack.class);
        return shelfRackMapper.selectList(query);
    }
//
//    public void yourMethodName() {
//        List<Map<String, Object>> resultList = shelfRackMapper.selectMaps(
//                new LambdaQueryWrapper<ShelfRack>()
//                        .select(ShelfRack::getNumber, RawUsage::getRawType, RawUsage::getRawWidth,
//                                RawUsage::getRawHeight, RawUsage::getRawThickness, ShelfRack::getModTime,
//                                ShelfRack::getEnableState, RawUsage::getPieces, RawUsage::getLeftPieces,
//                                "(datediff(now(), raw_usage.create_time)) as rukuTime",
//                                "(concat(if(ROUND(raw_usage.left_pieces / #{param1} * 100, 0) < 20, 20, ROUND(raw_usage.left_pieces / #{param1} * 100, 0)), '%')) as bfb")
//                        .leftJoin(RawUsage.class, RawUsage::getId, ShelfRack::getRawPackageId)
//                        .orderByAsc(ShelfRack::getNumber)
//        );
//
//        // Process resultList as needed
//    }
    @Override
    public  List<RawUsageAndShelfRack> selectshelf_rack() {
        return baseMapper.selectshelf_rack();
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
New file
@@ -0,0 +1,129 @@
package com.mes.storagetask.controller;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import com.mes.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.*;
import com.mes.storagetask.entity.StorageTask;
import com.mes.storagetask.service.StorageTaskService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@RestController
@RequestMapping("/api/storageTask")
@Api(tags = " 控制器")
public class StorageTaskController {
    @Autowired
    private StorageTaskService storageTaskService;
    /**
     * 列表查询
     *
     * @param params
     * @return
     */
    @ApiOperation(value = "列表查询",notes = "列表查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @PostMapping("/findList")
    public Result findList(@RequestBody StorageTask params) {
        List<StorageTask> result = storageTaskService.findList(params);
        return Result.success(result);
    }
    /**
     * 查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "查询", notes = "查询详情")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/{id}")
    public Result findById(@PathVariable("id") Long id) {
        StorageTask storageTask = storageTaskService.getBaseMapper().selectById(id);
        return Result.success(storageTask);
    }
    /**
     * 新增
     *
     * @param storageTask
     * @return
     */
    @ApiOperation(value = "新增", notes = "新增数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PostMapping
    public Result insert( @RequestBody StorageTask storageTask) {
        boolean result = storageTaskService.save(storageTask);
        return Result.success(result);
    }
    /**
     * 修改
     *
     * @param storageTask
     * @return
     */
    @ApiOperation(value = "修改", notes = "修改数据")
    @ApiResponses({@ApiResponse(code = 200, message = "操作成功")})
    @PutMapping
    public Result update( @RequestBody StorageTask storageTask) {
        boolean result = storageTaskService.updateById(storageTask);
        return Result.success(result);
    }
    /**
     * 删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "删除", notes = "删除数据")
    @DeleteMapping("/{id}")
    public Result delete(@PathVariable("id") Long id) {
        int result = storageTaskService.getBaseMapper().deleteById(id);
        return Result.success(result);
    }
    @ApiOperation(value = "任务查询",notes = "任务查询",produces = "application/json")
    @ApiResponses({@ApiResponse(code = 200, message = "查询成功")})
    @GetMapping("/findTasks")
    public Result findLatestTasks() {
        List<StorageTaskRequest> result = storageTaskService.Tasks();
        return Result.success(result);
    }
    @ApiOperation(value = "任务操作", notes = "任务操作")
    @PostMapping("/taskUpdate")
    public Result taskUpdate(@RequestBody Map<String, Object> storageTaskMap) {
        StorageTask task = new StorageTask();
        task.setType((String) storageTaskMap.get("Type")); // 假设Type是存储在Map中的一个键
        task.setId((int) storageTaskMap.get("id"));
        storageTaskService.taskUpdate(task);
        return Result.success();
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/entity/StorageTask.java
New file
@@ -0,0 +1,82 @@
package com.mes.storagetask.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.stereotype.Component;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Data
@Component
@EqualsAndHashCode(callSuper = false)
@TableName("storage_task")
@ApiModel(value = "StorageTask", description = " ")
public class StorageTask implements Serializable{
    private static final long serialVersionUID=1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     *  任务类型
     */
    @ApiModelProperty("任务类型")
    private String taskType;
    /**
     *  工作状态
     */
    @ApiModelProperty("工作状态")
    private String taskState;
    /**
     *  仓储架号
     */
    @ApiModelProperty("仓储架号")
    private String shelfRack;
    /**
     *  上片位编号
     */
    @ApiModelProperty("上片位编号")
    private String loadRack;
    /**
     *  线路
     */
    @ApiModelProperty("线路")
    private Integer routeGroup;
    /**
     *  创建时间
     */
    @ApiModelProperty("创建时间")
    private Date startTime;
    /**
     *  完成时间
     */
    @ApiModelProperty("完成时间")
    private Date finishTime;
    @ApiModelProperty("前端任务类型")
    private String Type;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/entity/request/StorageTaskRequest.java
New file
@@ -0,0 +1,77 @@
package com.mes.storagetask.entity.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
public class StorageTaskRequest {
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 任务类型
     */
    @ApiModelProperty("任务类型")
    private String taskType;
    @ApiModelProperty("前端任务类型")
    private String Type;
    /**
     * 工作状态
     */
    @ApiModelProperty("工作状态")
    private String taskState;
    /**
     * 仓储架号
     */
    @ApiModelProperty("仓储架号")
    private String shelfRack;
    /**
     * 上片位编号
     */
    @ApiModelProperty("上片位编号")
    private String loadRack;
    /**
     * 线路
     */
    @ApiModelProperty("线路")
    private Integer routeGroup;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date startTime;
    /**
     * 完成时间
     */
    @ApiModelProperty("完成时间")
    private Date finishTime;
    @ApiModelProperty("颜色")
    private String color;
    @ApiModelProperty("厚度")
    private Float rawThickness;
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
New file
@@ -0,0 +1,25 @@
package com.mes.storagetask.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.storagetask.entity.StorageTask;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
 *
 *
 * @author system
 * @since 2024-07-09 14:51:27
 *
 */
@Repository
public interface StorageTaskMapper extends BaseMapper<StorageTask> {
    List<StorageTaskRequest>  selectTasks();
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/service/StorageTaskService.java
New file
@@ -0,0 +1,24 @@
package com.mes.storagetask.service;
import com.mes.storagetask.entity.StorageTask;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
public interface StorageTaskService extends IService<StorageTask> {
    List<StorageTask> findList(StorageTask params);
    Map<String, Optional<StorageTask>> findLatestTasks();
    List<StorageTaskRequest>  Tasks();
    void taskUpdate(StorageTask storageTask);
}
hangzhoumesParent/moduleService/yiwumes/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
New file
@@ -0,0 +1,167 @@
package com.mes.storagetask.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.loadposition.entity.LoadPosition;
import com.mes.loadposition.mapper.LoadPositionMapper;
import com.mes.rawusage.entity.RawUsage;
import com.mes.rawusage.mapper.RawUsageMapper;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.entity.request.RawUsageAndShelfRack;
import com.mes.shelfrack.mapper.ShelfRackMapper;
import com.mes.storagetask.entity.request.StorageTaskRequest;
import com.mes.storagetask.mapper.StorageTaskMapper;
import com.mes.storagetask.entity.StorageTask;
import com.mes.storagetask.service.StorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author system
 * @since 2024-07-09 14:51:27
 */
@Service
@Slf4j
public class StorageTaskServiceImpl extends ServiceImpl<StorageTaskMapper, StorageTask> implements StorageTaskService {
    @Autowired
    private StorageTaskMapper storageTaskMapper;
    @Autowired
    private LoadPositionMapper loadPositionMapper;
    @Autowired
    private ShelfRackMapper shelfRackMapper;
    @Autowired
    private RawUsageMapper rawUsageMapper;
    @Override
    public List<StorageTask> findList(StorageTask params){
        LambdaQueryWrapper<StorageTask> query = Wrappers.lambdaQuery(StorageTask.class);
        return storageTaskMapper.selectList(query);
    }
    public Map<String, Optional<StorageTask>> findLatestTasks() {
        Map<String, Optional<StorageTask>> latestTasks = new HashMap<>();
        // 查询最新的已完成任务
        LambdaQueryWrapper<StorageTask> completedWrapper = new LambdaQueryWrapper<>();
        completedWrapper.eq(StorageTask::getTaskType, "已完成")
                .orderByDesc(StorageTask::getId)
                .last("LIMIT 1");
        Optional<StorageTask> latestCompletedTask = Optional.ofNullable(storageTaskMapper.selectOne(completedWrapper));
        latestTasks.put("已完成", latestCompletedTask);
        // 查询最新的等待中任务
        LambdaQueryWrapper<StorageTask> pendingWrapper = new LambdaQueryWrapper<>();
        pendingWrapper.eq(StorageTask::getTaskType, "等待中")
                .orderByDesc(StorageTask::getId);
        Optional<StorageTask> latestPendingTask = Optional.ofNullable(storageTaskMapper.selectOne(pendingWrapper));
        latestTasks.put("等待中", latestPendingTask);
        log.info(latestTasks+"");
        return latestTasks;
    }
    @Override
    public   List<StorageTaskRequest>  Tasks() {
        return baseMapper.selectTasks();
    }
    @Override
    public void taskUpdate(StorageTask request) {
        Integer taskId = request.getId();
        String taskType = request.getTaskType();
        String Type = request.getType();
        String taskState = request.getTaskState();
        String shelfRack = request.getShelfRack();
        String loadRack = request.getLoadRack();
        if ("重新开始".equals(Type)) {
            StorageTask storageTask = new StorageTask();
            storageTask.setTaskState("等待中");
            LambdaQueryWrapper<StorageTask> queryWrapper = Wrappers.lambdaQuery(StorageTask.class)
                    .eq(StorageTask::getId, request.getId());
            storageTaskMapper.update(request,queryWrapper);
        } else if ("完成".equals(Type)) {
            StorageTask existingTask = storageTaskMapper.selectById(taskId);
            if (existingTask != null && "正在工作".equals(existingTask.getTaskState())) {
                if ("从仓位到上片位".equals(taskType) || "从仓位到吊装位".equals(taskType)) {
                    LoadPosition loadPosition = new LoadPosition();
                    loadPosition.setState("正在使用");
                    loadPosition.setStorageTaskId(request.getId());
                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
                            .eq(LoadPosition::getNumber, request.getLoadRack());
                    loadPositionMapper.update(loadPosition, queryWrapper);
                    StorageTask storageTask = new StorageTask();
                    storageTask.setTaskState("正在使用");
                    LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
                            .eq(StorageTask::getId, request.getId());
                    storageTaskMapper.update(request,StorageTaskqueryWrapper);
                } else if ("从上片位到仓位".equals(taskType)) {
                    LoadPosition loadPosition = new LoadPosition();
                    loadPosition.setState("使用中");
                    loadPosition.setStorageTaskId(null);
                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
                            .eq(LoadPosition::getNumber, request.getLoadRack());
                    loadPositionMapper.update(loadPosition, queryWrapper);
                    ShelfRack loshelfRack = new ShelfRack();
                    LambdaQueryWrapper<RawUsage> RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class)
                            .eq(RawUsage::getId,loshelfRack.getRawPackageId());
                    RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper);
                    if(RawUsage.getLeftPieces()==0){
                        loshelfRack.setState("空闲");
                    }else {
                        loshelfRack.setState("使用中");
                    }
                    LambdaQueryWrapper<ShelfRack> loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
                            .eq(ShelfRack::getNumber, request.getLoadRack());
                    shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper);
                } else if ("从吊装位到仓位".equals(taskType)) {
                    LoadPosition loadPosition = new LoadPosition();
                    loadPosition.setState("空闲");
                    loadPosition.setStorageTaskId(null);
                    LambdaQueryWrapper<LoadPosition> queryWrapper = Wrappers.lambdaQuery(LoadPosition.class)
                            .eq(LoadPosition::getNumber, request.getLoadRack());
                    loadPositionMapper.update(loadPosition, queryWrapper);
                    ShelfRack loshelfRack = new ShelfRack();
                    LambdaQueryWrapper<RawUsage> RawUsagequeryWrapper = Wrappers.lambdaQuery(RawUsage.class)
                            .eq(RawUsage::getId,loshelfRack.getRawPackageId());
                    RawUsage RawUsage = rawUsageMapper.selectOne(RawUsagequeryWrapper);
                    if(RawUsage.getLeftPieces()==1){
                        loshelfRack.setEnableState("启用");
                    }else {
                        loshelfRack.setEnableState(loshelfRack.getEnableState());
                    }
                    loadPosition.setState("使用中");
                    LambdaQueryWrapper<ShelfRack> loshelfRackqueryWrapper = Wrappers.lambdaQuery(ShelfRack.class)
                            .eq(ShelfRack::getNumber, request.getLoadRack());
                    shelfRackMapper.update(loshelfRack, loshelfRackqueryWrapper);
                }
                StorageTask storageTask = new StorageTask();
                storageTask.setTaskState("已完成");
                LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
                        .eq(StorageTask::getId, request.getId());
                storageTaskMapper.update(storageTask, StorageTaskqueryWrapper);
            }
        } else if ("删除".equals(Type)) {
            LambdaQueryWrapper<StorageTask> StorageTaskqueryWrapper = Wrappers.lambdaQuery(StorageTask.class)
                    .eq(StorageTask::getId, request.getId());
            storageTaskMapper.delete(StorageTaskqueryWrapper);
        }
    }
}
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application-dev.yml
New file
@@ -0,0 +1,25 @@
spring:
  datasource:
    dynamic:
      primary: hangzhoumes #设置默认的数据源或者数据源组,默认值即为master
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        hangzhoumes:
          url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        salve_hangzhoumes:
          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
          username: sa
          password: beibo.123/
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
  cloud:
    nacos:
      discovery:
        server-addr: 10.153.19.150:8848
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application-prod.yml
New file
@@ -0,0 +1,30 @@
spring:
  datasource:
    dynamic:
      primary: hangzhoumes #设置默认的数据源或者数据源组,默认值即为master
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        hangzhoumes:
          url: jdbc:mysql://127.0.0.1:3306/yiwumes?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
        salve_hangzhoumes:
          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
          username: sa
          password: beibo.123/
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        pp:
          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
          username: root
          password: beibo.123/
          driver-class-name: com.mysql.cj.jdbc.Driver
  cloud:
    nacos:
      discovery:
        server-addr: 10.153.19.150:8848
  redis:
    database: 0
    host: 10.153.19.150
    port: 6379
    password: 123456
hangzhoumesParent/moduleService/yiwumes/src/main/resources/application.yml
New file
@@ -0,0 +1,18 @@
server:
  port: 8086
spring:
  profiles:
    active: dev
  application:
    name: glassStorage
  liquibase:
    enabled: false
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
hangzhoumesParent/moduleService/yiwumes/src/main/resources/mapper/ShelfRackMapper.xml
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.shelfrack.mapper.ShelfRackMapper">
    <resultMap id="ShelfRackResultMap" type="com.mes.shelfrack.entity.request.RawUsageAndShelfRack">
        <result property="number" column="number"/>
        <result property="rawType" column="raw_type"/>
        <result property="rawWidth" column="raw_width"/>
        <result property="rawHeight" column="raw_height"/>
        <result property="rawThickness" column="raw_thickness"/>
        <result property="enableState" column="enable_state"/>
        <result property="pieces" column="pieces"/>
        <result property="createTime" column="createTime"  />
        <result property="batchId" column="batch_id"/>
    </resultMap>
    <select id="selectshelf_rack" resultMap="ShelfRackResultMap">
    <![CDATA[
        SELECT a.number, b.raw_type, b.raw_width, b.raw_height, b.raw_thickness, a.enable_state, b.pieces,
               b.batch_id,DATE_FORMAT(b.create_time, '%Y-%m-%d %H:%i:%s') as createTime
        FROM shelf_rack AS a
                 LEFT JOIN raw_usage AS b ON a.raw_package_id = b.id
        ]]>
</select>
</mapper>
hangzhoumesParent/moduleService/yiwumes/src/main/resources/mapper/StorageTaskMapper.xml
New file
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mes.storagetask.mapper.StorageTaskMapper">
    <resultMap id="StorageTaskRequest" type="com.mes.storagetask.entity.request.StorageTaskRequest">
        <result property="loadRack" column="load_rack"/>
        <result property="color" column="color"/>
        <result property="taskState" column="task_state"/>
        <result property="shelfRack" column="shelf_rack"/>
        <result property="startTime" column="start_time"/>
        <result property="rawThickness" column="raw_thickness"/>
        <result property="routeGroup" column="route_group"/>
        <result property="id" column="id"  />
        <result property="taskType" column="task_type"/>
    </resultMap>
    <select id="selectTasks" resultMap="StorageTaskRequest">
        <![CDATA[
        SELECT d.*, g.raw_thickness, g.color
        FROM (
                 (SELECT * FROM storage_task AS a WHERE a.task_state = '已完成' ORDER BY a.id DESC LIMIT 1)
                 UNION ALL
                 (SELECT * FROM storage_task AS c WHERE c.task_state = '正在工作')
                 UNION ALL
                 (SELECT * FROM storage_task AS b WHERE b.task_state = '等待中')
             ) AS d
                 LEFT JOIN shelf_rack AS f ON f.id = d.shelf_rack
                 LEFT JOIN raw_usage AS g ON g.id = f.raw_package_id
        ]]>
    </select>
</mapper>
hangzhoumesParent/moduleService/yiwumes/src/test/java/mes/GlassStorageModuleApplicationTest.java
New file
@@ -0,0 +1,79 @@
package mes;
import com.mes.GlassStorageApplication;
import com.mes.rawusage.entity.RawUsage;
import com.mes.rawusage.service.RawUsageService;
import com.mes.shelfrack.entity.ShelfRack;
import com.mes.shelfrack.service.ShelfRackService;
import com.mes.storagetask.entity.StorageTask;
import com.mes.storagetask.service.StorageTaskService;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Arrays;
/**
 * @Author : zhoush
 * @Date: 2024/3/27 16:37
 * @Description:
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = GlassStorageApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class GlassStorageModuleApplicationTest {
    @Autowired
    private StorageTaskService storageTaskService;
    @Autowired
    private ShelfRackService shelfRackService;
    @Autowired
    private RawUsageService rawUsageService;
    @Test
    public void testFindPath() {
        log.info("完整路径:{}", Arrays.asList("123"));
    }
    @Test
    public void testCacheGlass() {
     // storageTaskService.getBaseMapper().selectById(1);
        //StorageTask storageTask=new StorageTask();
//        storageTask.setId(Long.valueOf("1"));
//        storageTask.setTaskState("1");
//      storageTaskService.updateById(storageTask);
//        storageTaskService.getBaseMapper().deleteById(1);
       // storageTaskService.findList(storageTask);
        ///storageTaskService.findLatestTasks();
        storageTaskService.Tasks();
    }
    @Test
    public void selectshelf_rack() {
        shelfRackService.selectshelf_rack();
    }
    @Test
    public void updateRawPackageAndStorageRack() {
        RawUsage raw=new RawUsage();
        raw.setId(null);
        rawUsageService.updateRawPackageAndStorageRack(raw);
    }
}