hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -75,6 +75,12 @@ List<DamagePrint> damage2=damageService.selectDamagePrintDetails(damage); return Result.build(200,"查询成功",damage2); } @ApiOperation("自动报工") @PostMapping("/autoSubmitReport") public Result autoSubmitReport(String glassId, int deviceId, String workingProcedure, String remark, int type) { damageService.autoSubmitReport(glassId,deviceId,workingProcedure,remark,type); return Result.build(200,"查询成功",""); } } hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -19,6 +19,7 @@ import com.mes.work_assignment.entity.WorkAssignment; import com.mes.work_assignment.mapper.WorkAssignmentMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -96,7 +97,12 @@ reportingWork.setOrderId(damages.get(0).getProcessId().substring(0, 10)); reportingWork.setProductionId(damages.get(0).getProcessId().substring(0, 11)); reportingWork.setProcessId(damages.get(0).getProcessId() + "/" + damages.get(0).getTechnologyNumber()); // reportingWork.setDeviceName(damages.get(0).getDeviceName()); if (StringUtils.isBlank(damages.get(0).getDeviceName())){ reportingWork.setDeviceName("auto"); }else{ reportingWork.setDeviceName(damages.get(0).getDeviceName()); } reportingWork.setThisProcess(damages.get(0).getWorkingProcedure()); reportingWork.setThisCompletedQuantity(0); reportingWork.setThisWornQuantity(0); @@ -148,9 +154,12 @@ reportingWork.setOrderId(damage.getProcessId().substring(0, 10)); reportingWork.setProductionId(damage.getProcessId().substring(0, 11)); reportingWork.setProcessId(damage.getProcessId() + "/" + damage.getTechnologyNumber()); if (StringUtils.isBlank(damage.getDeviceName())){ reportingWork.setDeviceName("auto"); }else{ reportingWork.setDeviceName(damage.getDeviceName()); } reportingWork.setThisProcess(damage.getWorkingProcedure()); // reportingWork.setNextProcess("磨边"); reportingWork.setThisCompletedQuantity(1); reportingWork.setThisWornQuantity(0); reportingWork.setClasses("早班"); @@ -307,7 +316,8 @@ log.info("报工数据reportingWork:{},reportingWorkDetails:{}", reportingWork, reportingWorkDetails); try { // 目标系统的API URL String url = ERP_URL + "/reportingWork/mesReportingWork"; // String url = ERP_URL + "/reportingWork/mesReportingWork"; String url = ERP_URL + "/reportingWork/mesSaveReportingWorkWorn"; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/ReportingWork.java
@@ -2,12 +2,12 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> @@ -32,7 +32,7 @@ /** * 报工编号 */ private String reportingWorkId; private String reportingWorkId = ""; /** * 销售单号 @@ -54,10 +54,10 @@ */ private String thisProcess; /** * 设备编号 */ private byte[] deviceId; // /** // * 设备编号 // */ // private byte[] deviceId; /** * 设备名称 @@ -67,12 +67,12 @@ /** * 上工序 */ private String previousProcess; // private String previousProcess; /** * 上工序数量 */ private Integer previousProcessQuantity; // private Integer previousProcessQuantity; /** * 本工序数量 @@ -112,32 +112,32 @@ /** * 报工状态 */ private Integer reportingWorkState; // private Integer reportingWorkState; /** * 审核人 */ private String reviewed; // private String reviewed; /** * 审核状态(默认0,审核通过1,不通过2,小于0删除) */ private Integer reviewedState; // private Integer reviewedState; /** * 备注 */ private String notes; // private String notes; /** * 质检员 */ private String qualityInspector; // private String qualityInspector; /** * 包装方式 */ private String packagingMethod; // private String packagingMethod; /** * 报工时间 @@ -147,12 +147,12 @@ /** * 审核时间 */ private LocalDateTime examineTime; // private LocalDateTime examineTime; /** * 质检时间 */ private LocalDateTime qualityInsTime; // private LocalDateTime qualityInsTime; /** * 创建者id hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -141,6 +141,11 @@ return; } log.info("获取任务的玻璃id:{}", glassIdList); ReadWriteEntity countEntity = miloService.readFromOpcUa("DLP1A.DLP1A.glassCount"); if (null == countEntity.getValue() || Integer.parseInt(countEntity.getValue() + "") != glassIdList.size()) { log.info("当前大车进片玻璃数量{}与mes读取到的数量{}不匹配,结束进片任务", countEntity.getValue(), glassIdList.size()); return; } Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting())); for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) { if (entry.getValue() > 1) { @@ -532,7 +537,7 @@ bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_OUT); } else { bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN); //todo:按照格子信息更新对应的设备id //按照格子信息更新对应的设备id List<Integer> slotList = storageCageDTOList.stream().map(UpdateBigStorageCageDTO::getTargetSlot).distinct().collect(Collectors.toList()); bigStorageCageDetailsService.updateDeviceIdBySlot(slotList); hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/entity/HollowFormulaDetails.java
@@ -51,12 +51,30 @@ private String casThree; @ApiModelProperty(value = "气体4(0无 1有) 930专用") private String casFour; @ApiModelProperty(value = "间隔框类型(tps胶为05 铝间隔条01) 930专用") private String intervalFrameType; @ApiModelProperty(value = "间隔框宽度 930专用") private String intervalFrameWidth; @ApiModelProperty(value = "间隔框高度 930专用") private String intervalFrameHeight; @ApiModelProperty(value = "间隔框类型1(tps胶为05 铝间隔条01) 930专用") private String intervalFrameTypeOne; @ApiModelProperty(value = "间隔框宽度1 930专用") private String intervalFrameWidthOne; @ApiModelProperty(value = "间隔框高度1 930专用") private String intervalFrameHeightOne; @ApiModelProperty(value = "间隔框类型2(tps胶为05 铝间隔条01) 930专用") private String intervalFrameTypeTwo; @ApiModelProperty(value = "间隔框宽度2 930专用") private String intervalFrameWidthTwo; @ApiModelProperty(value = "间隔框高度2 930专用") private String intervalFrameHeightTwo; @ApiModelProperty(value = "间隔框类型3(tps胶为05 铝间隔条01) 930专用") private String intervalFrameTypeThree; @ApiModelProperty(value = "间隔框宽度3 930专用") private String intervalFrameWidthThree; @ApiModelProperty(value = "间隔框高度3 930专用") private String intervalFrameHeightThree; @ApiModelProperty(value = "间隔框类型4(tps胶为05 铝间隔条01) 930专用") private String intervalFrameTypeFour; @ApiModelProperty(value = "间隔框宽度4 930专用") private String intervalFrameWidthFour; @ApiModelProperty(value = "间隔框高度4 930专用") private String intervalFrameHeightFour; /** * 创建时间 */ hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/entity/dto/LisecHollowFrameDetails.java
@@ -10,6 +10,13 @@ @Data public class LisecHollowFrameDetails { public LisecHollowFrameDetails(String recType, String type, String width, String height) { this.recType = recType; this.type = type; this.width = width; this.height = height; } private String recType; //项目数量指数(如果所有记录相同,则为0) 用0填充即可 private String itemInx = "0"; hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/mapper/HollowBigStorageCageDetailsMapper.java
@@ -32,5 +32,7 @@ List<BigStorageVO> queryHollowbigStorageCageDetail(); List<HollowBigStorageCageDetails> querySlotMaxSequence(@Param("flowCardId") String flowCardId, @Param("totalLayer") Integer totalLayer, @Param("layer") Integer layer, @Param("virtualSlot") Integer virtualSlot); void updateDeviceIdBySlot(@Param("list") List<Integer> slotList); } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/HollowBigStorageCageDetailsService.java
@@ -44,5 +44,7 @@ List<HollowBigStorageAndDetailsDTO> deleteHollowBigStorageCageDetails(String glassId, Integer deviceId, Integer slot); List<HollowBigStorageAndDetailsDTO> damageHollowBigStorageCageDetails(String glassId, Integer deviceId, Integer slot, int state); void updateDeviceIdBySlot(List<Integer> slotList); } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowBigStorageCageDetailsServiceImpl.java
@@ -119,6 +119,11 @@ return hollowBigStorageCageDetailsChild(glassId, deviceId, slot, state); } @Override public void updateDeviceIdBySlot(List<Integer> slotList) { baseMapper.updateDeviceIdBySlot(slotList); } private List<HollowBigStorageAndDetailsDTO> hollowBigStorageCageDetailsChild(String glassId, Integer deviceId, Integer slot, int state) { //将对应格子号的玻璃id置为101 this.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() @@ -126,7 +131,7 @@ .eq(HollowBigStorageCageDetails::getSlot, slot) .eq(HollowBigStorageCageDetails::getGlassId, glassId) ); //将流程卡广西表内对应的玻璃信息清除 //将流程卡关系表内对应的玻璃信息清除 hollowGlassRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassRelationInfo>() .set(HollowGlassRelationInfo::getGlassId, null) .set(HollowGlassRelationInfo::getTemperingLayoutId, null) hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -198,19 +198,20 @@ Map<Integer, List<HollowGlassRelationInfo>> listMap = hollowGlassRelationInfos.stream().collect(Collectors.groupingBy(HollowGlassRelationInfo::getHollowSequence)); //设置间隔板数据共所有配对玻璃使用 List<LisecHollowFrameDetails> frameList = new ArrayList<>(); for (int i = 1; i < relationInfo.getTotalLayer(); i++) { LisecHollowFrameDetails frameDetails = new LisecHollowFrameDetails(); frameDetails.setRecType("<FR" + i + ">"); frameDetails.setType(formulaDetails.getIntervalFrameType()); frameDetails.setWidth(formulaDetails.getIntervalFrameWidth()); frameDetails.setHeight(formulaDetails.getIntervalFrameHeight()); frameList.add(frameDetails); } // for (int i = 1; i < relationInfo.getTotalLayer(); i++) { // LisecHollowFrameDetails frameDetails = new LisecHollowFrameDetails(); // frameDetails.setRecType("<FR" + i + ">"); // frameDetails.setType(formulaDetails.getIntervalFrameType()); // frameDetails.setWidth(formulaDetails.getIntervalFrameWidth()); // frameDetails.setHeight(formulaDetails.getIntervalFrameHeight()); // frameList.add(frameDetails); // } List<LisecHollowGlassAndFrameDetails> glassAndFrameList = new ArrayList<>(); listMap.forEach((e, v) -> { LisecHollowGlassAndFrameDetails glassAndFrame = new LisecHollowGlassAndFrameDetails(); List<LisecHollowGlassDetails> glassList = new ArrayList<>(); List<LisecHollowFrameDetails> frameList = new ArrayList<>(); for (int i = 1; i <= v.size(); i++) { LisecHollowGlassDetails hollowGlassDetails = new LisecHollowGlassDetails(); hollowGlassDetails.setRecType("<GL" + i + ">"); @@ -219,7 +220,7 @@ glassList.add(hollowGlassDetails); } glassAndFrame.setGlassList(glassList); glassAndFrame.setFrameList(frameList); glassAndFrame.setItemNum(e + ""); glassAndFrame.setIdNum(e + ""); glassAndFrame.setBarcode(randomNumber.substring(randomNumber.length() - 3)); @@ -227,35 +228,43 @@ glassAndFrame.setHeight((int) (v.get(0).getHeight() * 10) + ""); glassAndFrame.setGlass1(e * ID_RATIO + 1 + ""); glassAndFrame.setFrame1(formulaDetails.getFrameOne()); frameList.add(new LisecHollowFrameDetails("<FR1",formulaDetails.getIntervalFrameTypeOne(), formulaDetails.getIntervalFrameWidthOne(), formulaDetails.getIntervalFrameHeightOne())); glassAndFrame.setGasCode1(formulaDetails.getCasOne()); if (relationInfo.getTotalLayer() == 2) { glassAndFrame.setGlass2(e * ID_RATIO + 2 + ""); } else if (relationInfo.getTotalLayer() == 3) { glassAndFrame.setGlass2(e * ID_RATIO + 2 + ""); glassAndFrame.setFrame2(formulaDetails.getFrameTwo()); frameList.add(new LisecHollowFrameDetails("<FR2",formulaDetails.getIntervalFrameTypeTwo(), formulaDetails.getIntervalFrameWidthTwo(), formulaDetails.getIntervalFrameHeightTwo())); glassAndFrame.setGasCode2(formulaDetails.getCasTwo()); glassAndFrame.setGlass3(e * ID_RATIO + 3 + ""); } else if (relationInfo.getTotalLayer() == 4) { glassAndFrame.setGlass2(e * ID_RATIO + 2 + ""); glassAndFrame.setFrame2(formulaDetails.getFrameTwo()); frameList.add(new LisecHollowFrameDetails("<FR2",formulaDetails.getIntervalFrameTypeTwo(), formulaDetails.getIntervalFrameWidthTwo(), formulaDetails.getIntervalFrameHeightTwo())); glassAndFrame.setGasCode2(formulaDetails.getCasTwo()); glassAndFrame.setGlass3(e * ID_RATIO + 3 + ""); glassAndFrame.setFrame3(formulaDetails.getFrameThree()); frameList.add(new LisecHollowFrameDetails("<FR3",formulaDetails.getIntervalFrameTypeThree(), formulaDetails.getIntervalFrameWidthThree(), formulaDetails.getIntervalFrameHeightThree())); glassAndFrame.setGasCode3(formulaDetails.getCasThree()); glassAndFrame.setGlass4(e * ID_RATIO + 4 + ""); } else { glassAndFrame.setGlass2(e * ID_RATIO + 2 + ""); glassAndFrame.setFrame2(formulaDetails.getFrameTwo()); frameList.add(new LisecHollowFrameDetails("<FR2",formulaDetails.getIntervalFrameTypeTwo(), formulaDetails.getIntervalFrameWidthTwo(), formulaDetails.getIntervalFrameHeightTwo())); glassAndFrame.setGasCode2(formulaDetails.getCasTwo()); glassAndFrame.setGlass3(e * ID_RATIO + 3 + ""); glassAndFrame.setFrame3(formulaDetails.getFrameThree()); frameList.add(new LisecHollowFrameDetails("<FR3",formulaDetails.getIntervalFrameTypeThree(), formulaDetails.getIntervalFrameWidthThree(), formulaDetails.getIntervalFrameHeightThree())); glassAndFrame.setGasCode3(formulaDetails.getCasThree()); glassAndFrame.setGlass4(e * ID_RATIO + 4 + ""); glassAndFrame.setFrame3(formulaDetails.getFrameFour()); frameList.add(new LisecHollowFrameDetails("<FR4",formulaDetails.getIntervalFrameTypeFour(), formulaDetails.getIntervalFrameWidthFour(), formulaDetails.getIntervalFrameHeightFour())); glassAndFrame.setGasCode4(formulaDetails.getCasFour()); glassAndFrame.setGlass4(e * ID_RATIO + 5 + ""); } glassAndFrame.setInset(formulaDetails.getSealInsert()); glassAndFrame.setFrameList(frameList); glassAndFrameList.add(glassAndFrame); }); details.setGlassAndFrameList(glassAndFrameList); @@ -279,7 +288,7 @@ // 将生成的文件存入指定路径 //计算生成李赛克需要的数据给到每个属性 StringWriter out = new StringWriter(); File file = new File("D:\\temp", relationInfo.getFlowCardId() + randomNumber.substring(randomNumber.length() - 3) + ".trf"); File file = new File(System.getProperty("user.dir")+"/lisec", relationInfo.getFlowCardId() + randomNumber.substring(randomNumber.length() - 3) + ".trf"); try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) { temp.process(root, out); writer.write(out.toString()); hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -540,6 +540,9 @@ hollowBigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_OUT); } else { hollowBigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN); //按照格子信息更新对应的设备id List<Integer> slotList = storageCageDTOList.stream().map(UpdateHollowBigStorageCageDTO::getTargetSlot).distinct().collect(Collectors.toList()); hollowBigStorageCageDetailsService.updateDeviceIdBySlot(slotList); } log.info("4、大理片笼进片状态已完成已完成的玻璃信息id:{}", v); updateSlotRemainBySlots(outSuccessGlassSlot); hangzhoumesParent/moduleService/howllowGlassModule/src/main/resources/mapper/HollowBigStorageCageDetailsMapper.xml
@@ -39,6 +39,15 @@ and state !=101 </where> </update> <update id="updateDeviceIdBySlot"> update big_storage_cage_details t inner join big_storage_cage t1 on t.slot = t1.slot set t.device_id = t1.device_id where t.slot in ( <foreach collection="list" item="item" separator=","> #{item} </foreach> ) </update> <select id="hollowIsAll" resultMap="baseMap"> WITH sum_flow_layer_count AS ( SELECT flow_card_id, layer, min( films_id ) AS films_id, min(thickness) as hangzhoumesParent/moduleService/howllowGlassModule/src/main/resources/templates/hollowGlass.ftl