package com.example.erp.service.pp; import com.example.erp.entity.pp.LayoutsData; import com.example.erp.entity.pp.LayoutsData.*; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; /** * @author SNG-012 */ public class JsonToOptConverter { public static String convertToJson(LayoutsData layoutsData) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.writeValueAsString(layoutsData); } public static String generateOptContent(LayoutsData layoutsData) { StringBuilder optContent = new StringBuilder(); addHeader(optContent); addSignatures(optContent); addPatterns(optContent, layoutsData); addCuttings(optContent, layoutsData); addShapes(optContent, layoutsData); addInfos(optContent, layoutsData); return optContent.toString(); } private static void addHeader(StringBuilder optContent) { optContent.append("[OPT_Header]\n"); optContent.append("OPTCutVersion=5.0\n"); optContent.append("Dimension=mm\n"); Date currentDate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); String formattedDate = sdf.format(currentDate); optContent.append("Date=" + formattedDate + "\n\n"); } private static void addSignatures(StringBuilder optContent) { optContent.append("[OPT_Signature]\n"); optContent.append("Creator=OPTIMA S.r.l.\n\n"); } private static void addPatterns(StringBuilder optContent, LayoutsData layoutsData) { optContent.append("[OPT_Pattern]\n"); optContent.append("GlassID=FL4\n"); optContent.append("GlassThickness=4.00\n"); optContent.append("GlassCoated=0\n"); optContent.append("GlassType=0\n"); optContent.append("Pieces=" + layoutsData.getLayouts().size() + "\n"); optContent.append("Width=" + layoutsData.getLayouts().get(0).getWidth() + ".0\n"); optContent.append("Height=" + layoutsData.getLayouts().get(0).getHeight() + ".0\n"); optContent.append("TrimLeft=0.0\n"); optContent.append("TrimBottom=0.0\n"); optContent.append("LoaderRack=\n\n"); } private static void addCuttings(StringBuilder optContent, LayoutsData layoutsData) { optContent.append("[Cuttings]\n"); for (Layout layout : layoutsData.getLayouts()) { for (Rect rect : layout.getRects()) { if (!rect.isRemain()) { optContent.append("x=" + rect.getX() + ".00 y=" + rect.getY() + ".00 "); optContent.append("X=" + (rect.getX() + rect.getW()) + ".00 Y=" + rect.getY() + ".00 "); optContent.append("x=" + (rect.getX() + rect.getW()) + ".00 y=" + (rect.getY() + rect.getH()) + ".00 "); optContent.append("X=" + rect.getX() + ".00 Y=" + (rect.getY() + rect.getH()) + ".00 "); optContent.append("x=" + rect.getX() + ".00 y=" + rect.getY() + ".00\n"); } } } optContent.append("\n"); } private static void addShapes(StringBuilder optContent, LayoutsData layoutsData) { int shapeId = 1; for (Layout layout : layoutsData.getLayouts()) { for (Rect rect : layout.getRects()) { if (!rect.isRemain()) { optContent.append("[Shape]\n"); optContent.append("Id=" + shapeId + "\n"); optContent.append("Description=" + rect.getJiaHao() + " ShapeName=" + rect.getJiaHao() + "\n"); optContent.append("x=" + rect.getW() + ".0 y=" + rect.getH() + ".0\n"); optContent.append("X=0.0 Y=0.0 C=1\n"); shapeId++; } } } optContent.append("\n"); } private static void addInfos(StringBuilder optContent, LayoutsData layoutsData) { int infoId = 1; for (Layout layout : layoutsData.getLayouts()) { for (Rect rect : layout.getRects()) { if (!rect.isRemain()) { optContent.append("[Info]\n"); optContent.append("Id=" + infoId + "\n"); optContent.append("SecondGlassReference=FL4\n"); optContent.append("RackNo=0\n"); optContent.append("SheetWidth=" + rect.getW() + ".0\n"); optContent.append("SheetHeight=" + rect.getH() + ".0\n"); optContent.append("Customer=\n"); optContent.append("PosNo=" + infoId + "\n"); optContent.append("OrderNo=\n"); optContent.append("RackCode=\n"); optContent.append("PieceStandardPz=0\n"); optContent.append("UMPz=mm\n"); optContent.append("IDPz=\n"); optContent.append("RealDimXPz=" + rect.getW() + ".0\n"); optContent.append("RealDimYPz=" + rect.getH() + ".0\n"); optContent.append("GrindingPz=0.0\n"); optContent.append("GrindingPzX1=0.0\n"); optContent.append("GrindingPzY1=0.0\n"); optContent.append("GrindingPzX2=0.0\n"); optContent.append("GrindingPzY2=0.0\n"); optContent.append("BendingPz=0.0\n"); optContent.append("QuantityPz=1\n"); optContent.append("PriorityPz=0\n"); optContent.append("LabelsPz=0\n"); optContent.append("LabelsPzCounter=0\n"); optContent.append("RotationAllowed=1\n"); optContent.append("PreferencePz=0\n"); optContent.append("DescMatCompPz=\n"); optContent.append("DeliveryDatePz=" + new SimpleDateFormat("dd-MM-yyyy").format(new Date()) + "\n"); optContent.append("PzNOTE=\n"); for (int i = 1; i <= 20; i++) { optContent.append("PzNOTE" + i + "=\n"); } infoId++; } } } } }