ZengTao
2025-10-14 74be79541a69a064305ae1d5554d47cedab9f642
1、补充丢失的开始任务方法
4个文件已修改
104 ■■■■■ 已修改文件
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -7,6 +7,7 @@
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -108,4 +109,9 @@
     */
    @TableField(exist = false)
    private Integer filmRemove;
    /**
     * 当天日期
     */
    private Date createTime;
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -93,6 +93,12 @@
            return Result.build(100, "查询失败", null);
        }
    }
    @ApiOperation("添加任务")
    @PostMapping("/insertTask")
    public Result insertTask(Integer quantity, Integer slot) {
        return Result.build(100, "添加成功", upPattenUsageService.insertTask(quantity, slot));
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -89,5 +89,6 @@
      */
     String identControls(DamageRequest request);
    Boolean insertTask(Integer quantity, Integer slot);
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -4,15 +4,19 @@
import com.baomidou.dynamic.datasource.annotation.DS;
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.conditions.update.UpdateWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.request.DamageRequest;
import com.mes.damage.service.DamageService;
import com.mes.engineering.entity.Engineering;
import com.mes.engineering.service.EngineeringService;
import com.mes.pp.entity.OptimizeProject;
import com.mes.pp.mapper.OptimizeProjectMapper;
import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
@@ -22,8 +26,14 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * <p>
@@ -45,6 +55,9 @@
    DamageService damageService;
    @Autowired
    RedisUtil redisUtil;
    @Resource
    RawGlassStorageDetailsService rawGlassStorageDetailsService;
    @Override
    public List<UpPattenUsage> prioritylist() {
        //获取正在上片的任务id
@@ -168,7 +181,6 @@
    }
    @Override
    public UpPattenUsage selectOverTask() {
        QueryWrapper<UpPattenUsage>wrapper = new QueryWrapper<>();
@@ -229,4 +241,81 @@
        damageService.autoSubmitReport(request.getGlassId(), request.getLine(), request.getWorkingProcedure(), "上片机", request.getState());
        return "success";
    }
    @Override
    public Boolean insertTask(Integer quantity, Integer slot) {
        engineeringService.update(
                new LambdaUpdateWrapper<Engineering>()
                        .eq(Engineering::getState, Const.ENGINEERING_RUNNING)
                        .set(Engineering::getState, Const.ENGINEERING_SUCCESS)
        );
        Calendar calendar = Calendar.getInstance();
        // 当天 00:00:00
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        Date todayStart = calendar.getTime();
        // 当天 23:59:59
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        Date todayEnd = calendar.getTime();
        // 2. 构建查询条件:状态为“运行中” + 时间在当天范围内
        Integer count = engineeringService.count(
                new LambdaQueryWrapper<Engineering>()
                        .eq(Engineering::getState, Const.ENGINEERING_RUNNING) // 原状态条件
                        // 核心:createTime 大于等于当天开始,小于等于当天结束
                        .ge(Engineering::getCreateTime, todayStart)
                        .le(Engineering::getCreateTime, todayEnd)
        );
        RawGlassStorageDetails rawGlassStorageDetails = rawGlassStorageDetailsService.getOne(
                new LambdaQueryWrapper<RawGlassStorageDetails>()
                        .eq(RawGlassStorageDetails::getSlot, slot)
                        .eq(RawGlassStorageDetails::getState, 100)
        );
        String engineerId = generateSingleProjectNo(count);
        Engineering engineering = new Engineering();
        engineering.setEngineerId(engineerId);
        engineering.setEngineerName(rawGlassStorageDetails.getFilmsId());
        engineering.setState(5);
        engineering.setPlanPatternTotal(slot);
        engineering.setFilmsId(rawGlassStorageDetails.getFilmsId());
        engineeringService.save(engineering);
        for (int i = 1; i <= quantity; i++) {
            UpPattenUsage saveDetails = new UpPattenUsage();
            saveDetails.setEngineeringId(engineerId);
            saveDetails.setFilmsId(rawGlassStorageDetails.getFilmsId());
            saveDetails.setWidth(rawGlassStorageDetails.getPatternWidth());
            saveDetails.setHeight(rawGlassStorageDetails.getPatternHeight());
            saveDetails.setThickness(rawGlassStorageDetails.getPatternThickness());
            saveDetails.setLayoutSequence(i);
            saveDetails.setState(0);
            this.save(saveDetails);
        }
        return Boolean.TRUE;
    }
    private static String generateSingleProjectNo(int currentCount) {
        // 1. 固定前缀 "P"
        final String PREFIX = "P";
        // 2. 格式化当前日期为「年2位+月2位+日2位」(如2025-05-08 → "250508")
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyMMdd");
        String dateStr = LocalDate.now().format(dateFormatter);
        // 3. 计算新序号(已有数量+1),并处理“小于10补0”
        int newSequence = currentCount + 1;
        // 关键:%02d 表示固定2位数字,不足则补0(1→"01",9→"09",10→"10")
        String formattedSequence = String.format("%02d", newSequence);
        // 4. 拼接工程号(前缀+日期+补0后的序号)
        return PREFIX + dateStr + formattedSequence;
    }
}