package com.mes.engineering.controller; import com.mes.damage.entity.Damage; import com.mes.damage.entity.request.DamageRequest; import com.mes.damage.service.DamageService; import com.mes.engineerScheduling.entity.EngineerScheduling; import com.mes.engineerScheduling.service.EngineerSchedulingService; import com.mes.engineering.entity.Engineering; import com.mes.engineering.service.EngineeringService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.pp.service.OptimizeProjectService; import com.mes.uppattenusage.entity.UpPattenUsage; import com.mes.uppattenusage.service.UpPattenUsageService; import com.mes.utils.Result; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** *

* 前端控制器 *

* * @author wu * @since 2024-04-22 */ @RestController @Slf4j @RequestMapping("/engineering/engineering") public class EngineeringController { @Autowired private EngineeringService engineeringService; @Autowired private UpPattenUsageService upPattenUsageService; @Autowired private GlassInfoService glassInfoService; @Autowired private OptimizeProjectService optimizeProjectService; @Autowired DamageService damageService; @Autowired EngineerSchedulingService engineerSchedulingService; @ApiOperation("开始/暂停任务/传递工程号和状态,开始是1 暂停是0") @PostMapping("/pauseTask") //暂停上片任务 @ResponseBody public Result> pauseTask(@RequestBody Engineering engineering) { boolean work = engineeringService.changeTask(engineering.getEngineerId(), engineering.getState()); List glass = upPattenUsageService.prioritylist(); if (work) { return Result.build(200, "成功", glass); } else { return Result.build(100, "失败", glass); } } @ApiOperation("暂停") @PostMapping("/pause") //暂停上片任务 @ResponseBody public Result> pause(@RequestBody Engineering engineering) { boolean work = engineeringService.pauseTask(engineering.getEngineerId(), engineering.getState()); // List glass = upPattenUsageService.prioritylist();String message; if (work) { return Result.build(200, "成功", null); } else { return Result.build(100, "失敗", null); } } @ApiOperation("开始上片") @PostMapping("/changeTask") //调用上片任务 @ResponseBody public synchronized Result changeTask(@RequestBody Engineering engineering) { try { //获取排产顺序,不是当前正在上片的工程号直接返回失败 暂时注释,等待排产功能正式上线 // List engineerScheduling = engineerSchedulingService.queryByType(1); // if (!engineerScheduling.get(0).getProjectNo().equals(engineering.getEngineerId())) { // return Result.build(100, "请根据当前排产顺序选择工程号,排产首位为:" + engineerScheduling.get(0).getProjectNo(), false); // } log.info("engineeringId:{}", engineering); UpPattenUsage upPattenUsage = upPattenUsageService.selectedEngineering(engineering.getEngineerId()); Engineering engineerings = engineeringService.selectUpInitiate(engineering.getEngineerId()); GlassInfo glassInfos = engineeringService.selectGlassinfoIsnull(engineering.getEngineerId()); if (upPattenUsage != null && engineerings != null && glassInfos != null) { boolean work = engineeringService.changeTasks(engineering); List glass = upPattenUsageService.prioritylist(); optimizeProjectService.changeTask(engineering.getEngineerId(), 200); return Result.build(200, "开始上片", work); } else if (upPattenUsage == null && engineerings == null && glassInfos == null) { List upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId()); log.info("将查询出的UpPattenUsage数据保存到数据库表里"); upPattenUsageService.saveUpPattenUsage(upPattenUsages); log.info("从PP表查询glassinfo的数据并保存到表里"); List glassinfo = glassInfoService.selectGlassInfo(engineering); glassInfoService.saveGlassInfo(glassinfo); log.info("从PP表查询engineering的数据并保存到表里"); List listEngineering = engineeringService.selectEngineering(engineering.getEngineerId()); engineeringService.saveEngineering(listEngineering); //将engineering表状态为正在上片 boolean work = engineeringService.changeTasks(engineering); optimizeProjectService.changeTask(engineering.getEngineerId(), 200); log.info("更改pp表状态为已领取"); if (work) { return Result.build(200, "保存成功" + engineering.getEngineerId(), true); } else { return Result.build(200, "保存失败" + engineering.getEngineerId(), false); } } else { upPattenUsageService.deleteTask(engineering.getEngineerId()); engineeringService.deleteTask(engineering.getEngineerId()); // glassInfoService.deleteTask(engineering.getEngineerId()); return Result.build(200, "请重新点击上片" + engineering.getEngineerId(), true); } } catch (Exception e) { log.info("异常信息:{}", e); log.error("异常信息:{}", e); // upPattenUsageService.deleteTask(engineering.getEngineerId()); // engineeringService.deleteTask(engineering.getEngineerId()); // glassInfoService.deleteTask(engineering.getEngineerId()); return Result.build(200, "保存失败" + engineering.getEngineerId(), false); } } @ApiOperation("删除工程上片") @PostMapping("/deleteTask") //调用上片任务 @ResponseBody public Result> deleteTask(@RequestBody Engineering engineering) { //删除工程表、小片表、上片表,更改优化表状态 // boolean work=engineeringService.deleteTask(engineering.getEngineerId()); // glassInfoService.deleteTask(engineering.getEngineerId()); // upPattenUsageService.deleteTask(engineering.getEngineerId()); // optimizeProjectService.changeTask(engineering.getEngineerId(), 100); //暂停工程 - > 改为删除工程 engineeringService.deleteTask(engineering.getEngineerId()); //查询未上片的小片信息 List glasslist = glassInfoService.selectEdgGlassInfo(engineering.getEngineerId()); return Result.build(200, "删除成功" + engineering.getEngineerId(), glasslist); } @ApiOperation("查询可以上片的工程号") @GetMapping("/selectTask") //调用上片任务 @ResponseBody public Result> selectTask() { List engineering = engineeringService.selectTask(); log.info("可领取任务返回:{}", engineering); return Result.build(200, "", engineering); } @ApiOperation("//上片破损拿走") @PostMapping("/insetDamage") //上片破损拿走 public Result updateTemperingState(@RequestBody Damage damage) { damageService.insertDamage(damage); return Result.build(200, "操作成功", null); } @ApiOperation("识别操作: 破损/拿走 参数(ID,功能[9:拿走,8:破损])") @PostMapping("/identControls") public Result identControls(@RequestBody @Validated DamageRequest request) { return Result.build(200, "成功", upPattenUsageService.identControls(request)); } }