Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject
# Conflicts:
# UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
| | |
| | | @click="showDialog(rect.glassId)" |
| | | :style="{ position: 'absolute', |
| | | top: `${rect.y}px`, left: `${rect.x}px`, width: `${rect.width}px`, height: `${rect.height}px`, |
| | | backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.state) |
| | | backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.status) |
| | | }" |
| | | > |
| | | <div class="centered-text"> |
| | |
| | | </div> |
| | | </el-scrollbar> |
| | | <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose"> |
| | | <el-button :disabled="currentGlassRect?.state === 8 || currentGlassRect?.state === 9" type="warning" |
| | | <el-button :disabled="currentGlassRect?.status === 8 || currentGlassRect?.status === 9" type="warning" |
| | | plain :icon="Delete" @click="handleDamage(currentGlassId)" style="width: 140px;margin-left: 10px;"> |
| | | {{ $t('order.dilapidation') }} |
| | | </el-button> |
| | | <el-button :disabled="currentGlassRect?.state === 9 || currentGlassRect?.state === 8" type="danger" |
| | | <el-button :disabled="currentGlassRect?.status === 9 || currentGlassRect?.status === 8" type="danger" |
| | | plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;"> |
| | | <el-icon class="el-icon--right"> |
| | | <Upload/> |
| | |
| | | const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { |
| | | glassId: currentGlassId.value, |
| | | line: 4001, |
| | | state: 8, |
| | | status: 8, |
| | | workingProcedure: '钢化', |
| | | }) |
| | | if (response.code == 200) { |
| | |
| | | const response = await request.post('/temperingGlass/temperingGlassInfo/updateTemperingState', { |
| | | glassId: currentGlassId.value, |
| | | line: 4001, |
| | | state: 9, |
| | | status: 9, |
| | | workingProcedure: '钢化', |
| | | }) |
| | | if (response.code == 200) { |
| | |
| | | adjustedRects.value = adjustedRectsData; |
| | | } |
| | | }; |
| | | function getRectColor(state: number): string { |
| | | switch (state) { |
| | | function getRectColor(status: number): string { |
| | | switch (status) { |
| | | case -1: |
| | | return '#CDAF95'; |
| | | case 0: |
| | |
| | | function updateRectStatus(glassId: string, status: number) { |
| | | adjustedRects.value.forEach(rect => { |
| | | if (rect.glassId === glassId) { |
| | | rect.state = status; // 更新矩形的状态 |
| | | rect.status = status; // 更新矩形的状态 |
| | | } |
| | | }); |
| | | } |
| | |
| | | const diaodu = ref('') |
| | | const flowCardId = ref('') |
| | | const filmsId = ref('') |
| | | const adjustedRects = ref([]); |
| | | const project = ref([]); |
| | | const adjust = ref([]); |
| | | const adjusta = ref([]); |
| | | const adjustedRects = ref([]); |
| | | const adjustedRectsa = ref([]); |
| | | const adjustedRectsb = ref([]); |
| | | const adjustedRectsc = ref([]); |
| | | const subRectsCounts = ref([]); |
| | | const subRectsCountsa = ref([]); |
| | | const subRectsCountsb = ref([]); |
| | | const subRectsCountsc = ref([]); |
| | | const currentRow = reactive({}); // 当前行的数据 |
| | | const currentPage2 = ref(1) |
| | | const inputValuesa = reactive({}); |
| | |
| | | ganghua.value = '' |
| | | } |
| | | if(data.bigStorageCageInfos!=null){ |
| | | window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length) |
| | | let length = window.localStorage.getItem('length') |
| | | adjustedRects.value = data.bigStorageCageInfos[0][1].map(rect => ({ |
| | | ...rect, |
| | | height: 20/length, |
| | | top: 29/length |
| | | })); |
| | | adjustedRectsa.value = data.bigStorageCageInfos[0][2].map(rect => ({ |
| | | ...rect, |
| | | height: 20/length, |
| | | top: 29/length |
| | | })); |
| | | adjustedRectsb.value = data.bigStorageCageInfos[0][3].map(rect => ({ |
| | | ...rect, |
| | | height: 20/length, |
| | | top: 29/length |
| | | })); |
| | | adjustedRectsc.value = data.bigStorageCageInfos[0][4].map(rect => ({ |
| | | ...rect, |
| | | height: 20/length, |
| | | top: 29/length |
| | | })); |
| | | adjustedRects.value = data.bigStorageCageInfos[0][1].map((rect, index) => ({ |
| | | id: index + 1, |
| | | height: 20/55, |
| | | top: 53/55, |
| | | })); |
| | | subRectsCounts.value = data.bigStorageCageInfos[0][1].map(rect => rect.count); |
| | | adjustedRectsa.value = data.bigStorageCageInfos[0][2].map((rect, index) => ({ |
| | | id: index + 1, |
| | | height: 20/55, |
| | | top: 53/55, |
| | | })); |
| | | subRectsCountsa.value = data.bigStorageCageInfos[0][2].map(rect => rect.count); |
| | | adjustedRectsb.value = data.bigStorageCageInfos[0][3].map((rect, index) => ({ |
| | | id: index + 1, |
| | | height: 20/55, |
| | | top: 53/55, |
| | | })); |
| | | subRectsCountsb.value = data.bigStorageCageInfos[0][3].map(rect => rect.count); |
| | | adjustedRectsc.value = data.bigStorageCageInfos[0][4].map((rect, index) => ({ |
| | | id: index + 1, |
| | | height: 20/55, |
| | | top: 53/55, |
| | | })); |
| | | subRectsCountsc.value = data.bigStorageCageInfos[0][4].map(rect => rect.count); |
| | | }else{ |
| | | adjustedRects.value = '' |
| | | adjustedRects.value = '', |
| | | adjustedRectsa.value = '', |
| | | adjustedRectsb.value = '', |
| | | adjustedRectsc.value = '' |
| | | } |
| | | }; |
| | | // 计算每个大矩形的样式 |
| | | const rectStyle = (rect, index) => ({ |
| | | position: 'absolute', |
| | | width: '170px', |
| | | left: '0px', |
| | | top: `${index*rect.top}px`, |
| | | height: `${rect.height}px`, |
| | | }); |
| | | // 计算每个小矩形的样式和数量 |
| | | const getSubRects = (rectIndex) => { |
| | | const count = subRectsCounts.value[rectIndex]; |
| | | const subRects = []; |
| | | for (let i = 0; i < count; i++) { |
| | | subRects.push({}); |
| | | } |
| | | return subRects; |
| | | }; |
| | | // 计算每个小矩形的样式 |
| | | const subRectStyle = (rectIndex, subIndex) => { |
| | | const width = '18px'; |
| | | const marginLeft = '8px'; |
| | | const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft)); |
| | | const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`; |
| | | return { |
| | | position: 'absolute', |
| | | width, |
| | | height: '100%', |
| | | marginLeft, |
| | | top: '0px', |
| | | backgroundColor: '#911005', |
| | | left, |
| | | }; |
| | | }; |
| | | // 计算每个大矩形的样式 |
| | | const rectStylea = (rect, index) => ({ |
| | | position: 'absolute', |
| | | width: '170px', |
| | | left: '0px', |
| | | top: `${index*rect.top}px`, |
| | | height: `${rect.height}px`, |
| | | }); |
| | | // 计算每个小矩形的样式和数量 |
| | | const getSubRectsa = (rectIndex) => { |
| | | const count = subRectsCountsa.value[rectIndex]; |
| | | const subRects = []; |
| | | for (let i = 0; i < count; i++) { |
| | | subRects.push({}); |
| | | } |
| | | return subRects; |
| | | }; |
| | | // 计算每个小矩形的样式 |
| | | const subRectStylea = (rectIndex, subIndex) => { |
| | | const width = '18px'; |
| | | const marginLeft = '8px'; |
| | | const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft)); |
| | | const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`; |
| | | return { |
| | | position: 'absolute', |
| | | width, |
| | | height: '100%', |
| | | marginLeft, |
| | | top: '0px', |
| | | backgroundColor: '#911005', |
| | | left, |
| | | }; |
| | | }; |
| | | // 计算每个大矩形的样式 |
| | | const rectStyleb = (rect, index) => ({ |
| | | position: 'absolute', |
| | | width: '170px', |
| | | left: '0px', |
| | | top: `${index*rect.top}px`, |
| | | height: `${rect.height}px`, |
| | | }); |
| | | // 计算每个小矩形的样式和数量 |
| | | const getSubRectsb = (rectIndex) => { |
| | | const count = subRectsCountsb.value[rectIndex]; |
| | | const subRects = []; |
| | | for (let i = 0; i < count; i++) { |
| | | subRects.push({}); |
| | | } |
| | | return subRects; |
| | | }; |
| | | // 计算每个小矩形的样式 |
| | | const subRectStyleb = (rectIndex, subIndex) => { |
| | | const width = '18px'; |
| | | const marginLeft = '8px'; |
| | | const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft)); |
| | | const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`; |
| | | return { |
| | | position: 'absolute', |
| | | width, |
| | | height: '100%', |
| | | marginLeft, |
| | | top: '0px', |
| | | backgroundColor: '#911005', |
| | | left, |
| | | }; |
| | | }; |
| | | // 计算每个大矩形的样式 |
| | | const rectStylec = (rect, index) => ({ |
| | | position: 'absolute', |
| | | width: '170px', |
| | | left: '0px', |
| | | top: `${index*rect.top}px`, |
| | | height: `${rect.height}px`, |
| | | }); |
| | | // 计算每个小矩形的样式和数量 |
| | | const getSubRectsc = (rectIndex) => { |
| | | const count = subRectsCountsc.value[rectIndex]; |
| | | const subRects = []; |
| | | for (let i = 0; i < count; i++) { |
| | | subRects.push({}); |
| | | } |
| | | return subRects; |
| | | }; |
| | | // 计算每个小矩形的样式 |
| | | const subRectStylec = (rectIndex, subIndex) => { |
| | | const width = '18px'; |
| | | const marginLeft = '8px'; |
| | | const totalWidth = 6 * (parseInt(width) + parseInt(marginLeft)); |
| | | const left = `${(subIndex * (parseInt(width) + parseInt(marginLeft))) / totalWidth * 100}%`; |
| | | return { |
| | | position: 'absolute', |
| | | width, |
| | | height: '100%', |
| | | marginLeft, |
| | | top: '0px', |
| | | backgroundColor: '#911005', |
| | | left, |
| | | }; |
| | | }; |
| | | onMounted(() => { |
| | | socket = initializeWebSocket(socketUrl, handleMessage); |
| | |
| | | </div> |
| | | <div style="position: relative;"> |
| | | <div v-show="cell1" style="width: 170px;height: 53px;position: relative;top:63px;left: 585px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRects" |
| | | :key="rect" |
| | | :style="{ |
| | | position: 'absolute', |
| | | width: '200px', |
| | | left: '0px', |
| | | top: index*rect.top+`px`, |
| | | height: `${rect.height}px`, |
| | | }" |
| | | > |
| | | <div |
| | | v-for="(rects, index) in rect.bigStorageCageDetails" |
| | | :key="rects" |
| | | :style="{ |
| | | float:'left', |
| | | width: '18px', |
| | | height: `${rect.height}px`, |
| | | backgroundColor: '#911005', |
| | | top: '0px', |
| | | marginRight: rects.gap/5000*227+'px' |
| | | }" |
| | | > |
| | | </div> |
| | | <div v-for="(rect, rectIndex) in adjustedRects" :key="rect.id" :style="rectStyle(rect, rectIndex)"> |
| | | <div |
| | | v-for="(subRect, subIndex) in getSubRects(rectIndex)" |
| | | :key="subIndex" |
| | | :style="subRectStyle(rectIndex, subIndex)" |
| | | ></div> |
| | | </div> |
| | | </div> |
| | | <div v-show="cell2" style="width: 170px;height: 53px;position: relative;top:67px;left: 585px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRectsa" |
| | | :key="rect.id" |
| | | :style="{ |
| | | position: 'absolute', |
| | | width: '227px', |
| | | left: '0px', |
| | | top: index*rect.top+`px`, |
| | | height: `${rect.height}px`, |
| | | }" |
| | | > |
| | | <div |
| | | v-for="(rects, index) in rect.bigStorageCageDetails" |
| | | :key="rects" |
| | | :style="{ |
| | | float:'left', |
| | | width: '18px', |
| | | height: `${rect.height}px`, |
| | | backgroundColor: '#911005', |
| | | top: '0px', |
| | | marginRight: rects.gap/5000*227+'px' |
| | | }" |
| | | > |
| | | </div> |
| | | <div v-for="(rect, rectIndex) in adjustedRectsa" :key="rect.id" :style="rectStylea(rect, rectIndex)"> |
| | | <div |
| | | v-for="(subRect, subIndex) in getSubRectsa(rectIndex)" |
| | | :key="subIndex" |
| | | :style="subRectStylea(rectIndex, subIndex)" |
| | | ></div> |
| | | </div> |
| | | </div> |
| | | <div v-show="cell3" style="width: 170px;height: 53px;position: relative;top:72px;left: 585px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRectsb" |
| | | :key="rect.id" |
| | | :style="{ |
| | | position: 'absolute', |
| | | width: '227px', |
| | | left: '0px', |
| | | top: index*rect.top+`px`, |
| | | height: `${rect.height}px`, |
| | | }" |
| | | > |
| | | <div |
| | | v-for="(rects, index) in rect.bigStorageCageDetails" |
| | | :key="rects" |
| | | :style="{ |
| | | float:'left', |
| | | width: '18px', |
| | | height: `${rect.height}px`, |
| | | backgroundColor: '#911005', |
| | | top: '0px', |
| | | marginRight: rects.gap/5000*227+'px' |
| | | }" |
| | | > |
| | | </div> |
| | | <div v-for="(rect, rectIndex) in adjustedRectsb" :key="rect.id" :style="rectStyleb(rect, rectIndex)"> |
| | | <div |
| | | v-for="(subRect, subIndex) in getSubRectsb(rectIndex)" |
| | | :key="subIndex" |
| | | :style="subRectStyleb(rectIndex, subIndex)" |
| | | ></div> |
| | | </div> |
| | | </div> |
| | | <div v-show="cell4" style="width: 170px;height: 53px;position: relative;top:77px;left: 585px;"> |
| | | <div |
| | | v-for="(rect, index) in adjustedRectsc" |
| | | :key="rect.id" |
| | | :style="{ |
| | | position: 'absolute', |
| | | width: '227px', |
| | | left: '0px', |
| | | top: index*rect.top+`px`, |
| | | height: `${rect.height}px`, |
| | | }" |
| | | > |
| | | <div |
| | | v-for="(rects, index) in rect.bigStorageCageDetails" |
| | | :key="rects" |
| | | :style="{ |
| | | float:'left', |
| | | width: '18px', |
| | | height: `${rect.height}px`, |
| | | backgroundColor: '#911005', |
| | | top: '0px', |
| | | marginRight: rects.gap/5000*227+'px' |
| | | }" |
| | | > |
| | | </div> |
| | | <div v-for="(rect, rectIndex) in adjustedRectsc" :key="rect.id" :style="rectStylec(rect, rectIndex)"> |
| | | <div |
| | | v-for="(subRect, subIndex) in getSubRectsc(rectIndex)" |
| | | :key="subIndex" |
| | | :style="subRectStylec(rectIndex, subIndex)" |
| | | ></div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | * 大理片笼任务类型 |
| | | * 1、钢化前进片 |
| | | * 2、钢化前出片 |
| | | * 3、钢化后进片 |
| | | * 4、钢化后出片 |
| | | * 4、钢化后进片 |
| | | * 5、钢化后出片 |
| | | */ |
| | | public static final Integer BIG_STORAGE_BEFORE_IN = 1; |
| | | public static final Integer BIG_STORAGE_BEFORE_OUT = 2; |
| | |
| | | WorkAssignmentMapper workAssignmentMapper; |
| | | |
| | | |
| | | private final static String ERP_URL = "http://192.168.2.100:8086"; |
| | | private final static String ERP_URL = "http://192.168.2.100:8086"; |
| | | // private final static String ERP_URL = "http://10.153.19.174:8086"; |
| | | |
| | | |
| | |
| | | log.info("报工数据reportingWork:{},reportingWorkDetails:{}", reportingWork, reportingWorkDetails); |
| | | try { |
| | | // 目标系统的API URL |
| | | |
| | | |
| | | String url1 = ERP_URL + "/reportingWork/mesReportingWork"; |
| | | String url2 = ERP_URL + "/reportingWork/mesSaveReportingWorkWorn"; |
| | | String url; |
| | |
| | | } |
| | | URL obj = new URL(url); |
| | | HttpURLConnection con = (HttpURLConnection) obj.openConnection(); |
| | | |
| | | // 设置请求方法和请求头 |
| | | con.setRequestMethod("POST"); |
| | | con.setRequestProperty("Content-Type", "application/json; utf-8"); |
| | |
| | | |
| | | // 创建 JSON 对象 |
| | | JSONObject result = new JSONObject(); |
| | | |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | // 将 ReportingWork 转换为 JSONObject |
| | | |
| | | // 将 ReportingWorkDetail 列表转换为 JSONArray |
| | |
| | | result.put("qualityInsStatus", 0); |
| | | // 将 result 对象转换为字符串 |
| | | String jsonInputString = result.toString(); |
| | | System.out.println("jsonInputString : " + result); |
| | | log.info("jsonInputString :{} ", result); |
| | | // 发送请求 |
| | | try (OutputStream os = con.getOutputStream()) { |
| | | byte[] input = jsonInputString.getBytes("utf-8"); |
| | |
| | | |
| | | // 获取响应码 |
| | | int responseCode = con.getResponseCode(); |
| | | System.out.println("Response Code : " + responseCode); |
| | | log.info("Response Code :{} ", responseCode); |
| | | |
| | | // 获取响应内容 |
| | | try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) { |
| | |
| | | * 除膜方式 |
| | | */ |
| | | private Integer filmRemove; |
| | | /** |
| | | * 状态 |
| | | */ |
| | | private Integer status; |
| | | |
| | | |
| | | } |
| | |
| | | /** |
| | | * 栅格号 |
| | | */ |
| | | private String slot; |
| | | private Integer slot; |
| | | /** |
| | | * 设备id |
| | | */ |
| | |
| | | */ |
| | | String patternWarehousing(RawGlassRequest request); |
| | | |
| | | String UpdateQuantity(RawGlassRequest request); |
| | | String updateQuantity(RawGlassRequest request); |
| | | |
| | | String deleteWarehousing(Long slotId); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public String UpdateQuantity(RawGlassRequest request) { |
| | | public String updateQuantity(RawGlassRequest request) { |
| | | RawGlassStorageDetails one = getOne(new LambdaQueryWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, request.getSlot()) |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)); |
| | | if (null == one) { |
| | | RawGlassStorageDetails details = new RawGlassStorageDetails(); |
| | | BeanUtils.copyProperties(request, details); |
| | | details.setState(Const.RAW_GLASS_STATE_IN); |
| | | details.setShelf(request.getSlot()); |
| | | save(details); |
| | | }else{ |
| | | } else { |
| | | update( |
| | | new LambdaUpdateWrapper<RawGlassStorageDetails>() |
| | | .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity()) |
| | |
| | | .set(RawGlassStorageDetails::getPatternThickness, request.getPatternThickness()) |
| | | .set(RawGlassStorageDetails::getFilmsId, request.getFilmsId()) |
| | | .eq(RawGlassStorageDetails::getSlot, request.getSlot()) |
| | | .eq(RawGlassStorageDetails::getSlot, Const.RAW_GLASS_STATE_IN)); |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)); |
| | | } |
| | | return "success"; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.github.yulichang.base.MPJBaseServiceImpl; |
| | | import com.github.yulichang.query.MPJQueryWrapper; |
| | | import com.mes.glassinfo.entity.GlassInfo; |
| | | import com.mes.glassinfo.mapper.GlassInfoMapper; |
| | | import com.mes.temperingglass.entity.TemperingGlassInfo; |
| | |
| | | |
| | | @Override |
| | | public List<GlassInfo> selectTemperingGlass(GlassInfo glassInfo) { |
| | | QueryWrapper<GlassInfo> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("engineer_id", glassInfo.getEngineerId()) |
| | | .eq("tempering_layout_id", glassInfo.getTemperingLayoutId()) |
| | | .select("engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,glass_id"); |
| | | return glassInfoMapper.selectList(wrapper); |
| | | List<GlassInfo> glassInfos = null; |
| | | glassInfos = glassInfoMapper.selectJoinList(GlassInfo.class, new MPJQueryWrapper<GlassInfo>() |
| | | .select("IFNULL(b.status, 0) AS status,engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,t.glass_id,t.flow_card_id") |
| | | .leftJoin("(SELECT glass_id, MAX(status) AS status FROM damage GROUP BY glass_id) b\n" + |
| | | "ON t.glass_id = b.glass_id") |
| | | .eq("engineer_id", glassInfo.getEngineerId()) |
| | | .eq("tempering_layout_id", glassInfo.getTemperingLayoutId())); |
| | | return glassInfos; |
| | | // QueryWrapper<GlassInfo> wrapper = new QueryWrapper<>(); |
| | | // wrapper.eq("engineer_id", glassInfo.getEngineerId()) |
| | | // .eq("tempering_layout_id", glassInfo.getTemperingLayoutId()) |
| | | // .select("engineer_id,tempering_layout_id,width,height,tempering_feed_sequence,x_coordinate,y_coordinate,angle,glass_id"); |
| | | // return glassInfoMapper.selectList(wrapper); |
| | | } |
| | | } |
| | |
| | | return Boolean.FALSE; |
| | | } |
| | | |
| | | |
| | | List<RawGlassStorageDetails> loadStationList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>() |
| | | .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1") |
| | | .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) |
| | |
| | | 200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.patternWarehousing(request)); |
| | | } |
| | | |
| | | @ApiOperation("更新剩余数量") |
| | | @PostMapping("/updateQuantity") |
| | | public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) { |
| | | return Result.success(rawGlassStorageDetailsService.updateQuantity(request)); |
| | | } |
| | | |
| | | @ApiOperation("删除原片") |
| | | @PostMapping("/deleteWarehousing") |
| | | public Result<Object> deleteWarehousing(Long slotId) { |
| | | return Result.success(rawGlassStorageDetailsService.deleteWarehousing(slotId)); |
| | | } |
| | | |
| | | @ApiOperation("原片出库") |
| | | @PostMapping("/outWarehousing") |
| | |
| | | return Result.build(200, "查询成功", rawGlassStorageDetailsService.patternUsage(width, height, thickness, films)); |
| | | } |
| | | |
| | | @ApiOperation("更新剩余数量") |
| | | @PostMapping("/updateQuantity") |
| | | public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) { |
| | | return Result.success(rawGlassStorageDetailsService.UpdateQuantity(request)); |
| | | } |
| | | @ApiOperation("删除原片") |
| | | @PostMapping("/deleteWarehousing") |
| | | public Result<Object> deleteWarehousing(@RequestBody Long slotId) { |
| | | return Result.success(rawGlassStorageDetailsService.deleteWarehousing(slotId)); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | | mes: |
| | | width: 2800 |
| | | height: 5000 |
| | | height: 5000 |
| | | kangaroohy: |
| | | milo: |
| | | enabled: false |
| | | primary: default |
| | | config: |
| | | default: |
| | | endpoint: opc.tcp://10.153.19.150:49320 |
| | | security-policy: basic256sha256 |
| | | username: admin |
| | | password: 1qaz2wsx3edc4rfv |
| | |
| | | import com.mes.hollow.entity.dto.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * (HollowBigStorageCageDetails)表服务接口 |
| | |
| | | |
| | | List<HollowBigStorageCageDetails> queryOutGlassList(String flowCardId, int cell); |
| | | |
| | | List<BigStorageVO> queryHollowbigStorageCageDetail(); |
| | | Map<Integer, List<BigStorageVO>> queryHollowbigStorageCageDetail(); |
| | | |
| | | /** |
| | | * 取出每组玻璃占用笼子的格子并计算格子内的最大组序号 |
| | |
| | | import javax.annotation.Resource; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * (HollowBigStorageCageDetails)表服务实现类 |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<BigStorageVO> queryHollowbigStorageCageDetail() { |
| | | return baseMapper.queryHollowbigStorageCageDetail(); |
| | | public Map<Integer, List<BigStorageVO>> queryHollowbigStorageCageDetail() { |
| | | List<BigStorageVO> bigStorageCages = baseMapper.queryHollowbigStorageCageDetail(); |
| | | return bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId())); |
| | | } |
| | | |
| | | @Override |
| | |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | ); |
| | | } |
| | | if (null == hollowGlassOutRelationInfo) { |
| | | cell = 930; |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .eq(HollowGlassOutRelationInfo::getCell, cell) |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | ); |
| | | } |
| | | |
| | | if (null == hollowGlassOutRelationInfo) { |
| | | cell = 931; |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .eq(HollowGlassOutRelationInfo::getCell, cell) |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | ); |
| | | } |
| | | |
| | | if (null != hollowGlassOutRelationInfo) { |
| | | //是否允许中空 |
| | |
| | | log.info("计算玻璃数量过程中出现错误,错误信息{}", e.getMessage()); |
| | | } |
| | | |
| | | // hollowGlassOutRelationInfoService.update |
| | | // 重置任务表数据 |
| | | bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); |
| | | |
| | |
| | | t.quantity, |
| | | t1.child_width, |
| | | t1.child_height |
| | | |
| | | from pp.flow_card t |
| | | LEFT JOIN sd.order_glass_detail t1 |
| | | on t.order_id = t1.order_id |