| 2025-11-17 | ZengTao | ![]() |
| 2025-11-17 | ZengTao | ![]() |
| 2025-11-16 | zhoushihao | ![]() |
| 2025-11-15 | zhoushihao | ![]() |
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/dto/DamageDTO.java
New file @@ -0,0 +1,29 @@ package com.mes.damage.entity.dto; import com.mes.damage.entity.Damage; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author wu * @since 2024-06-25 */ @Data @EqualsAndHashCode(callSuper = false) public class DamageDTO extends Damage { /** * 宽 */ private Integer width; /** * 宽 */ private Integer height; } hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/ProcessCardReport.java
New file @@ -0,0 +1,89 @@ package com.mes.order.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; /** * <p> * * </p> * * @author wu * @since 2024-06-17 */ @Data @EqualsAndHashCode(callSuper = false) public class ProcessCardReport implements Serializable { private static final long serialVersionUID = 1L; /** * <订单表> */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 订单Id */ private String orderId; /** * 流程卡号 */ private String processId; /** * 订单序号 */ private Integer orderNumber; /** * 层号 */ private Integer technologyNumber; /** * 工艺 */ private String process; /** * 累计报工数 */ private Integer reportWorkNumCount; /** * 报工数 */ private Integer reportWorkNum; /** * 破损数量 */ private Integer brokenNum; /** * 创建时间 */ private Data createTime; /** * 最后一次报工时间 */ private Data updateTime; /** * 流程卡数量 */ private Integer quantity; /** * 缺片数量 */ private Integer lackQuantity; } hangzhoumesParent/common/servicebase/src/main/resources/mapper/DamageMapper.xml
New file @@ -0,0 +1,48 @@ <?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.damage.mapper.DamageMapper"> <select id="queryUnTempByFlowCardId" resultType="com.mes.damage.entity.Damage"> SELECT glass_id, order_number, technology_number, working_procedure FROM ( SELECT glass_id, order_number, technology_number, working_procedure, ROW_NUMBER() OVER ( PARTITION BY glass_id ORDER BY damage_time DESC ) AS rn FROM damage WHERE process_id = #{flowCardId} AND glass_id NOT IN ( SELECT DISTINCT glass_id FROM damage WHERE process_id = #{flowCardId} AND working_procedure = "钢化" ) ) t WHERE rn = 1; </select> <select id="selectDamageList" resultType="com.mes.damage.entity.dto.DamageDTO"> SELECT t.*,t1.width,t1.height FROM damage t left join glass_info t1 on t.glass_id=t1.glass_id <where> damage_time BETWEEN #{startTime} AND #{endTime} <if test="type != null and type != 0"> AND t.type = #{type} </if> <if test="status != null and status != 0"> AND t.status = #{status} </if> <if test="workingProcedure != null"> AND t.working_procedure = #{workingProcedure} </if> </where> </select> </mapper> hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -3,7 +3,6 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer; @@ -415,6 +414,8 @@ LambdaQueryWrapper<BigStorageCage> queryWrapper = new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .le(BigStorageCage::getMinThickness, info.getThickness()) .ge(BigStorageCage::getMaxThickness, info.getThickness()) .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot) .last("limit 1"); @@ -593,6 +594,7 @@ .eq(BigStorageCage::getEnableState, Const.SLOT_ON)); //定义10个格子为阈值 if (count <= 10) { log.info("笼子超过阈值,执行4号笼子调度逻辑"); //获取序号为1的格子 将格子内的所有玻璃送到对应的笼子 BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) @@ -600,15 +602,18 @@ .in(BigStorageCage::getDeviceId, Arrays.asList(5, 6)) .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot) .last("limit 1")); list = bigStorageCageDetailsService.queryNeedDispatch(); computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task", bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH); List<Integer> slotList = new ArrayList<>(); slotList.add(bigStorageCage.getSlot()); slotList.add(list.get(0).getSlot()); updateSlotRemainBySlots(slotList); return; if (null != bigStorageCage) { list = bigStorageCageDetailsService.queryNeedDispatch(); if (CollectionUtil.isNotEmpty(list)) { computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task", bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH); List<Integer> slotList = new ArrayList<>(); slotList.add(bigStorageCage.getSlot()); slotList.add(list.get(0).getSlot()); updateSlotRemainBySlots(slotList); return; } } } //生成调度任务按照组号组序由1开始依次往5号笼子送小片 BigStorageSlotDTO slotDTO = bigStorageCageDetailsService.queryNeedDispatchSlotBySequence(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -308,7 +308,7 @@ FROM big_storage_cage_details WHERE STATE = 100 AND SLOT = (SELECT SLOT FROM big_storage_cage_details WHERE STATE = 100 AND sequence = 1 order by slot desc LIMIT 1) (SELECT SLOT FROM big_storage_cage_details WHERE STATE = 100 AND sequence = 1 AND device_id = 4 order by slot desc LIMIT 1) ORDER BY tempering_feed_sequence </select>