From b8b5b799e8770d29ac0a5b8530c468d74173c487 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期五, 03 一月 2025 23:22:53 +0800 Subject: [PATCH] 1、手动生成李赛克文件功能已完成、待联调 2、对接除膜机,调整对应的交互 3、中空两条线新增空闲信号,优先李赛克线优先 4、fixbug:指定工程后增加版图id排序,优先炉号从小到大,版序从小到大 --- hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 164 insertions(+), 3 deletions(-) diff --git a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java index 17e9a24..4360c22 100644 --- a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java +++ b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java @@ -7,23 +7,34 @@ import com.mes.common.config.Const; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; +import com.mes.hollow.controller.HollowBigStorageCageController; import com.mes.hollow.entity.HollowBigStorageCageDetails; +import com.mes.hollow.entity.HollowFormulaDetails; import com.mes.hollow.entity.HollowGlassOutRelationInfo; +import com.mes.hollow.entity.HollowGlassRelationInfo; +import com.mes.hollow.entity.dto.*; import com.mes.hollow.entity.request.HollowTaskRequest; import com.mes.hollow.mapper.HollowGlassOutRelationInfoMapper; import com.mes.hollow.service.HollowBigStorageCageDetailsService; +import com.mes.hollow.service.HollowFormulaDetailsService; import com.mes.hollow.service.HollowGlassOutRelationInfoService; +import com.mes.hollow.service.HollowGlassRelationInfoService; import com.mes.hollowqueue.entity.HollowGlassQueueInfo; import com.mes.hollowqueue.service.HollowGlassQueueInfoService; +import com.mes.utils.Blank; import com.mes.utils.RedisUtil; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; +import freemarker.template.Version; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -42,9 +53,15 @@ HollowBigStorageCageDetailsService hollowBigStorageCageDetailsService; @Resource HollowGlassQueueInfoService hollowGlassQueueInfoService; + @Resource + HollowFormulaDetailsService hollowFormulaDetailsService; + @Resource + HollowGlassRelationInfoService hollowGlassRelationInfoService; @Resource RedisUtil redisUtil; + + private static final int ID_RATIO = 10; @Override public HollowGlassOutRelationInfo receiveTask(HollowTaskRequest request) { @@ -135,6 +152,143 @@ return Boolean.TRUE; } + @Override + public String generateHollowLisecFile(String flowCardId, int cell, int isForce) throws IOException { + List<HollowGlassOutRelationInfo> outRelationList = this.list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() + .in(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_NEW, Const.HOLLOW_FLOW_CARD_START, Const.HOLLOW_FLOW_CARD_PAUSE) + .eq(HollowGlassOutRelationInfo::getFlowCardId, flowCardId) + .eq(HollowGlassOutRelationInfo::getCell, cell)); + if (CollectionUtil.isEmpty(outRelationList) || outRelationList.size() != 1) { + return "鏈潯绾夸笉瀛樺湪璇ユ祦绋嬩换鍔℃垨鑰呭悓娴佺▼鍗′换鍔℃暟澶т簬1"; + } + HollowGlassOutRelationInfo relationInfo = outRelationList.get(0); + if (relationInfo.getTotalLayer() < 2) { + return "浠诲姟鎬诲眰鏁板皬浜�2锛屼笉鐢熸垚鏉庤禌鍏嬫枃浠�"; + } + //鑾峰彇璁㈠崟鐩稿叧淇℃伅 + OrderDTO order = baseMapper.queryOrderByFlowCardId(flowCardId); + if (null == order) { + return "鐢熸垚澶辫触锛岀浉鍏宠鍗曚俊鎭笉瀛樺湪"; + } + //鑾峰彇閰嶆柟鐩稿叧淇℃伅 + HollowFormulaDetails formulaDetails = hollowFormulaDetailsService.getById(relationInfo.getFormulaId()); + if (null == formulaDetails) { + return "鐢熸垚澶辫触锛岀浉鍏抽厤鏂逛俊鎭笉瀛樺湪"; + } + //鎬诲眰鏁版槸鍚︿笌杩涚鍏崇郴琛ㄥ唴灞傛暟鏁伴噺鐩稿悓锛屽眰鏁扮浉鍚岀敓鎴愮户缁紝涓嶅悓缁撴潫 + int layerCount = hollowGlassRelationInfoService.queryLayerByFlowCardId(flowCardId); + if (layerCount != relationInfo.getTotalLayer() && isForce == 0) { + return "鐢熸垚澶辫触锛岃娴佺▼鍗″唴灞傛暟涓庤繘绗煎叧绯昏〃鍐呭眰鏁版暟閲忎笉鐩稿悓"; + } + //璁剧疆鏂囦欢鐨勪富浣撳唴瀹� + LisecHollowDetails details = new LisecHollowDetails(); + String randomNumber = "" + (int) (Math.random() * 100000 + 100000); + details.setBcdStart(randomNumber); + details.setBatchNo(randomNumber); + details.setOrd(relationInfo.getFlowCardId().substring(2, 9)); + details.setCustNum(order.getCustomerId() + ""); + details.setCustNam(order.getCustomerName()); + details.setProDate((new SimpleDateFormat("dd/MM/yyyy").format(new Date()))); + details.setDelDate(new SimpleDateFormat("dd/MM/yyyy").format(order.getDeliveryDate())); + + //璁剧疆鏂囦欢绗竴灞傚垪琛ㄦ暟鎹� + //鏆傛椂鐢熸垚绗煎唴鎵�鏈夌殑鐜荤拑淇℃伅锛堝凡閰嶅鍜屾湭閰嶅鐨勶級 + List<HollowGlassRelationInfo> hollowGlassRelationInfos = hollowGlassRelationInfoService.list(new LambdaQueryWrapper<HollowGlassRelationInfo>() + .eq(HollowGlassRelationInfo::getFlowCardId, flowCardId).orderByAsc(HollowGlassRelationInfo::getHollowSequence)); + 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); + } + List<LisecHollowGlassAndFrameDetails> glassAndFrameList = new ArrayList<>(); + listMap.forEach((e, v) -> { + LisecHollowGlassAndFrameDetails glassAndFrame = new LisecHollowGlassAndFrameDetails(); + List<LisecHollowGlassDetails> glassList = new ArrayList<>(); + for (int i = 1; i <= v.size(); i++) { + LisecHollowGlassDetails hollowGlassDetails = new LisecHollowGlassDetails(); + hollowGlassDetails.setRecType("<GL" + i + ">"); + hollowGlassDetails.setThickness((int) (v.get(i - 1).getThickness() * 10) + ""); + hollowGlassDetails.setPaneBcd(randomNumber + "" + (e * ID_RATIO + i)); + glassList.add(hollowGlassDetails); + } + glassAndFrame.setGlassList(glassList); + glassAndFrame.setFrameList(frameList); + glassAndFrame.setItemNum(e + ""); + glassAndFrame.setIdNum(e + ""); + glassAndFrame.setBarcode(randomNumber.substring(randomNumber.length() - 3)); + glassAndFrame.setWidth((int) (v.get(0).getWidth() * 10) + ""); + glassAndFrame.setHeight((int) (v.get(0).getHeight() * 10) + ""); + glassAndFrame.setGlass1(e * ID_RATIO + 1 + ""); + glassAndFrame.setFrame1(formulaDetails.getFrameOne()); + 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()); + 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()); + glassAndFrame.setGasCode2(formulaDetails.getCasTwo()); + glassAndFrame.setGlass3(e * ID_RATIO + 3 + ""); + glassAndFrame.setFrame3(formulaDetails.getFrameThree()); + glassAndFrame.setGasCode3(formulaDetails.getCasThree()); + glassAndFrame.setGlass4(e * ID_RATIO + 4 + ""); + } else { + glassAndFrame.setGlass2(e * ID_RATIO + 2 + ""); + glassAndFrame.setFrame2(formulaDetails.getFrameTwo()); + glassAndFrame.setGasCode2(formulaDetails.getCasTwo()); + glassAndFrame.setGlass3(e * ID_RATIO + 3 + ""); + glassAndFrame.setFrame3(formulaDetails.getFrameThree()); + glassAndFrame.setGasCode3(formulaDetails.getCasThree()); + glassAndFrame.setGlass4(e * ID_RATIO + 4 + ""); + glassAndFrame.setFrame3(formulaDetails.getFrameFour()); + glassAndFrame.setGasCode4(formulaDetails.getCasFour()); + glassAndFrame.setGlass4(e * ID_RATIO + 5 + ""); + } + glassAndFrame.setInset(formulaDetails.getSealInsert()); + glassAndFrameList.add(glassAndFrame); + }); + details.setGlassAndFrameList(glassAndFrameList); + + + Configuration cfg = new Configuration(new Version("2.3.29")); + cfg.setClassForTemplateLoading(HollowBigStorageCageController.class, "/templates/"); + // 鍒涘缓Calculator瀹炰緥 + Blank blank = new Blank(); + + // 鍒涘缓鏁版嵁妯″瀷 + Map<String, Object> root = new HashMap<>(); + root.put("blank", blank); + + root.put("details", details); + + // 鑾峰彇妯℃澘 + Template temp = cfg.getTemplate("hollowGlass.ftl"); + + + // 灏嗙敓鎴愮殑鏂囦欢瀛樺叆鎸囧畾璺緞 + //璁$畻鐢熸垚鏉庤禌鍏嬮渶瑕佺殑鏁版嵁缁欏埌姣忎釜灞炴�� + StringWriter out = new StringWriter(); + File file = new File("D:\\temp", relationInfo.getFlowCardId() + randomNumber.substring(randomNumber.length() - 3) + ".trf"); + try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) { + temp.process(root, out); + writer.write(out.toString()); + } catch (TemplateException | IOException e) { + e.printStackTrace(); + } + return "success"; + } + private HollowGlassOutRelationInfo childrenTask(HollowTaskRequest request, int isForce) { GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getFlowCardId, request.getFlowCardId()).last("limit 1")); @@ -183,6 +337,13 @@ } } hollowGlassQueueInfoService.saveBatch(hollowQueues); + try { + if (request.getCell() == 930) { + generateHollowLisecFile(request.getFlowCardId(), 930, isForce); + } + } catch (Exception e) { + log.info("鐢熸垚鏉庤禌鍏嬫枃浠舵椂鍙戠敓寮傚父锛屾祦绋嬪崱鍙蜂负{}", request.getFlowCardId()); + } return info; } } -- Gitblit v1.8.0