wangfei
2024-07-22 1e862ae4a11072451fa9b0449f13f48c0d98e91d
Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
18个文件已修改
6 文件已重命名
427 ■■■■ 已修改文件
UI-Project/src/views/ReportWork/reportWork.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/ReportWork/reportWork.vue
@@ -15,7 +15,7 @@
      <el-option label="待报工" value="2"></el-option>
      <el-option label="已报工" value="3"></el-option>
    </el-select>
    <el-select v-model="report.workProcedure" placeholder="清选择工序">
    <el-select v-model="report.workingProcedure" placeholder="清选择工序">
      <el-option label="全部" value="0"></el-option>
      <el-option label="切割" value="1"></el-option>
      <el-option label="磨边" value="2"></el-option>
@@ -25,26 +25,26 @@
    <el-button type="success">报工</el-button>
    <el-table height="100%" ref="table" :data="reportData"
      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
      <el-table-column prop="reportData.line" align="center" label="线路" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="工序" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="玻璃id" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="工程号" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="钢化版图id" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="生产时间" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="备注" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="类型" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="状态" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="流程卡" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="序号" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="层" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="破损类型" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="破损原因" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="责任工序" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="责任人员" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="责任班组" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="责任设备" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="报工班组" min-width="120" />
      <el-table-column prop="reportData.line" align="center" label="报工设备" min-width="120" />
      <el-table-column prop="teamsGroupsName" align="center" label="报工班组" min-width="120" />
      <el-table-column prop="deviceName" align="center" label="报工设备" min-width="120" />
      <el-table-column prop="line" align="center" label="线路" min-width="120" />
      <el-table-column prop="workingProcedure" align="center" label="工序" min-width="120" />
      <el-table-column prop="glassId" align="center" label="玻璃id" min-width="120" />
      <el-table-column prop="engineerId" align="center" label="工程号" min-width="120" />
      <el-table-column prop="temperingLayoutId" align="center" label="钢化版图id" min-width="120" />
      <el-table-column prop="damageTime" align="center" label="生产时间" min-width="120" />
      <el-table-column prop="type" align="center" label="类型" min-width="120" />
      <el-table-column prop="status" align="center" label="状态" min-width="120" />
      <el-table-column prop="processId" align="center" label="流程卡" min-width="120" />
      <el-table-column prop="orderNumber" align="center" label="序号" min-width="120" />
      <el-table-column prop="technologyNumber" align="center" label="层" min-width="120" />
      <el-table-column prop="breakageType" align="center" label="破损类型" min-width="120" />
      <el-table-column prop="breakageReason" align="center" label="破损原因" min-width="120" />
      <el-table-column prop="responsibleProcess" align="center" label="责任工序" min-width="120" />
      <el-table-column prop="responsiblePersonnel" align="center" label="责任人员" min-width="120" />
      <el-table-column prop="responsibleTeam" align="center" label="责任班组" min-width="120" />
      <el-table-column prop="responsibleEquipment" align="center" label="责任设备" min-width="120" />
      <el-table-column prop="remark" align="center" label="备注" min-width="120" />
    </el-table>
  </div>
</template>
@@ -58,23 +58,22 @@
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const report = ref({
  type: '',
  status: '',
  workProcedure: '',
  type: '0',
  status: '0',
  workingProcedure: '0',
});
const reportData = ref([])
const timeRange = ref([new Date(2000, 10, 10), new Date(2200, 10, 11)])
const timeRange = ref(["2022-01-01", "2022-01-01"])
// 查询数据
const selectReportData = async () => {
  console.log(timeRange.value[0])
  const response = await request.post("/loadGlass/damage/selectDamage", {
  const response = await request.post("/cacheVerticalGlass/damage/selectDamage", {
    startTime: timeRange.value[0],
    endTime: timeRange.value[1],
    type: report.value.type,
    status: report.value.status,
    workProcedure: report.value.workProcedure,
    workingProcedure: report.value.workingProcedure
  })
  if (response.code === 200) {
    reportData.value = response.data;
@@ -82,6 +81,14 @@
  } else {
    ElMessage.error(response.message);
  }
  const responses = await request.post("/cacheVerticalGlass/damage/insertDamage", {
    glassId:"P24060403|3|6",
    line:"2001",
    workingProcedure:"冷加工",
    remark:"",
    status:"2"
  })
};
const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`;
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -30,7 +30,7 @@
     * A09出片目标位置  d02卧转立 钢化出片    3001
     * A10出片目标位置  d05卧转立 人工出片    3002
     */
    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3002;
    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001;
    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002;
    /**
@@ -38,12 +38,14 @@
     * 识别后成功状态100
     * 出片任务101
     * 人工下片102
     * 出片中103
     * 拿走200
     * 破损201
     */
    public static final Integer GLASS_STATE_IN = 100;
    public static final Integer GLASS_STATE_OUT = 101;
    public static final Integer GLASS_STATE_ARTIFICIAL = 102;
    public static final Integer GLASS_STATE_OUT_ING = 103;
    public static final Integer GLASS_STATE_TAKE = 200;
    public static final Integer GLASS_STATE_DAMAGE = 201;
@@ -113,6 +115,7 @@
    public static final Integer BIG_STORAGE_OUT_SUCCESS = 3;
    public static final Integer BIG_STORAGE_OUT_ERROR = 4;
    public static final Integer BIG_STORAGE_OUT_DAMAGE = 5;
    public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3);
    /**
     * 卧转立出片请求
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -25,35 +25,47 @@
@Api(description = "报工信息")
@RestController
@RequestMapping("/damage")
@ResponseBody
public class DamageController {
    @Autowired
    private DamageService damageService;
    @ApiOperation("报工数据查询")
    @ResponseBody
    @PostMapping("/selectDamage")
    public Result selectDamage(@RequestBody Map map) {
        String startTime=map.get("startTime").toString();
        String endTime=map.get("endTime").toString();
        int type =Integer.parseInt(map.get("type").toString());
        int status =Integer.parseInt(map.get("status").toString());
        int workingProcedure =Integer.parseInt(map.get("workingProcedure").toString());
//        String startTime , String endTime, int type, int status, int workingProcedure
        String workingProcedure =map.get("workingProcedure").toString();
        return Result.build(200,"查询成功",damageService.selectDamage(startTime,endTime,type,status,workingProcedure));
    }
    @ApiOperation("报工")
    @PostMapping("/submitDamage")
    public Result submitDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
        damageService.submitDamage(startTime,endTime,type,status,workingProcedureId);
    public Result submitDamage(@RequestBody Map map) {
        String startTime=map.get("startTime").toString();
        String endTime=map.get("endTime").toString();
        int type =Integer.parseInt(map.get("type").toString());
        int status =Integer.parseInt(map.get("status").toString());
        String workingProcedure =map.get("workingProcedure").toString();
        damageService.submitDamage(startTime,endTime,type,status,workingProcedure);
        return Result.build(200,"报工成功",1);
    }
    @ApiOperation("报工数据修改")
    @PostMapping("/updateDamage")
    public Result updateDamage(List<Damage> damageList) {
    public Result updateDamage(@RequestBody List<Damage> damageList) {
        damageService.updateBatchById(damageList);
        return Result.build(200,"修改成功",1);
    }
    @ApiOperation("报工数据新增")
    @PostMapping("/insertDamage")
    public Result insertDamage(@RequestBody Damage damage) {
        damageService.insertDamage(damage);
        return Result.build(200,"新增成功",1);
    }
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -17,9 +17,9 @@
 */
public interface DamageService extends IService<Damage> {
    List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedureId);
    List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure);
    void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
    void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure);
    void insertDamage(Damage damage);
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -39,7 +39,7 @@
     * 查询报工信息
     */
    @Override
    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedure){
    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure){
        LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>();
        damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime);
        if (type!=0){
@@ -48,7 +48,7 @@
        if (status!=0){
            damageSelectWrapper.eq(Damage::getStatus,status);
        }
        if(workingProcedure!=0){
        if(!"0".equals(workingProcedure)){
            damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
        }
        return baseMapper.selectList(damageSelectWrapper);
@@ -58,7 +58,7 @@
     * 提交报工
     */
    @Override
    public void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){
    public void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure){
        LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>();
        damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime);
        if (type!=0){
@@ -67,8 +67,8 @@
        if (status!=0){
            damageUpdateWrapper.eq(Damage::getStatus,status);
        }
        if(workingProcedureId!=0){
            damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedureId);
        if(!"0".equals(workingProcedure)){
            damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
        }
        Damage damage=new Damage();
        damage.setStatus(2);
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -103,4 +103,9 @@
    @ApiModelProperty(value = "状态", position = 16)
    private Integer state;
    /**
     * 工程id
     */
    @ApiModelProperty(value = "工程id", position = 17)
    private String engineerId;
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
@@ -1,18 +1,15 @@
package com.mes.work_assignment.controller;
import cn.hutool.core.date.DateTime;
import com.mes.damage.service.DamageService;
import com.mes.utils.Result;
import com.mes.work_assignment.entity.WorkAssignment;
import com.mes.work_assignment.service.WorkAssignmentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * <p>
@@ -35,5 +32,11 @@
        return Result.build(200,"查询成功",workAssignmentService.selectWorkAssignment(line,workingProcedure));
    }
    @ApiOperation("值班数据修改")
    @PostMapping("/updateWorkAssignment")
    public Result updateWorkAssignment(@RequestBody List<WorkAssignment> workAssignmentList) {
        workAssignmentService.saveOrUpdateBatch(workAssignmentList);
        return Result.build(200,"修改成功",1);
    }
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -5,6 +5,7 @@
import cn.hutool.json.JSONObject;
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.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.S7object;
@@ -587,11 +588,9 @@
                log.info("6、添加出片任务是否完成:{}", taskCacheStatus);
            } else {
                log.info("5、非直通任务,将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo);
                LambdaQueryWrapper<EdgStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId());
                EdgStorageCageDetails updateDetail = new EdgStorageCageDetails();
                updateDetail.setState(Const.GLASS_STATE_OUT);
                edgStorageCageDetailsService.update(updateDetail, wrapper);
                LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>();
                wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT);
                edgStorageCageDetailsService.update(wrapper);
                log.info("5、更新出片玻璃的状态为{}", Const.GLASS_STATE_OUT);
                boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -34,7 +34,11 @@
    @PostMapping("/selectBigStorageCageDetails")
    public Result selectBigStorageCageDetails(@RequestBody Map map) {
        List<BigStorageCageDetails> bigStorageCageDetails=bigStorageCageDetailsService.selectBigStorageCageDetails(map.get("glassId").toString());
        return Result.build(200,"查询成功",bigStorageCageDetails);
        if (bigStorageCageDetails.size()>0){
            return Result.build(200,"查询成功",bigStorageCageDetails);
        }else{
            return Result.build(200,"查询失败,无此玻璃id",bigStorageCageDetails);
        }
    }
    @ApiOperation("理片笼详情添加")
@@ -68,10 +72,25 @@
    @ApiOperation("理片笼任务出片")
    @PostMapping("/outBigStorageCageDetails")
    public Result outBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
        bigStorageCageDetailsService.outBigStorageCageDetails(bigStorageCageDetails);
        return Result.build(200,"出片添加成功",1);
    }
    @ApiOperation("指定钢化")
    @PostMapping("/TemperingGlass")
    public Result TemperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
        boolean result=bigStorageCageDetailsService.TemperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(),bigStorageCageDetails.getEngineerId());
        if(result==true){
            return Result.build(200,"指定钢化成功",1);
        }else {
            return Result.build(200, "已存在钢化任务", 1);
        }
    }
    @ApiOperation("钢化查询")
    @PostMapping("/selectTemperingGlass")
    public Result selectTemperingGlass() {
        return Result.build(200,"查询成功",bigStorageCageDetailsService.selectTemperingGlass());
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java
@@ -22,4 +22,9 @@
     * 玻璃数量
     */
    private Integer glassCount;
    /**
     * 笼子号
     */
    private Integer deviceId;
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -8,6 +8,7 @@
import com.mes.glassinfo.entity.GlassInfo;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -64,4 +65,8 @@
     * @return
     */
    List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
    boolean TemperingGlass(String temperingLayoutId, String engineerId);
    List<Map<String, Object>> selectTemperingGlass();
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.bigstorage.entity.BigStorageCage;
@@ -17,6 +18,8 @@
import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.service.DamageService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -53,6 +56,9 @@
    private BigStorageCageService bigStorageCageService;
    @Resource
    private GlassInfoMapper glassInfoMapper;
    @Resource
    private DamageService damageService;
    @Value("${mes.minCount}")
    private int minCount;
@@ -197,14 +203,19 @@
            temperingGlassInfoMapper.updateById(temperingGlassInfo);
        }
        if (status == 0) {
            bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE);
        } else {
            bigStorageCageDetails.setState(Const.GLASS_STATE_DAMAGE);
        } else {
            bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE);
        }
        baseMapper.updateById(bigStorageCageDetails);
        bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot());
        //todo:插入破损数据
        Damage damage = new Damage();
        damage.setGlassId(bigStorageCageDetails.getGlassId());
        damage.setWorkingProcedure("冷加工");
        damage.setRemark("大理片笼破损");
        damage.setStatus(2);
        damageService.insertDamage(damage);
    }
    //查询玻璃信息
@@ -218,10 +229,13 @@
            BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
            bigStorageCageDetails.setState(1);
            bigStorageCageDetails.setGap(glassGap);
            List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
            bigStorageCageDetailsList.add(bigStorageCageDetails);
            return bigStorageCageDetailsList;
        }else{
            return null;
        }
        List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
        bigStorageCageDetailsList.add(bigStorageCageDetails);
        return bigStorageCageDetailsList;
    }
    //理片笼详情添加
@@ -260,7 +274,7 @@
                .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
                .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth())
                .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
                .last("limit 1");
        if (glassInfo.getTemperingLayoutId() == 0) {
            wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
@@ -272,6 +286,7 @@
            bigStorageDTO = new BigStorageDTO();
            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
            bigStorageDTO.setSlot(bigStorageCage.getSlot());
            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
            return bigStorageDTO;
        }
        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
@@ -284,9 +299,26 @@
            bigStorageDTO = new BigStorageDTO();
            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
            bigStorageDTO.setSlot(bigStorageCage.getSlot());
            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
            return bigStorageDTO;
        }
        //todo:获取玻璃的厚度:重新选笼子需要按照笼子可放玻璃厚度进行选择
        //获取玻璃的厚度:重新选笼子需要按照笼子可放玻璃厚度进行选择
        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                .eq(BigStorageCage::getRemainWidth, slotWidth)
                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                .notInSql(BigStorageCage::getDeviceId,
                        "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId())
                .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness())
                .orderByAsc(BigStorageCage::getDeviceId)
                .last("limit 1"));
        if (null != bigStorageCage) {
            bigStorageDTO = new BigStorageDTO();
            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
            bigStorageDTO.setSlot(bigStorageCage.getSlot());
            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
            return bigStorageDTO;
        }
        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                .eq(BigStorageCage::getRemainWidth, slotWidth)
                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
@@ -297,6 +329,7 @@
        bigStorageDTO = new BigStorageDTO();
        bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
        bigStorageDTO.setSlot(bigStorageCage.getSlot());
        bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
        return bigStorageDTO;
    }
@@ -315,4 +348,47 @@
    public List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId) {
        return baseMapper.queryGlassMaxAndMin(engineerId, temperingLayoutId);
    }
    @Override
    public boolean TemperingGlass(String temperingLayoutId, String engineerId){
        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper=new LambdaQueryWrapper<>();
        temperingGlassInfoLambdaQueryWrapper
                .eq(TemperingGlassInfo::getTemperingLayoutId,temperingLayoutId)
                .eq(TemperingGlassInfo::getEngineerId,engineerId);
        List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
        if(temperingGlassInfoList.size()==0){
            LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>();
            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
                    .eq(BigStorageCageDetails::getEngineerId,engineerId)
                    .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL);
            List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(wrapper);
            for (BigStorageCageDetails bigStorageCageDetails:bigStorageCageDetailsList
            ) {
                TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo();
                LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper=new LambdaQueryWrapper<>();
                glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId,bigStorageCageDetails.getGlassId());
                GlassInfo glassInfo=glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper);
                BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
                temperingGlassInfo.setState(Const.TEMPERING_NEW);
                temperingGlassInfo.setSlot(bigStorageCageDetails.getSlot());
                temperingGlassInfoMapper.insert(temperingGlassInfo);
            }
            return true;
        }else{
            return false;
        }
    }
    @Override
    public List<Map<String, Object>> selectTemperingGlass(){
        QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
        wrapper.select("engineer_id,tempering_layout_id,count(*) as count")
                .groupBy("engineer_id,tempering_layout_id");
        List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper);
        return TemperingGlass;
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -18,6 +18,7 @@
import com.mes.temperingglass.service.TemperingGlassInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -48,6 +49,9 @@
    @Resource
    private GlassInfoService glassInfoService;
    @Value("${mes.glassGap}")
    private Integer glassGap;
    //进片逻辑
    @Override
@@ -217,15 +221,13 @@
        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper();
        bigStorageCageDetailsWrapper
                .eq(BigStorageCageDetails::getSlot, slot)
                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL);
                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL);
        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
        for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
        ) {
            double widths = bigStorageCageDetails.getWidth();
            double gap = bigStorageCageDetails.getGap();
            width -= widths + gap;
            width = width - widths - glassGap;
        }
        //修改格子剩余宽度
        BigStorageCage bigStorageCage = new BigStorageCage();
@@ -241,7 +243,7 @@
        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
        wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
                .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL))
                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING))
                        .orderByAsc(BigStorageCage::getDeviceId)
                        .orderByAsc(BigStorageCage::getSlot);
        return bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
@@ -254,7 +256,7 @@
        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
        wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
                .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL));
                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING));
        List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
        Map<Integer, List<BigStorageCage>> listMap = bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId()));
        return listMap;
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -85,6 +85,9 @@
    @Value("${mes.glassGap}")
    private Integer glassGap;
    private String d01GlassId = "";
    private String d04GlassId = "";
    @Scheduled(fixedDelay = 300)
    public void plcToHomeEdgScan() {
        Date startDate = new Date();
@@ -114,11 +117,17 @@
        }
        //按照线路及玻璃id获取相邻两块玻璃 卧转立上的玻璃:  状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, (02玻璃id为空或者卧转立未启动)
        if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
            judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
            if (!d01GlassId.equals(d01Id)) {
                judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
                d01GlassId = d01Id;
            }
        }
//        状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, 卧转立未启动
        if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) {
            judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
            if (!d04GlassId.equals(d04Id)) {
                judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
                d04GlassId = d04Id;
            }
        }
        Date endDate = new Date();
        log.info("大理片笼扫码任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime());
@@ -311,6 +320,32 @@
        }
    }
    @Scheduled(fixedDelay = 300)
    public void updateOutGlassStateTask() {
        Date startDate = new Date();
        log.info("1、大理片笼出片完成后更新大理片笼数据任务开始执行时间:{}", startDate);
        //因为大理片笼和出片任务是两个库的数据,所以要分开查找
        List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>()
                .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING));
        if (CollectionUtils.isNotEmpty(list)) {
            log.info("2、获取所有正在出片的玻璃信息id:{}", list);
            List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList());
            List<Object> outSuccessGlassIdsObj = bigStorageCageOutTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageOutTask>()
                    .select(BigStorageCageOutTask::getGlassId).in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL));
            List<String> outSuccessGlassIds = outSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList());
            if (CollectionUtils.isNotEmpty(outSuccessGlassIds)) {
                log.info("3、获取出片已完成的玻璃信息id:{}", outSuccessGlassIdsObj);
                bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds));
                log.info("4、大理片笼出片状态已完成已完成的玻璃信息id:{}", outSuccessGlassIdsObj);
            }
        }
        Date endDate = new Date();
        log.info("end:大理片笼出片完成后更新大理片笼数据任务结束时间:{},共耗时:{}ms,结束任务", endDate, endDate.getTime() - startDate.getTime());
        return;
    }
    /**
     * 处理破损表任务
     */
@@ -322,7 +357,11 @@
        List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
        if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) {
            log.info("获取进片任务表中破损的玻璃信息{}", inDamageTaskInfoList);
            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
            //理片笼详情表数据状态更新
            bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                    .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
            //将破损信息新增入破损表
            for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) {
                Damage damage = new Damage();
@@ -333,14 +372,21 @@
                damage.setStatus(2);
                damageService.insertDamage(damage);
            }
            log.info("进片任务执行完成");
        }
        //获取出片任务表中状态为破损的数据
        List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
                .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
        if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
            log.info("获取出片任务表中破损的玻璃信息{}", outDamageTaskInfoList);
            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
            List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
            //移除钢化下片表数据
            temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
            //理片笼详情表数据状态更新
            bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                    .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, glassIdList));
            //将破损信息新增入破损表
            for (BigStorageCageOutTask bigStorageCageOutTask : outDamageTaskInfoList) {
                Damage damage = new Damage();
@@ -351,6 +397,7 @@
                damage.setStatus(2);
                damageService.insertDamage(damage);
            }
            log.info("出片任务执行完成");
        }
        Date endDate = new Date();
        log.info("大理片笼破损玻璃清除任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime());
@@ -413,6 +460,7 @@
        //向plc发送进片确认
        if (flag) {
            S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
            log.info("进卧转立发送确认字完成,地址为{}", mesAddress);
        }
        //记录无法放下玻璃,后续判断启动
        return flag;
@@ -490,7 +538,7 @@
            //2、获取目标格子信息
            BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
            //3、更新大理片笼表剩余宽度
            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth())
            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
            //4、更新进片任务表,目标格子及状态(状态改为2 电气扫到自行处理)  遇到问题:无法批量更新,批量更新无法走指定从库
            e.setTargetSlot(bigStorageDTO.getSlot());
@@ -500,6 +548,8 @@
            //5、将进片信息存入大理片笼详情表
            cageDetails.setSlot(bigStorageDTO.getSlot());
            cageDetails.setState(Const.GLASS_STATE_IN);
            cageDetails.setDeviceId(bigStorageDTO.getDeviceId());
            cageDetails.setGap(glassGap);
            bigStorageCageDetailsService.save(cageDetails);
        }
        sendTaskListToPLC(taskList, line);
@@ -546,7 +596,7 @@
        List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
        log.info("将出片玻璃{}玻璃状态改为已出片", glassIds);
        bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
                .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                .in(BigStorageCageDetails::getGlassId, glassIds));
        //更新笼子内格子的剩余尺寸
        updateSlotRemain(list, glassIds);
@@ -591,7 +641,7 @@
        }
        //获取玻璃信息
        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
        return sitToUpRemainWidth.getWidth() < glassInfo.getWidth();
        return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight());
    }
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -37,7 +37,7 @@
             ) T2
                 INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT
                             FROM BIG_STORAGE_CAGE_DETAILS
                             WHERE STATE in (100, 101, 102)
                             WHERE STATE in (100, 101, 102, 103)
                             GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
            AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
            AND T2.COUNT = T3.COUNT
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -38,8 +38,8 @@
    @Autowired
    DamageService damageService;
    @Autowired
    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
//    @Autowired
//    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
    @Test
    public void testInsertSlot() {
@@ -161,4 +161,10 @@
        damage.setStatus(2);
        damageService.insertDamage(damage);
    }
    @Test
    public void updateOutGlassStateTask() {
        plcStorageCageTask.updateOutGlassStateTask();
    }
}
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -66,8 +66,8 @@
        List<OptimizeUpPattenUsage> upPattenUsageList = null;
        if (engineeringId != null) {
            upPattenUsageList = optimizeProjectMapper.selectJoinList(OptimizeUpPattenUsage.class, new MPJQueryWrapper<OptimizeProject>()
                    .select("t.project_no,t.glass_type,b.o_width as width,b.o_height as height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_number")
                    .leftJoin("optimize_detail b on t.project_no=b.project_no")
                    .select("t.project_no,t.glass_type,b.width,b.height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.count")
                    .leftJoin("optimize_layout b on t.project_no=b.project_no")
                    .eq("b.project_no", engineeringId));
        }
        // 创建一个 List 用于保存映射后的实体对象
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -1,25 +1,76 @@
package com.mes.job;
import com.mes.tempering_record.service.TemperingRecordService;
import cn.smallbun.screw.core.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mes.common.S7object;
import com.mes.common.config.Const;
import com.mes.device.PlcParameterObject;
import com.mes.temperingglass.entity.TemperingGlassInfo;
import com.mes.temperingglass.service.TemperingGlassInfoService;
import com.mes.temperingrecord.entity.TemperingRecord;
import com.mes.temperingrecord.service.TemperingRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Author : zhoush
 * @Date: 2024/7/17 12:47
 * @Description:
 */
@Component
@Slf4j
public class TemperingTask {
    @Autowired
    private TemperingRecordService temporalRecordService;
    @Autowired
    private TemperingGlassInfoService temporaryGlassInfoService;
    private static final String ALONE_STATE = "0";
    @Scheduled(fixedDelay = 1000)
    public void temperingGlassBefore() {
        Date startDate = new Date();
        log.info("本次任务开始执行时间:{}", startDate);
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
        String state = plcParameterObject.getPlcParameter("state").getValue();
//        当前连线状态为
        if (ALONE_STATE.equals(state)) {
            log.info("当前钢化炉连线模式为:{},不执行该任务", state);
            return;
        }
        //将确认字置为0
        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0);
        //todo:获取钢化版图中状态为2的(进炉完成的玻璃信息)  且不存在钢化记录表内的
        List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id"));
        List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList());
        List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
                .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList));
        if (CollectionUtils.isEmpty(list)) {
            log.info("当前系统没有需要钢化的玻璃信息");
            return;
        }
        List<Integer> temperingLayoutIdList = list.stream().map(TemperingGlassInfo::getTemperingLayoutId).distinct().collect(Collectors.toList());
        if (CollectionUtils.isNotEmpty(temperRecordIdList)) {
            temperingLayoutIdList.removeAll(temperRecordIdList);
        }
        if (CollectionUtils.isEmpty(temperingLayoutIdList)) {
            log.info("当前玻璃有正在钢化的任务");
        }
//        获取钢化下片表状态为2的玻璃信息
        //完成任务将确认字置为1
        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1);
    }
    @Scheduled(fixedDelay = 1000)
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/controller/TemperingRecordController.java
@@ -1,4 +1,4 @@
package com.mes.tempering_record.controller;
package com.mes.temperingrecord.controller;
import org.springframework.web.bind.annotation.RequestMapping;
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/entity/TemperingRecord.java
@@ -1,4 +1,4 @@
package com.mes.tempering_record.entity;
package com.mes.temperingrecord.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -20,6 +20,10 @@
    private static final long serialVersionUID = 1L;
    /**
     * 工程id
     */
    private String engineerId;
    /**
     * 钢化版图
     */
    private Integer temperingLayoutId;
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/TemperingRecordMapper.java
@@ -1,7 +1,7 @@
package com.mes.tempering_record.mapper;
package com.mes.temperingrecord.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mes.tempering_record.entity.TemperingRecord;
import com.mes.temperingrecord.entity.TemperingRecord;
/**
 * <p>
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/TemperingRecordService.java
@@ -1,7 +1,7 @@
package com.mes.tempering_record.service;
package com.mes.temperingrecord.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mes.tempering_record.entity.TemperingRecord;
import com.mes.temperingrecord.entity.TemperingRecord;
/**
 * <p>
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/impl/TemperingRecordServiceImpl.java
@@ -1,9 +1,9 @@
package com.mes.tempering_record.service.impl;
package com.mes.temperingrecord.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.tempering_record.entity.TemperingRecord;
import com.mes.tempering_record.mapper.TemperingRecordMapper;
import com.mes.tempering_record.service.TemperingRecordService;
import com.mes.temperingrecord.entity.TemperingRecord;
import com.mes.temperingrecord.mapper.TemperingRecordMapper;
import com.mes.temperingrecord.service.TemperingRecordService;
import org.springframework.stereotype.Service;
/**