1、卧理不同界面报破损功能优化
2、大理片笼新增按照钢化版图查询笼内玻璃信息
File was renamed from hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java |
| | |
| | | package com.mes.edgglasstask.entity.request; |
| | | package com.mes.damage.entity.request; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | |
| | | * @Description: |
| | | */ |
| | | @Data |
| | | public class IdentWornRequest { |
| | | public class DamageRequest { |
| | | |
| | | @ApiModelProperty("玻璃ID") |
| | | @NotBlank(message = "玻璃ID不能为空") |
| | | private String glassId; |
| | | |
| | | @ApiModelProperty("状态 8 破损 9 拿走") |
| | | @NotNull(message = "状态不能为空") |
| | | private int state; |
| | | |
| | | @ApiModelProperty("线路") |
| | | @NotNull(message = "线路不能为空") |
| | | private int line; |
| | | |
| | | @NotBlank(message = "工序不能为空") |
| | | private String workingProcedure; |
| | | |
| | | @ApiModelProperty("备注") |
| | | private String remark; |
| | | } |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.BufferedReader; |
| | |
| | | GlassInfoMapper glassInfoMapper; |
| | | @Resource |
| | | WorkAssignmentMapper workAssignmentMapper; |
| | | |
| | | @Resource |
| | | RestTemplate restTemplate; |
| | | |
| | | |
| | | /** |
| | |
| | | return sendToERP(reportingWork, reportingWorkDetails); |
| | | } |
| | | |
| | | @Override |
| | | public void autoSubmitReport(String glassId, int deviceId, String workingProcedure, String remark,int type) { |
| | | Damage damage = new Damage(); |
| | | damage.setGlassId(glassId); |
| | | damage.setWorkingProcedure(workingProcedure); |
| | | damage.setLine(deviceId); |
| | | damage.setType(type); |
| | | damage.setRemark(remark); |
| | | damage.setStatus(0); |
| | | this.insertDamage(damage); |
| | | } |
| | | /** |
| | | * 添加报工信息 |
| | | */ |
| | |
| | | log.info("报工数据reportingWork:{},reportingWorkDetails:{}", reportingWork, reportingWorkDetails); |
| | | try { |
| | | // 目标系统的API URL |
| | | String url = "http://192.168.1.199:8086/reportingWork/mesSaveReportingWorkWorn"; |
| | | String url = "http://192.168.2.100:8086/reportingWork/mesSaveReportingWorkWorn"; |
| | | URL obj = new URL(url); |
| | | HttpURLConnection con = (HttpURLConnection) obj.openConnection(); |
| | | |
| | | // 设置请求方法和请求头 |
| | | con.setRequestMethod("POST"); |
| | | con.setRequestProperty("Content-Type", "application/json; utf-8"); |
| | | con.setRequestProperty("Accept", "application/json"); |
| | | con.setDoOutput(true); |
| | | |
| | | // 创建 JSON 对象 |
| | | JSONObject result = new JSONObject(); |
| | | |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | // 将 ReportingWork 转换为 JSONObject |
| | | JSONObject reportingWorkJson = new JSONObject(objectMapper.writeValueAsString(reportingWork)); |
| | | reportingWorkJson.put("reportingWorkTime", reportingWork.getReportingWorkTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); |
| | | // 将 ReportingWorkDetail 列表转换为 JSONArray |
| | | JSONArray detailsJsonArray = new JSONArray(objectMapper.writeValueAsString(reportingWorkDetails)); |
| | | |
| | | // 将 JSON 对象和数组添加到结果对象中 |
| | | result.put("title", reportingWorkJson); |
| | | result.put("detail", detailsJsonArray); |
| | | result.put("type", 0); |
| | | result.put("userId", "admin"); |
| | | result.put("userName", "admin"); |
| | | result.put("qualityInsStatus", 0); |
| | | |
| | | // 将 result 对象转换为字符串 |
| | | String jsonInputString = result.toString(); |
| | | System.out.println("jsonInputString : " + result); |
| | | // 发送请求 |
| | | try (OutputStream os = con.getOutputStream()) { |
| | | byte[] input = jsonInputString.getBytes("utf-8"); |
| | | os.write(input, 0, input.length); |
| | | } |
| | | |
| | | // 获取响应码 |
| | | int responseCode = con.getResponseCode(); |
| | | System.out.println("Response Code : " + responseCode); |
| | | |
| | | // 获取响应内容 |
| | | try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) { |
| | | StringBuilder response = new StringBuilder(); |
| | | String inputLine; |
| | | while ((inputLine = in.readLine()) != null) { |
| | | response.append(inputLine); |
| | | } |
| | | // 解析响应内容 |
| | | JSONObject jsonResponse = new JSONObject(response.toString()); |
| | | |
| | | // 提取 code 和 message |
| | | int code = jsonResponse.getInt("code"); |
| | | String message = jsonResponse.getStr("data"); |
| | | log.info("报工失败:{},{}", code, message); |
| | | if (code == 200 && message.equals("true")) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public Boolean sendToERPRest(ReportingWork reportingWork, List<ReportingWorkDetail> reportingWorkDetails) { |
| | | log.info("报工数据reportingWork:{},reportingWorkDetails:{}", reportingWork, reportingWorkDetails); |
| | | try { |
| | | // 目标系统的API URL |
| | | String url = "http://192.168.2.100:8086/reportingWork/mesSaveReportingWorkWorn"; |
| | | URL obj = new URL(url); |
| | | HttpURLConnection con = (HttpURLConnection) obj.openConnection(); |
| | | |
| | |
| | | package com.mes.edgstoragecage.controller; |
| | | |
| | | import com.mes.edgglasstask.entity.request.IdentWornRequest; |
| | | import com.mes.damage.entity.request.DamageRequest; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCage; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCageDetails; |
| | | import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | return Result.build(200, "【清除/更换/绑定】" + isSucess, 1); |
| | | } |
| | | |
| | | @ApiOperation("磨边模块汇报玻璃状态 功能:对笼内栅格玻璃进行【破损/拿走】 ") |
| | | @ApiOperation("磨边模块汇报玻璃状态 功能:对磨边队列玻璃进行【破损/拿走】 ") |
| | | @PostMapping("/edgReportStatus") |
| | | public Result edgReportStatus(@RequestBody @Validated IdentWornRequest request) { |
| | | public Result edgReportStatus(@RequestBody @Validated DamageRequest request) { |
| | | return Result.build(200, "【破损/拿走】" + edgStorageCageDetailsService.edgReportStatus(request), 1); |
| | | } |
| | | |
| | |
| | | package com.mes.edgstoragecage.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.mes.damage.entity.request.DamageRequest; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCageDetails; |
| | | import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; |
| | | import com.mes.utils.Result; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | * @author zhoush |
| | | * @since 2024-04-07 |
| | | */ |
| | | @Api(tags = "理片笼详情") |
| | | @RestController |
| | | @RequestMapping("/edgStorageCageDetails") |
| | | public class EdgStorageCageDetailsController { |
| | | |
| | | @Resource |
| | | EdgStorageCageDetailsService edgStorageCageDetailsService; |
| | | @ApiOperation("卧理详情功能:对卧理玻璃进行【破损/拿走】") |
| | | @PostMapping("/edgDetailsOperate") |
| | | public Result edgDetailsOperate(@RequestBody @Validated DamageRequest request) { |
| | | return Result.build(200, "【破损/拿走】" + edgStorageCageDetailsService.edgDetailsOperate(request), 1); |
| | | } |
| | | |
| | | @ApiOperation("卧理详情功能:对卧理玻璃进行【删除操作】") |
| | | @PostMapping("/removeEdgDetails") |
| | | public Result removeEdgDetails(String glassId) { |
| | | return Result.build(200, "【破损/拿走】" + |
| | | edgStorageCageDetailsService.remove(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId,glassId)), 1); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | package com.mes.edgstoragecage.service; |
| | | |
| | | import com.github.yulichang.base.MPJBaseService; |
| | | import com.mes.edgglasstask.entity.request.IdentWornRequest; |
| | | import com.mes.damage.entity.request.DamageRequest; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCageDetails; |
| | | import com.mes.edgstoragecage.entity.vo.CutDrawingVO; |
| | | |
| | |
| | | */ |
| | | public interface EdgStorageCageDetailsService extends MPJBaseService<EdgStorageCageDetails> { |
| | | |
| | | // boolean identWorn(Map<String, Object> arguments); |
| | | |
| | | /** |
| | | * 按照设备及线路,获取当前线路正在切割的版图信息 |
| | | * @param deviceId |
| | |
| | | */ |
| | | List<CutDrawingVO> queryCurrentCutDrawing(int deviceId, int stationCell); |
| | | |
| | | /** |
| | | * 按照工程id及版序获取切割版图 默认版序为1 |
| | | * @param engineerId |
| | | * @param patternSequence |
| | | * @return |
| | | */ |
| | | Map<String, Object> queryCutDrawingByEngineerId(String engineerId, int patternSequence); |
| | | |
| | | /** |
| | |
| | | * @param request |
| | | * @return |
| | | */ |
| | | String identControls(IdentWornRequest request); |
| | | String identControls(DamageRequest request); |
| | | |
| | | /** |
| | | * 磨边模块汇报玻璃状态 功能:对笼内栅格玻璃进行【破损/拿走】 |
| | |
| | | * @param request |
| | | * @return |
| | | */ |
| | | String edgReportStatus(IdentWornRequest request); |
| | | String edgReportStatus(DamageRequest request); |
| | | |
| | | /** |
| | | * 进片 扫码ID验证重复 |
| | |
| | | * @return |
| | | */ |
| | | EdgStorageCageDetails queryEdgStorageDetailsBySize(int deviceId, int currentSlot, double width, double height); |
| | | |
| | | String edgDetailsOperate(DamageRequest request); |
| | | } |
| | |
| | | import com.mes.damage.mapper.DamageMapper; |
| | | import com.mes.damage.service.DamageService; |
| | | import com.mes.edgglasstask.entity.EdgGlassTaskInfo; |
| | | import com.mes.edgglasstask.entity.request.IdentWornRequest; |
| | | import com.mes.damage.entity.request.DamageRequest; |
| | | import com.mes.edgglasstask.service.EdgGlassTaskInfoService; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCage; |
| | | import com.mes.edgstoragecage.entity.EdgStorageCageDetails; |
| | |
| | | import com.mes.taskcache.service.TaskCacheService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | TaskCacheService taskCacheService; |
| | | |
| | | @Resource |
| | | DamageMapper damageMapper; |
| | | |
| | | @Autowired |
| | | DamageService damageService; |
| | |
| | | return outEdgStorageCageDetails; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String identControls(IdentWornRequest request) { |
| | | public String identControls(DamageRequest request) { |
| | | //将识别破损的玻璃直接加入破损表 |
| | | Damage damage = new Damage(); |
| | | BeanUtils.copyProperties(request, damage); |
| | | damage.setType(request.getState()); |
| | | damage.setRemark(""); |
| | | damage.setStatus(0); |
| | | damageService.insertDamage(damage); |
| | | damageService.autoSubmitReport(request.getGlassId(), request.getLine(), request.getWorkingProcedure(), "掰片识别", request.getState()); |
| | | return "success"; |
| | | } |
| | | |
| | | @Override |
| | | public String edgReportStatus(IdentWornRequest request) { |
| | | public String edgReportStatus(DamageRequest request) { |
| | | //将磨边队列破损的玻璃直接加入破损表 |
| | | Damage damage = new Damage(); |
| | | BeanUtils.copyProperties(request, damage); |
| | | damage.setType(request.getState()); |
| | | damage.setRemark(""); |
| | | damage.setStatus(0); |
| | | damageService.insertDamage(damage); |
| | | damageService.autoSubmitReport(request.getGlassId(), request.getLine(), request.getWorkingProcedure(), "磨边清洗", request.getState()); |
| | | |
| | | //修改磨边队列数据状态 |
| | | edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() |
| | | .set(EdgGlassTaskInfo::getState, request.getState()).eq(EdgGlassTaskInfo::getGlassId, request.getGlassId())); |
| | |
| | | //说明此玻璃没有进过理片 |
| | | return true; |
| | | } else { |
| | | List<Damage> damage = damageMapper.selectList(new LambdaQueryWrapper<Damage>() |
| | | List<Damage> damage = damageService.list(new LambdaQueryWrapper<Damage>() |
| | | .eq(Damage::getGlassId, glassId) |
| | | .and(wrapper -> wrapper.eq(Damage::getType, 8).or().eq(Damage::getType, 9)) |
| | | ); |
| | |
| | | public EdgStorageCageDetails queryEdgStorageDetailsBySize(int deviceId, int currentSlot, double width, double height) { |
| | | return baseMapper.queryEdgStorageDetailsBySize(deviceId, currentSlot, width, height); |
| | | } |
| | | |
| | | @Override |
| | | public String edgDetailsOperate(DamageRequest request) { |
| | | //卧式理片笼爆破损 |
| | | damageService.autoSubmitReport(request.getGlassId(), request.getLine(), request.getWorkingProcedure(), "卧式理片笼", request.getState()); |
| | | this.remove(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId,request.getGlassId())); |
| | | return "success"; |
| | | } |
| | | } |
| | |
| | | public List<EdgStorageCageVO> selectEdgStorageCagesByDeviceId(int deviceId) { |
| | | List<EdgStorageCageVO> storageCageVOS = this.selectJoinList(EdgStorageCageVO.class, new MPJLambdaWrapper<EdgStorageCage>() |
| | | .selectAll(EdgStorageCage.class) |
| | | .selectCollection(EdgStorageCageDetails.class,EdgStorageCageVO::getDetails) |
| | | .selectCollection(EdgStorageCageDetails.class, EdgStorageCageVO::getDetails) |
| | | .leftJoin(EdgStorageCageDetails.class, on -> on |
| | | .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId) |
| | | .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot) |
| | | .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)) |
| | | .eq(EdgStorageCage::getDeviceId, deviceId)); |
| | | .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId) |
| | | .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot) |
| | | .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)) |
| | | .eq(EdgStorageCage::getDeviceId, deviceId) |
| | | .orderByAsc(EdgStorageCage::getSlot) |
| | | .orderByAsc(EdgStorageCageDetails::getId) |
| | | ); |
| | | return storageCageVOS; |
| | | } |
| | | |
| | |
| | | .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); |
| | | //如果任务类型为1,3,将切割完成的玻璃自动报工 |
| | | if (Const.GLASS_CACHE_TYPE_IN_ALL.contains(taskHistory.getTaskType())) { |
| | | damageService.autoSubmitReport(taskHistory.getGlassIdIn(), taskHistory.getDeviceId(),"切割","进卧理"); |
| | | damageService.autoSubmitReport(taskHistory.getGlassIdIn(), taskHistory.getDeviceId(),"切割","进卧理",1); |
| | | } |
| | | updateCellRemainWidth(cell, device, taskHistory); |
| | | edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() |
| | |
| | | package com.mes.taskcache.controller; |
| | | |
| | | import com.mes.edgglasstask.entity.request.IdentWornRequest; |
| | | import com.mes.damage.entity.request.DamageRequest; |
| | | import com.mes.edgstoragecage.entity.vo.CutDrawingVO; |
| | | import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; |
| | | import com.mes.taskcache.service.TaskCacheService; |
| | |
| | | |
| | | @ApiOperation("识别操作: 破损/拿走 参数(ID,功能[9:拿走,8:破损])") |
| | | @PostMapping("/identControls") |
| | | public Result<String> identControls(@RequestBody @Validated IdentWornRequest request) { |
| | | public Result<String> identControls(@RequestBody @Validated DamageRequest request) { |
| | | return Result.build(200, "成功", edgStorageCageDetailsService.identControls(request)); |
| | | } |
| | | |
| | |
| | | return Result.build(200, "删除成功", bigStorageCageService.querybigStorageCageDetail()); |
| | | } |
| | | |
| | | @ApiOperation("理片笼任务破损0/拿走1") |
| | | @ApiOperation("理片笼笼内玻璃破损0/拿走1") |
| | | @PostMapping("/damageBigStorageCageDetails") |
| | | public Result damageBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails, int status) { |
| | | bigStorageCageDetailsService.damageBigStorageCageDetails(bigStorageCageDetails.getGlassId(), status); |
| | |
| | | return Result.build(200, "查询成功", bigStorageCageDetailsService.selectTemperingGlass(isTempering)); |
| | | } |
| | | |
| | | @ApiOperation("笼内实际数量查询") |
| | | @PostMapping("/queryRealGlassInfo") |
| | | public Result<List<BigStorageCageDetails>> queryRealGlassInfo(@RequestBody BigStorageQueryVO bigStorageQueryVO) { |
| | | return Result.build(200, "查询成功", bigStorageCageDetailsService.queryRealGlassInfo(bigStorageQueryVO)); |
| | | } |
| | | @ApiOperation("缺片数量查询") |
| | | @PostMapping("/queryLackGlassInfo") |
| | | public Result<List<GlassInfoLackDTO>> queryLackGlassInfo(@RequestBody BigStorageQueryVO bigStorageQueryVO) { |
| | |
| | | } |
| | | @ApiOperation("大理片笼报破损") |
| | | @PostMapping("/bigStorageGlassDamageByGlassId") |
| | | |
| | | public Result<String> bigStorageGlassDamageByGlassId(@RequestBody Map<String, String> map) { |
| | | String glassId=map.get("glassId"); |
| | | return Result.build(200, "报破损成功", bigStorageCageDetailsService.bigStorageGlassDamageByGlassId(glassId)); |
| | |
| | | * @param slotList |
| | | */ |
| | | void updateDeviceIdBySlot(List<Integer> slotList); |
| | | |
| | | /** |
| | | * 按照工程信息及钢化id(炉号)获取实际笼内的玻璃信息 |
| | | * @param bigStorageQueryVO |
| | | * @return |
| | | */ |
| | | List<BigStorageCageDetails> queryRealGlassInfo(BigStorageQueryVO bigStorageQueryVO); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<BigStorageCageDetails> queryRealGlassInfo(BigStorageQueryVO bigStorageQueryVO) { |
| | | return this.list(new LambdaQueryWrapper<BigStorageCageDetails>() |
| | | .eq(BigStorageCageDetails::getEngineerId,bigStorageQueryVO.getEngineerId()) |
| | | .eq(BigStorageCageDetails::getTemperingLayoutId,bigStorageQueryVO.getTemperingLayoutId()) |
| | | .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN_ALL)); |
| | | } |
| | | |
| | | @Override |
| | | public String temperingSwitch(Boolean flag) { |
| | | redisUtil.setCacheObject("temperingSwitch", flag); |
| | | return "success"; |
| | |
| | | .set(EdgGlassTaskInfo::getState, Const.EDG_GLASS_SUCCESS).in(EdgGlassTaskInfo::getGlassId, glassIdList)); |
| | | //报工 |
| | | for (String glass : glassIdList) { |
| | | damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "磨边", "进大理片笼"); |
| | | damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "磨边", "进大理片笼",1); |
| | | } |
| | | |
| | | Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); |
| | |
| | | //报工 |
| | | log.info("将接收到的玻璃进行钢化自动报工,玻璃id有:{}", glassIdList); |
| | | for (String glass : glassIdList) { |
| | | damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "钢化", "进中空理片笼"); |
| | | damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "钢化", "进中空理片笼", 1); |
| | | } |
| | | Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); |
| | | |