diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java index e478f08a7..a4fb9469a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/DictTypeConstants.java @@ -10,6 +10,8 @@ public interface DictTypeConstants { String GRAIN_TYPE = "grainType";// 小板纹路类型 String DOOR_OPENING_DIRECTIONS = "doorOpeningDirections";//开门方向 String PLATE_TYPE = "order_plate_type"; // 板类型 + String UNIT_LENGTH = "unit_length"; // 长度单位 + String UNIT_AREA = "area_unit"; // 面积单位 // ========== HOLE 模块 ========== diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 9a115c258..2afcac5cb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -1,12 +1,9 @@ package com.cf.imes.module.executor.controller.admin.order; import com.alibaba.fastjson.JSONObject; -import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; -import com.cf.imes.framework.web.config.WebProperties; -import com.cf.imes.framework.web.core.util.WebFrameworkUtils; import com.cf.imes.module.executor.controller.admin.order.vo.order.*; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO; @@ -20,12 +17,11 @@ import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeR import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelReadUtil; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO; -import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XMLReadUtil; +import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XMLUtil; +import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlBuilder; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize; import io.swagger.v3.oas.annotations.Parameters; import lombok.extern.slf4j.Slf4j; -import org.springdoc.webmvc.core.RequestService; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -61,12 +57,9 @@ import com.cf.imes.module.executor.service.order.OrderService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -93,7 +86,7 @@ public class OrderController { private IdentifierGenerator identifierGenerator; @Resource - private XmlTypeRealize xmlTypeRealize; + private XMLUtil xmlUtil; @PutMapping("/update") @@ -195,8 +188,7 @@ public class OrderController { @Operation(summary = "生产单api数据导入新增") @Parameter(name = "orderNo", description = "原订单号", required = true, example = "20230809027818") @PreAuthorize("@ss.hasPermission('production:manager-list:create')") - public CommonResult getApiData(@RequestParam(value = "orderNo") String orderNo) - throws InterruptedException, ExecutionException { + public CommonResult getApiData(@RequestParam(value = "orderNo") String orderNo){ try { Long orderId = (Long) identifierGenerator.nextId(null); @@ -292,70 +284,107 @@ public class OrderController { @RequestParam(value = "type") Integer type, @RequestParam(value = "index", required = false, defaultValue = "0") Integer index, @RequestParam(value = "id", required = false, defaultValue = "0") Long orderId, - HttpServletResponse response) throws IOException { + HttpServletResponse response) { try { - List list = null; - OrderDO orderDO = new OrderDO(); + List list = null; OrderXmlVO orderXmlVO = null; - Map mapOrder = null; - String err = ""; + OrderDO orderDO = null; + Map mapOrder; + + Boolean flag = true; + if (type == 0) { //excel excelReadUtil.setErr(0); Map map = excelReadUtil.read(file); - if (excelReadUtil.isErr() > 0) { - ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"), - orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx"); - return; + list = (List) map.get("plate"); + mapOrder = (Map) map.get("orderPri"); + + if (index == 0) { // 全部 + if (mapOrder != null) { + Map mapChange = excelReadUtil.changeOrderDO(mapOrder); + mapOrder = (Map) mapChange.get("file"); + orderDO = (OrderDO) mapChange.get("order"); + flag = (Boolean) mapChange.get("error"); + } } else { - list = (List) map.get("plate"); - mapOrder = (Map) map.get("order"); - orderDO = (OrderDO) mapOrder.get("order"); + orderDO = orderService.getOrder(orderId); + if (orderDO == null) { + mapOrder = new HashMap<>(); + mapOrder.put("自定义单号", "生产单号不存在"); + flag = false; + } + } + + if (mapOrder == null) { + mapOrder = new HashMap<>(); + mapOrder.put("自定义单号", "生产单内容解析为空"); + flag = false; + }else if (orderDO == null) { + mapOrder.put("自定义单号", "生产单内为空"); + flag = false; + } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + mapOrder.put("自定义单号", mapOrder.get("自定义单号") + "自定义单号重复"); + flag = false; + } else if ( excelReadUtil.isErr() > 0 ){ + flag = false; + } else if ( excelReadUtil.isErr() == 0 && flag ){ if (list.size() == 0) { orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); } else { orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); } } + if (!flag) { + ExcelWriterUtil.write(response, mapOrder, list, orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx"); + return; + } } else if (type == 1) { // json } else if (type == 2) { // xml - orderXmlVO = (OrderXmlVO) XMLReadUtil.read(file, OrderXmlVO.class); - // 数据内容正确判断 -// if(){ -// -// } - assert orderXmlVO != null; - mapOrder = xmlTypeRealize.changeOrder(orderXmlVO, getUserOrganId()); - orderDO = (OrderDO) mapOrder.get("order"); - if (orderXmlVO.getMaterialXmlVO().getPlateXmlVOS().getPlateXmlVOList().size() == 0) { - orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); - } else { - orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); - } - } + orderXmlVO = (OrderXmlVO) XMLUtil.read(file, OrderXmlVO.class); - if (index == null || index == 0) { // 整单导入 - err = ((String) mapOrder.get("error")); - orderDO.setOrderType(OrderTypeEnum.MAIN_ORDER.getStatus()); - if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { - err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;"; + if (index == 0){ + if (orderXmlVO != null) { + mapOrder = xmlUtil.changeDate(orderXmlVO, getUserOrganId()); // 生产单数据格式验证 + orderDO = (OrderDO) mapOrder.get("order"); + flag = (Boolean) mapOrder.get("error"); + } + } else { + orderDO = orderService.getOrder(orderId); + if (orderDO == null) { + orderXmlVO = new OrderXmlVO().setMemo("生产单号不存在"); + flag = false; + } } - if (!err.equals("")) { - ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "order_err.xlsx"); + + // 生产数据格式验证 + if (orderXmlVO == null) { + orderXmlVO = new OrderXmlVO().setMemo("文件内容解析为空"); + flag = false; + } else if (orderDO == null) { + orderXmlVO = new OrderXmlVO().setMemo("生产单内容为空"); + flag = false; + } else if (orderDO.getCustomOrderNo() != null && !orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) { + orderXmlVO.setCustomOrderNo(orderXmlVO.getCustomOrderNo() + "自定义单号重复"); + flag = false; + } else if (flag){ // 生产单的内容正确 + if (orderXmlVO.getMaterialXmlVO().getPlateXmlVOS().getPlateXmlVOList().size() == 0) { + orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus()); + } else { + orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus()); + } + } + if (!flag){ + String xmlStr = XmlBuilder.objectToXmlStr(orderXmlVO); + XMLUtil.writeErr(response, xmlStr, " 错误.xml"); return; } - - } else { // 板材导入 - orderDO = orderService.getOrder(orderId); } - - orderService.importExcelData(orderDO, list, index, orderXmlVO); - + orderService.importExcelData(orderDO, type , index, list, orderXmlVO); } catch (Exception e) { - ExcelWriterUtil.writeErr(response, "系统出现未知错误,请下载模板,按照模板重新上传文件,注意编码格式", orderService.getSavePath() + File.separator + "order_err.xlsx"); - log.error("导入文件出现异常", e); + log.error("文件导入异常", e); } } @@ -453,12 +482,20 @@ public class OrderController { } // 统计 - // 生产单超期/到期告警 (工作台) - @GetMapping("/getOrderWarn") - @Operation(summary = "生产单超期/到期告警 (工作台)") + // 生产单超期(工作台) + @GetMapping("/getOrderOverdue") + @Operation(summary = "生产单超期 (工作台)") @PreAuthorize("@ss.hasPermission('productManager:List')") - public CommonResult>> getOrderOverdue(@Valid PageParam pageParam) { - return success(orderService.getOrderWarn(pageParam)); + public CommonResult> getOrderOverdue(@Valid PageParam pageParam) { + return success(orderService.getOrderOverdue(pageParam)); + } + + // 生产单到期告警 (工作台) + @GetMapping("/getOrderWarn") + @Operation(summary = "生产单到期告警 (工作台)") + @PreAuthorize("@ss.hasPermission('productManager:List')") + public CommonResult> getOrderNear(@Valid PageParam pageParam) { + return success(orderService.getOrderNear(pageParam)); } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index 9c0696d42..25398f97b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -11,6 +11,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBo import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO; import org.springframework.boot.system.ApplicationHome; @@ -107,7 +108,7 @@ public interface OrderService { /** * 文件数据导入 */ - void importExcelData(OrderDO orderDO, List list, Integer index, OrderXmlVO orderXmlVO); + void importExcelData(OrderDO orderDO, Integer type, Integer index, List list, OrderXmlVO orderXmlVO); /** * 生产导入文件模板下载 @@ -141,7 +142,12 @@ public interface OrderService { /** * 生产单超期告警分析统计 */ - Map> getOrderWarn(PageParam pageParam); + PageResult getOrderOverdue(PageParam pageParam); + + /** + * 生产单到期告警分析统计 + */ + PageResult getOrderNear(PageParam pageParam); /** diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 1e4a22a9e..f6518cfe6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -44,6 +44,7 @@ import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize; +import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.OrderXmlVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.XmlTypeRealize; import org.springframework.stereotype.Service; @@ -423,17 +424,30 @@ public class OrderServiceImpl implements OrderService { @Override @Transactional(rollbackFor = Exception.class) - public void importExcelData(OrderDO orderDO, List list, Integer index, OrderXmlVO orderXmlVO) { + public void importExcelData(OrderDO orderDO, Integer type, Integer index, List list, OrderXmlVO orderXmlVO) { if (index == null || index == 0) { orderDO.setId((Long) snowFlakeGenerator.nextId(null)); + String nickName = SecurityFrameworkUtils.getLoginUser().getNickname(); + if (orderDO.getSalesman() == null || orderDO.getSalesman().equals("")) { + orderDO.setSalesman(nickName); + } + if (orderDO.getSplitter() == null || orderDO.getSplitter().equals("")) { + orderDO.setSplitter(nickName); + } orderMapper.insert(orderDO); } Map> listMap = null; - if (list != null && list.size() > 0) { - listMap = excelTypeRealize.changeDate(list, orderDO.getId()); - } else if (orderXmlVO != null) { - listMap = xmlTypeRealize.goodsInfoChange(orderXmlVO, orderDO.getId(), getUserOrganId()); + if (type == 0){ + if (list != null && list.size() > 0) { + listMap = excelTypeRealize.changeDate(list, orderDO.getId()); + } + } else if (type == 1) { + + } else if (type == 2) { + if (orderXmlVO != null) { + listMap = xmlTypeRealize.goodsInfoChange(orderXmlVO, orderDO.getId(), getUserOrganId()); + } } List rawGoodsDO = (List) listMap.get("rawGoodsDOS"); List goodsDO = (List) listMap.get("goodsDOS"); @@ -564,19 +578,21 @@ public class OrderServiceImpl implements OrderService { } @Override - public Map> getOrderWarn(PageParam pageParam) { - Map> map = new HashMap<>(); - + public PageResult getOrderOverdue(PageParam pageParam) { LocalDate todayDate = LocalDate.now(); - LocalDate tomorrow = LocalDate.now().plus(1, ChronoUnit.DAYS); PageDTO page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize()); - // 查询预警单 - IPage orderNearVOS = orderMapper.selectOrderNear(tomorrow, OrganContextHolder.getOrganId(), page); - map.put("orderNearVOS", new PageResult(orderNearVOS.getRecords(), orderNearVOS.getTotal())); // 查询超时单 IPage orderOverdueVOS = orderMapper.selectOrderOverdue(todayDate, OrganContextHolder.getOrganId(), page); - map.put("orderOverdueVOS", new PageResult(orderOverdueVOS.getRecords(), orderOverdueVOS.getTotal())); - return map; + return new PageResult(orderOverdueVOS.getRecords(), orderOverdueVOS.getTotal()); + } + + @Override + public PageResult getOrderNear(PageParam pageParam) { + PageDTO page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize()); + LocalDate tomorrow = LocalDate.now().plus(1, ChronoUnit.DAYS); + // 查询预警单 + IPage orderNearVOS = orderMapper.selectOrderNear(tomorrow, OrganContextHolder.getOrganId(), page); + return new PageResult(orderNearVOS.getRecords(), orderNearVOS.getTotal()); } @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java index e31638ebc..3becfeb48 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java @@ -30,7 +30,7 @@ public class ExcelWriterUtil { // 写excel public static void write(HttpServletResponse response, - Map orderMap, + Map orderMap, List list, String filePathErr) throws IOException { diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/BasePosition.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/BasePosition.java index 801267455..e2dd79f76 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/BasePosition.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/BasePosition.java @@ -15,16 +15,16 @@ import lombok.NoArgsConstructor; public class BasePosition { private String basePoint;// 基准点 - private String basePointX;// 基准点X坐标 + private Double basePointX;// 基准点X坐标 - private String basePointY;// 基准点Y坐标 + private Double basePointY;// 基准点Y坐标 - private String basePointZ;// 基准点Z坐标 + private Double basePointZ;// 基准点Z坐标 - private String axisXrotate;// 绕X轴旋转角度 + private Double axisXrotate;// 绕X轴旋转角度 - private String axisYrotate;// 绕Y轴旋转角度 + private Double axisYrotate;// 绕Y轴旋转角度 - private String axisZrotate;// 绕Z轴旋转角度 + private Double axisZrotate;// 绕Z轴旋转角度 } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java index cecc972f3..3766d9ae3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/structure/PlateDetail.java @@ -1,5 +1,6 @@ package com.cf.imes.module.executor.util.deviseData.structure; +import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -99,7 +100,7 @@ public class PlateDetail{ private List sideHoleDetail;//侧面孔明细 // 备注 - private Map remark;// 板件备注 (生产数据接口中) + private Map plateRemark;// 板件备注 (生产数据接口中) private Map sideRemark;// 封边备注 private String extraRemark; // 扩展备注(包含铰链备注、订单板件流水号)(板材明细中) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/ToolUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/ToolUtil.java index 7894fde22..c7c6075e3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/ToolUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/ToolUtil.java @@ -55,7 +55,7 @@ public class ToolUtil { } // 数据类型转换 - public static boolean convertToType(String str, Class targetType) { + public static Boolean convertToType(String str, Class targetType) { try { Method method = targetType.getMethod("parse" + targetType.getSimpleName(), String.class); method.invoke(null, str); @@ -65,5 +65,42 @@ public class ToolUtil { } } + // 数值正负判断 + public static Boolean checkNumber(String numberStr) { + try { + double number = Double.parseDouble(numberStr); + // 进行正负判断 + if (number >= 0) { + return true; + } else { + return false; + } + } catch (NumberFormatException e) { + return false; + } + } + + // 数据长度判断 + public static boolean checkPrecision(String numberStr, Integer length, Integer decimalLength) { + if (numberStr == null) { + return false; + } + + // 分割整数部分和小数部分 + String[] parts = numberStr.split("\\."); + String integerPart = parts[0]; + String decimalPart = parts.length > 1 ? parts[1] : ""; + + // 检查整数部分位数 + if (integerPart.length() > length) { + return false; + } + + // 检查小数部分位数 + if (decimalPart.length() > decimalLength) { + return false; + } + return true; + } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java index 7473f9084..97b886714 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java @@ -795,8 +795,8 @@ public class ApiTypeRealize { .setThroughModelCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughModelCount"))) .setHas2DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has2DModel"))) .setHas3DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has3DModel"))) - .setRemark(remarkToMap(block)) - .setSideRemark(edgeRemarkToMap(block.getJSONObject("ExtraRemark").getJSONObject("extra"))); + .setPlateRemark(remarkToMap(block)); +// .setSideRemark(edgeRemarkToMap(block.getJSONObject("ExtraRemark").getJSONObject("extra"))); } plateDetails.put(block.getLong("BlockNo"), plateDetail); } @@ -975,8 +975,8 @@ public class ApiTypeRealize { // 将remark转为map public Map remarkToMap(JSONObject block) { Map map = new HashMap<>(); - for (int i = 0; i < 4; i++) { - if (block.getString("remark" + i) != null && !block.getString("remark" + i).isEmpty()) { + for (int i = 1; i < 6; i++) { + if (block.getString("Remark" + i) != null && !block.getString("Remark" + i).isEmpty()) { map.put("remark" + i, block.getString("remark" + i)); } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java index 05961d326..5f3ed82ef 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelReadUtil.java @@ -8,6 +8,7 @@ import com.alibaba.nacos.common.utils.StringUtils; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.enums.DataTypeEnum; +import com.cf.imes.module.executor.enums.OrderTypeEnum; import com.cf.imes.module.executor.util.fileConversion.admin.ToolUtil; import com.cf.imes.module.system.api.dict.DictDataApi; import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO; @@ -21,13 +22,10 @@ import java.io.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; @Slf4j @Component @@ -45,7 +43,7 @@ public class ExcelReadUtil { // 文件读取 // 读文件 EasyExcel.read(file.getInputStream(), excelListener).headRowNumber(-1).sheet().doRead(); - Map orderMap = new HashMap<>();// order + Map orderMap = new HashMap<>();// order List> dataLists = excelListener.getDataLists();// 读取的内容 List list = new ArrayList<>();// plate @@ -78,72 +76,146 @@ public class ExcelReadUtil { // 文件读取 // if (MapUtil.isEmpty(orderMap) || CollectionUtil.isEmpty(list)) { // isErr.set(-1); // } - map.put("order", changeOrderDO(orderMap)); + map.put("orderPri", orderMap); map.put("plate", list); return map; } // order 数据转换 - public Map changeOrderDO(Map orderMap) { + public Map changeOrderDO(Map orderMap) { Map map = new HashMap<>(); - String error = ""; -// 判断是否为空 + boolean error = true; + if (orderMap.get("客户") == null) { - error += "客户不能为空;"; + orderMap.put("客户", "---< 客户不能为空 >---"); + error = false; } if (orderMap.get("经销商") == null) { - error += "经销商不能为空;"; + orderMap.put("经销商", "---< 经销商不能为空 >---"); + error = false; } if (orderMap.get("客户地址") == null) { - error += "客户地址不能为空;"; + orderMap.put("客户地址", "---< 客户地址不能为空 >---"); + error = false; } + if (orderMap.get("客户电话") == null) { - error += "客户电话不能为空;"; + orderMap.put("客户电话", "---< 客户电话不能为空 >---"); + error = false; } else { if (!ToolUtil.validatePhoneNumber((String) orderMap.get("客户电话"))) { - error += orderMap.get("客户电话") + "-客户电话格式错误;"; + orderMap.put("客户电话", orderMap.get("客户电话") + "---< 客户电话格式错误 >---"); + error = false; } } if (orderMap.get("经销商电话") != null) { if (!ToolUtil.validatePhoneNumber((String) orderMap.get("经销商电话"))) { - error += orderMap.get("经销商电话") + "-经销商电话格式错误;"; + orderMap.put("经销商电话", orderMap.get("经销商电话") + "---< 经销商电话格式错误 >---"); + error = false; } } - OrderDO orderDO = OrderDO.builder() - .organId(OrganContextHolder.getOrganId()) - .dataType(DataTypeEnum.FILE_IMPORT.getStatus()) - .orderDate(LocalDateTime.now()) - .customer((String) orderMap.get("客户")) // - .customOrderNo((String) orderMap.get("自定义单号")) - .dealer((String) orderMap.get("经销商")) // - .dealerPhoneNumber((String) orderMap.get("经销商电话")) - .address((String) orderMap.get("客户地址")) // - .phoneNumber((String) orderMap.get("客户电话")) // - .salesman((String) orderMap.get("业务员")) - .splitter((String) orderMap.get("拆单员")) - .remark((String) orderMap.get("备注")) - .build(); + LocalDate deliverDate = null; if (orderMap.get("出货日期") == null) { - error += "出货日期不能为空;"; + orderMap.put("出货日期", "---< 出货日期不能为空 >---"); + error = false; } else { String s = (String) orderMap.get("出货日期"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); Map mapDate = ToolUtil.changeDate(s, formatter); if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { - error += s + "-出货日期格式错误;"; + orderMap.put("出货日期", s + "---< 出货日期格式错误 >---"); + error = false; } else { - LocalDate deliveryDate = (LocalDate) mapDate.get("date"); - if (deliveryDate.isBefore(LocalDate.now())) { - deliveryDate = LocalDate.now().plus(30, ChronoUnit.DAYS); + deliverDate = (LocalDate) mapDate.get("date"); + if (deliverDate.isBefore(LocalDate.now())) { + deliverDate = LocalDate.now().plus(30, ChronoUnit.DAYS); } - orderDO.setDeliveryDate(deliveryDate.atStartOfDay()); } } + OrderDO orderDO = new OrderDO(); + if (error) { + orderDO = OrderDO.builder() + .organId(OrganContextHolder.getOrganId()) + .dataType(DataTypeEnum.FILE_IMPORT.getStatus()) + .orderDate(LocalDateTime.now()) + .customer((String) orderMap.get("客户")) + .customOrderNo((String) orderMap.get("自定义单号")) + .dealer((String) orderMap.get("经销商")) + .dealerPhoneNumber((String) orderMap.get("经销商电话")) + .address((String) orderMap.get("客户地址")) + .phoneNumber((String) orderMap.get("客户电话")) + .salesman((String) orderMap.get("业务员")) + .splitter((String) orderMap.get("拆单员")) + .deliveryDate(deliverDate.atStartOfDay()) + .orderType(OrderTypeEnum.MAIN_ORDER.getStatus()) + .remark((String) orderMap.get("备注")) + .build(); + } map.put("order", orderDO); + map.put("file", orderMap); map.put("error", error); return map; } +// public Map changeOrderDO(Map orderMap) { +// Map map = new HashMap<>(); +// String error = ""; +// if (orderMap.get("客户") == null) { +// error += "客户不能为空;"; +// } +// if (orderMap.get("经销商") == null) { +// error += "经销商不能为空;"; +// } +// if (orderMap.get("客户地址") == null) { +// error += "客户地址不能为空;"; +// } +// if (orderMap.get("客户电话") == null) { +// error += "客户电话不能为空;"; +// } else { +// if (!ToolUtil.validatePhoneNumber((String) orderMap.get("客户电话"))) { +// error += orderMap.get("客户电话") + "-客户电话格式错误;"; +// } +// } +// if (orderMap.get("经销商电话") != null) { +// if (!ToolUtil.validatePhoneNumber((String) orderMap.get("经销商电话"))) { +// error += orderMap.get("经销商电话") + "-经销商电话格式错误;"; +// } +// } +// OrderDO orderDO = OrderDO.builder() +// .organId(OrganContextHolder.getOrganId()) +// .dataType(DataTypeEnum.FILE_IMPORT.getStatus()) +// .orderDate(LocalDateTime.now()) +// .customer((String) orderMap.get("客户")) // +// .customOrderNo((String) orderMap.get("自定义单号")) +// .dealer((String) orderMap.get("经销商")) // +// .dealerPhoneNumber((String) orderMap.get("经销商电话")) +// .address((String) orderMap.get("客户地址")) // +// .phoneNumber((String) orderMap.get("客户电话")) // +// .salesman((String) orderMap.get("业务员")) +// .splitter((String) orderMap.get("拆单员")) +// .orderType(OrderTypeEnum.MAIN_ORDER.getStatus()) +// .remark((String) orderMap.get("备注")) +// .build(); +// if (orderMap.get("出货日期") == null) { +// error += "出货日期不能为空;"; +// } else { +// String s = (String) orderMap.get("出货日期"); +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// Map mapDate = ToolUtil.changeDate(s, formatter); +// if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { +// error += s + "-出货日期格式错误;"; +// } else { +// LocalDate deliveryDate = (LocalDate) mapDate.get("date"); +// if (deliveryDate.isBefore(LocalDate.now())) { +// deliveryDate = LocalDate.now().plus(30, ChronoUnit.DAYS); +// } +// orderDO.setDeliveryDate(deliveryDate.atStartOfDay()); +// } +// } +// map.put("order", orderDO); +// map.put("error", error); +// return map; +// } // 赋值单元格数据 private OrderPlateImportExcelVO changeValue(Map dataMap) { @@ -319,9 +391,9 @@ public class ExcelReadUtil { // 文件读取 } } // 检查商品物料编码或是商品名称、规格、材质、颜色不可全为空 - if (StringUtils.isEmpty(vo.getGoodsId()) && (StringUtils.isEmpty(vo.getGoodsName()) || StringUtils.isEmpty(vo.getSpec()) - || StringUtils.isEmpty(vo.getMaterial()) || StringUtils.isEmpty(vo.getColor()) || StringUtils.isEmpty(vo.getUnit()))) { - errList.add("商品物料编码或是商品名称、规格、材质、颜色、单位不可全为空"); + if (StringUtils.isEmpty(vo.getGoodsName()) || StringUtils.isEmpty(vo.getSpec()) + || StringUtils.isEmpty(vo.getMaterial()) || StringUtils.isEmpty(vo.getColor()) || StringUtils.isEmpty(vo.getUnit())) { + errList.add("商品商品名称、规格、材质、颜色、单位不可为空"); flag = false; } // 若商品类型为板材,需检查房间、柜体、板名称、成品长、成品宽、拆单长、拆单宽、厚、左封边、右封边、上封边、下封边、排版面、纹路、开门方向不能为空 @@ -392,9 +464,9 @@ public class ExcelReadUtil { // 文件读取 errList.add("房间、柜体、板名称不能为空"); } //成品长、成品宽、拆单长、拆单宽、厚、左封边、右封边、上封边、下封边 不能为空 - if (StringUtils.isEmpty(vo.getHeight()) && StringUtils.isEmpty(vo.getWidth()) && StringUtils.isEmpty(vo.getSplitHeight()) - && StringUtils.isEmpty(vo.getSplitWidth()) && StringUtils.isEmpty(vo.getThickness()) && StringUtils.isEmpty(vo.getSealLeft()) - && StringUtils.isEmpty(vo.getSealRight()) && StringUtils.isEmpty(vo.getSealUp()) && StringUtils.isEmpty(vo.getSealDown())) { + if (StringUtils.isEmpty(vo.getHeight()) || StringUtils.isEmpty(vo.getWidth()) || StringUtils.isEmpty(vo.getSplitHeight()) + || StringUtils.isEmpty(vo.getSplitWidth()) || StringUtils.isEmpty(vo.getThickness()) || StringUtils.isEmpty(vo.getSealLeft()) + || StringUtils.isEmpty(vo.getSealRight()) || StringUtils.isEmpty(vo.getSealUp()) || StringUtils.isEmpty(vo.getSealDown())) { flag = false; errList.add("小板轮廓数据不能为空"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java index 03b799f58..221b80518 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelTypeRealize.java @@ -50,12 +50,12 @@ public class ExcelTypeRealize { final String NOT_ASSIGNED = "未命名"; // 数据转换 + 错误验证 - public Map> changeDate(List list, Long orderId) { - if (list.isEmpty()) { + public Map> changeDate(List excelVOS, Long orderId) { + if (excelVOS.isEmpty()) { return null; } - List excelVOS = (List) list; +// List excelVOS = (List) list; Map> map = new HashMap<>(); Long organId = OrganContextHolder.getOrganId(); @@ -266,7 +266,7 @@ public class ExcelTypeRealize { // if (orderBodyDO.getName() != null && !orderBodyDO.getName().trim().isEmpty()) { orderBodyDOS.add(orderBodyDO); // } - System.out.println(" ban-num " + plateCountByCabinetName[0]); +// System.out.println(" ban-num " + plateCountByCabinetName[0]); }); }); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java index 6a423d351..b8a4f6960 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVO.java @@ -111,6 +111,26 @@ public class BlockXmlVO implements Serializable { @XmlAttribute(name = "coatingReverse") private String coatingReverse; + // 长度单位 + @XmlAttribute(name = "unitLength") + private String unitLength; + + // 面积单位 + @XmlAttribute(name = "unitArea") + private String unitArea; + + // 成品面积 + @XmlAttribute(name = "area") + private String area; + + // 开料面积 + @XmlAttribute(name = "areaCutting") + private String areaCutting; + + // 是否钻孔 + @XmlAttribute(name = "drilling") + private String drilling; + // 房间ID @XmlAttribute(name = "roomId") private String roomId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVOS.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVOS.java index 120305468..74cac6261 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVOS.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/BlockXmlVOS.java @@ -20,6 +20,14 @@ public class BlockXmlVOS implements Serializable { @XmlAttribute( name = "count") private String count; + // 面积 + @XmlAttribute( name = "area") + private String area; + + // 面积单位 + @XmlAttribute( name = "unit") + private String unit; + // @XmlElement( name = "Block") private List blockXmlVOList; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/OutlineXmlVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/OutlineXmlVO.java index 93bfa0734..71f84330d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/OutlineXmlVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/OutlineXmlVO.java @@ -15,6 +15,11 @@ import java.util.List; @XmlAccessorType(XmlAccessType.FIELD) public class OutlineXmlVO implements Serializable { + // 点阵数量 + @XmlAttribute(name = "count") + private String count; + + @XmlElement(name = "Point") private List pointXmlVOList; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVO.java index fe3851932..7f768fdd6 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVO.java @@ -71,6 +71,10 @@ public class PlateXmlVO implements Serializable { @XmlAttribute(name = "thickness") private String thickness; + // 是否余料 + @XmlAttribute(name = "oddment") + private String oddment; + // 余料长 @XmlAttribute(name = "oddmentLength") private String oddmentLength; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVOS.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVOS.java index 33b891d03..558c5531c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVOS.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/VO/PlateXmlVOS.java @@ -20,4 +20,8 @@ public class PlateXmlVOS implements Serializable { @XmlElement( name = "Plate") private List plateXmlVOList; + + // 上传结果 + @XmlElement( name = "result") + private String result; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLReadUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLReadUtil.java deleted file mode 100644 index 775fe975b..000000000 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLReadUtil.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.cf.imes.module.executor.util.fileConversion.admin.files.xml; - -import com.alibaba.fastjson.JSON; -import com.cf.imes.module.executor.util.fileConversion.admin.ToolUtil; -import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import java.io.*; -import java.nio.charset.StandardCharsets; - -@Slf4j -@Component -public class XMLReadUtil { - - final String TYPE_ERR = "数据类型错误"; - - public static Object read(MultipartFile file, Class clazz) throws IOException { - - - byte[] firstThreeBytes = new byte[3]; - - // 用字符缓冲流获取XML文件内容 - - InputStream inputStream = file.getInputStream(); - inputStream.read(firstThreeBytes, 0, 3); -// if (firstThreeBytes[0] == (byte) 0xEF && firstThreeBytes[1] == (byte) 0xBB && firstThreeBytes[2] == (byte) 0xBF) { -// // 跳过 BOM -// inputStream.skip(3); -// } - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { - StringBuffer builder = new StringBuffer(); - String line; - while ((line = br.readLine()) != null) { - builder.append(line); - } - - // XML转为JAVA对象 - Object odfBody = XmlBuilder.xmlStrToOject(clazz, builder.toString()); - - return odfBody; - } catch (IOException e) { - log.error("Error reading the file: " + file.getOriginalFilename(), e); - } catch (Exception e) { - log.error("Error parsing the XML to an OrderXmlVO object", e); - } - - return null; - } - - // 数据格式转换 - public Boolean checkVO(OrderXmlVO orderXmlVO) { - Boolean flag = true; - - RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS(); - if ( roomXmlVOS != null ) { - for ( RoomXmlVO room : roomXmlVOS.getRoomXmlVOList() ) { - if (room != null){ - if (!ToolUtil.convertToType(room.getHeight(), Double.class)){ - room.setHeight(room.getHeight() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(room.getLength(), Double.class)){ - room.setLength(room.getLength() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(room.getWidth(), Double.class)){ - room.setWidth(room.getWidth() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(room.getCount(), Integer.class)){ - room.setCount(room.getCount() + "-" + TYPE_ERR); - } - if (room.getBoxXmlVOList() != null){ - for (BoxXmlVO box : room.getBoxXmlVOList()) { - if (box != null){ - if (!ToolUtil.convertToType(box.getHeight(), Double.class)){ - box.setHeight(box.getHeight() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(box.getLength(), Double.class)){ - box.setLength(box.getLength() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(box.getWidth(), Double.class)){ - box.setWidth(box.getWidth() + "-" + TYPE_ERR); - } - } - } - } - } - } - } - - ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS(); - if ( moduleXmlVOS != null ) { - for ( ModuleXmlVO module : moduleXmlVOS.getModuleXmlVOList() ) { - if (module != null){ - if (!ToolUtil.convertToType(module.getHeight(), Double.class)){ - module.setHeight(module.getHeight() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(module.getLength(), Double.class)){ - module.setLength(module.getLength() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(module.getWidth(), Double.class)){ - module.setWidth(module.getWidth() + "-" + TYPE_ERR); - } - } - } - } - - GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS(); - if ( grooveXmlVOS != null ) { - for ( GroupXmlVO groove : grooveXmlVOS.getGroupXmlVOList() ) { - if (groove != null){ - if (!ToolUtil.convertToType(groove.getHeight(), Double.class)){ - groove.setHeight(groove.getHeight() + "-" + TYPE_ERR); - } - if (!ToolUtil.convertToType(groove.getLength(), Double.class)){ - groove.setLength(groove.getLength() + "-"+ TYPE_ERR); - } - if (!ToolUtil.convertToType(groove.getWidth(), Double.class)){ - groove.setWidth(groove.getWidth() + "-" + TYPE_ERR); - } - } - } - } - - - return flag; - } - -} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java new file mode 100644 index 000000000..36ad584c2 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XMLUtil.java @@ -0,0 +1,999 @@ +package com.cf.imes.module.executor.util.fileConversion.admin.files.xml; + +import com.alibaba.nacos.common.utils.StringUtils; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; +import com.cf.imes.module.executor.enums.DataTypeEnum; +import com.cf.imes.module.executor.enums.DictTypeConstants; +import com.cf.imes.module.executor.enums.OrderTypeEnum; +import com.cf.imes.module.executor.util.fileConversion.admin.ToolUtil; +import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.*; +import com.cf.imes.module.system.api.dict.DictDataApi; +import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Component +public class XMLUtil { + + final String TYPE_ERR = "数据类型错误"; + final String POSITIVE_ERR = "数据需为正数"; + final String LONG_ERR = "数据长度不符合(共8位整数位5位,小数位3位)"; + + @Resource + private DictDataApi dictDataApi; + + public static Object read(MultipartFile file, Class clazz) throws IOException { + + + byte[] firstThreeBytes = new byte[3]; + + // 用字符缓冲流获取XML文件内容 + + InputStream inputStream = file.getInputStream(); + inputStream.read(firstThreeBytes, 0, 3); +// if (firstThreeBytes[0] == (byte) 0xEF && firstThreeBytes[1] == (byte) 0xBB && firstThreeBytes[2] == (byte) 0xBF) { +// // 跳过 BOM +// inputStream.skip(3); +// } + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { + StringBuffer builder = new StringBuffer(); + String line; + while ((line = br.readLine()) != null) { + builder.append(line); + } + + // XML转为JAVA对象 + Object odfBody = XmlBuilder.xmlStrToOject(clazz, builder.toString()); + + return odfBody; + } catch (IOException e) { + log.error("Error reading the file: " + file.getOriginalFilename(), e); + } catch (Exception e) { + log.error("Error parsing the XML to an OrderXmlVO object", e); + } + + return null; + } + + public static void writeErr(HttpServletResponse response, String xmlStr, String name) throws IOException { + // 获取输出流 + Writer writer = new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8); + + // 输出 XML 数据 + writer.write(xmlStr); + writer.flush(); + writer.close(); + + // 设置响应头 + response.setContentType("application/xml; charset=UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, StandardCharsets.UTF_8.name())); + } + + // 生产单数据格式验证 + public Map changeDate(OrderXmlVO orderXmlVO, Long organId) { + Map map = new HashMap<>(); + boolean error = true; + + if (orderXmlVO.getCustomOrderNo() == null) { + orderXmlVO.setCustomOrderNo("---< 客户不能为空 >---"); + error = false; + } + if (orderXmlVO.getDealer() == null) { + orderXmlVO.setDealer("---< 经销商不能为空 >---"); + error = false; + } + if (orderXmlVO.getCustomerAddress() == null) { + orderXmlVO.setCustomerAddress("---< 客户地址不能为空 >---"); + error = false; + } + if (orderXmlVO.getCustomerPhone() == null) { + orderXmlVO.setCustomerPhone("---< 客户电话不能为空 >---"); + error = false; + } else { + if (!ToolUtil.validatePhoneNumber(orderXmlVO.getCustomerPhone())) { + orderXmlVO.setCustomerPhone("---< " + orderXmlVO.getCustomerPhone() + "客户电话格式错误 >---"); + error = false; + } + } + if (orderXmlVO.getDealerPhone() != null) { + if (!ToolUtil.validatePhoneNumber(orderXmlVO.getDealerPhone())) { + orderXmlVO.setDealerPhone("---< " + orderXmlVO.getDealerPhone() + "经销商电话格式错误 >---"); + error = false; + } + } + LocalDate orderDate = null; + LocalDate deliverDate = null; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + Map mapDate = ToolUtil.changeDate(orderXmlVO.getOrderDate(), formatter); + if (orderXmlVO.getOrderDate() == null) { + orderXmlVO.setOrderDate("---< 订单日期不能为空 >---"); + error = false; + } else { + if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { + orderXmlVO.setOrderDate("---< " + orderXmlVO.getOrderDate() + "订单日期格式错误 >---"); + error = false; + } else { + orderDate = (LocalDate) mapDate.get("date"); + } + } + mapDate = ToolUtil.changeDate(orderXmlVO.getDeliveryDate(), formatter); + if (orderXmlVO.getDeliveryDate() == null) { + orderXmlVO.setDeliveryDate("---< 出货日期不能为空 >---"); + error = false; + } else { + if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { + orderXmlVO.setDeliveryDate("---< " + orderXmlVO.getDeliveryDate() + "出货日期格式错误 >---"); + error = false; + } else { + deliverDate = (LocalDate) mapDate.get("date"); + if (orderDate != null && deliverDate.isBefore(orderDate)) { + deliverDate = orderDate.plus(30, ChronoUnit.DAYS); + } + } + } + OrderDO orderDO = new OrderDO(); + if (error){ + assert orderDate != null; + orderDO = OrderDO.builder() + .organId(organId) + .dataType(DataTypeEnum.FILE_IMPORT.getStatus()) + .customer(orderXmlVO.getCustomer()) + .customOrderNo(orderXmlVO.getCustomOrderNo()) + .dealer(orderXmlVO.getDealer()) + .dealerPhoneNumber(orderXmlVO.getDealerPhone()) + .address(orderXmlVO.getCustomerAddress()) + .phoneNumber(orderXmlVO.getCustomerPhone()) + .salesman(orderXmlVO.getSeller()) + .splitter(orderXmlVO.getAnalyst()) + .remark(orderXmlVO.getMemo()) + .orderDate(orderDate.atStartOfDay()) + .deliveryDate(deliverDate.atStartOfDay()) + .orderType(OrderTypeEnum.MAIN_ORDER.getStatus()) + .build(); + } + + // 生产单信息验证 + map.put("order", orderDO); + map.put("file", orderXmlVO); + map.put("error", error); + return map; + } + + // 数据格式转换 + public Boolean checkVO(OrderXmlVO orderXmlVO) { + Boolean flag = true; + + RoomXmlVOS roomXmlVOS = orderXmlVO.getRoomXmlVOS(); + if ( roomXmlVOS != null ) { + checkRoom(roomXmlVOS, flag); + } + + ModuleXmlVOS moduleXmlVOS = orderXmlVO.getModuleXmlVOS(); + if ( moduleXmlVOS != null ) { + checkModules(moduleXmlVOS, flag); + } + + GroupXmlVOS grooveXmlVOS = orderXmlVO.getGroupXmlVOS(); + if ( grooveXmlVOS != null ) { + checkGroups(grooveXmlVOS, flag); + } + + MaterialXmlVO materialXmlVO = orderXmlVO.getMaterialXmlVO(); + if ( materialXmlVO != null ) { + PlateXmlVOS plateXmlVOS = materialXmlVO.getPlateXmlVOS(); + if (plateXmlVOS != null) { + + } else { + materialXmlVO.setPlateXmlVOS(new PlateXmlVOS().setResult("---< 板材信息不能为空 >---")); + } + } + + return flag; + } + + // 房间数据格式验证 + public void checkRoom(RoomXmlVOS roomXmlVOS, Boolean error) { + if (StringUtils.isEmpty(roomXmlVOS.getCount())) { + roomXmlVOS.setCount("---< 房间数量不能为空 >---"); + error = false; + } else { + if (ToolUtil.convertToType(roomXmlVOS.getCount(), Integer.class)){ + if (!ToolUtil.checkNumber(roomXmlVOS.getCount())){ + roomXmlVOS.setCount("---< " + roomXmlVOS.getCount() + POSITIVE_ERR + " >---"); + error = false; + } + } else { + roomXmlVOS.setCount("---< " + roomXmlVOS.getCount() + TYPE_ERR + " >---"); + error = false; + } + } + for ( RoomXmlVO room : roomXmlVOS.getRoomXmlVOList() ) { + if (room != null){ + if (StringUtils.isEmpty(room.getId())){ + room.setId("---< 房间编号不能为空 >---"); + error = false; + } + if (StringUtils.isEmpty(room.getName())){ + room.setName("---< 房间名称不能为空 >---"); + error = false; + } + if (!StringUtils.isEmpty(room.getHeight()) ){ + Boolean flag = checkNumber(room.getHeight(), Double.class); + if (!flag) { + room.setHeight("---< " + room.getHeight() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + room.setHeight("0"); + } + if (!StringUtils.isEmpty(room.getLength()) ){ + Boolean flag = checkNumber(room.getLength(), Double.class); + if (!flag) { + room.setLength("---< " + room.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + room.setLength("0"); + } + if (!StringUtils.isEmpty(room.getWidth()) ){ + Boolean flag = checkNumber(room.getWidth(), Double.class); + if (!flag) { + room.setWidth("---< " + room.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + }else { + room.setWidth("0"); + } + + if (room.getBoxXmlVOList() != null && room.getBoxXmlVOList().size() > 0){ + checkBoxList(room.getBoxXmlVOList(), error); + } + } + } + } + // 柜体数据格式验证 + public void checkBoxList(List boxXmlVOList, Boolean error) { + for ( BoxXmlVO box : boxXmlVOList ) { + if (StringUtils.isEmpty(box.getId())){ + box.setId("---< 柜体编号不能为空 >---"); + error = false; + } + if (StringUtils.isEmpty(box.getName())){ + box.setName("---< 柜体名称不能为空 >---"); + error = false; + } + if (!StringUtils.isEmpty(box.getHeight()) ){ + Boolean flag = checkNumber(box.getHeight(), Double.class); + if (!flag) { + box.setHeight("---< " + box.getHeight() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + box.setHeight("0"); + } + if (!StringUtils.isEmpty(box.getLength()) ){ + Boolean flag = checkNumber(box.getLength(), Double.class); + if (!flag) { + box.setLength("---< " + box.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + box.setLength("0"); + } + if (!StringUtils.isEmpty(box.getWidth()) ){ + Boolean flag = checkNumber(box.getWidth(), Double.class); + if (!flag) { + box.setWidth("---< " + box.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + box.setWidth("0"); + } + if (!StringUtils.isEmpty(box.getBasePointX())){ + if (!ToolUtil.convertToType(box.getBasePointX(), Double.class)) { + box.setBasePointX("---< " + box.getBasePointX() + TYPE_ERR + " >---"); + } + } else { + box.setBasePointX("0"); + } + if (!StringUtils.isEmpty(box.getBasePointY())){ + if (!ToolUtil.convertToType(box.getBasePointY(), Double.class)) { + box.setBasePointY("---< " + box.getBasePointY() + TYPE_ERR + " >---"); + } + } else { + box.setBasePointY("0"); + } + if (!StringUtils.isEmpty(box.getBasePointZ())){ + if (!ToolUtil.convertToType(box.getBasePointZ(), Double.class)) { + box.setBasePointZ("---< " + box.getBasePointZ() + TYPE_ERR + " >---"); + } + } else { + box.setBasePointZ("0"); + } + if (!StringUtils.isEmpty(box.getAxisYrotate())){ + if (!ToolUtil.convertToType(box.getAxisYrotate(), Double.class)) { + box.setAxisYrotate("---< " + box.getAxisYrotate() + TYPE_ERR + " >---"); + } + } else { + box.setAxisYrotate("0"); + } + if (!StringUtils.isEmpty(box.getAxisXrotate())){ + if (!ToolUtil.convertToType(box.getAxisXrotate(), Double.class)) { + box.setAxisXrotate("---< " + box.getAxisXrotate() + TYPE_ERR + " >---"); + } + } else { + box.setAxisXrotate("0"); + } + if (!StringUtils.isEmpty(box.getAxisZrotate())){ + if (!ToolUtil.convertToType(box.getAxisZrotate(), Double.class)) { + box.setAxisZrotate("---< " + box.getAxisZrotate() + TYPE_ERR + " >---"); + } + } else { + box.setAxisZrotate("0"); + } + } + } + + // 模块数据格式验证 + public void checkModules(ModuleXmlVOS moduleXmlVOS, Boolean error) { + if (StringUtils.isEmpty(moduleXmlVOS.getCount())) { + moduleXmlVOS.setCount("---< 模块数量不能为空 >---"); + error = false; + } else { + if (ToolUtil.convertToType(moduleXmlVOS.getCount(), Integer.class)){ + if (!ToolUtil.checkNumber(moduleXmlVOS.getCount())){ + moduleXmlVOS.setCount("---< " + moduleXmlVOS.getCount() + POSITIVE_ERR + " >---"); + error = false; + } + } else { + moduleXmlVOS.setCount("---< " + moduleXmlVOS.getCount() + TYPE_ERR + " >---"); + error = false; + } + } + if (moduleXmlVOS.getModuleXmlVOList() != null && moduleXmlVOS.getModuleXmlVOList().size() > 0){ + checkModuleList(moduleXmlVOS.getModuleXmlVOList(), error); + } + + } + // 模块数据格式验证 + public void checkModuleList(List moduleXmlVOSList, Boolean error) { + for ( ModuleXmlVO module : moduleXmlVOSList ) { + if (StringUtils.isEmpty(module.getId())){ + module.setId("---< 柜体编号不能为空 >---"); + error = false; + } + if (StringUtils.isEmpty(module.getName())){ + module.setName("---< 柜体名称不能为空 >---"); + error = false; + } + if (!StringUtils.isEmpty(module.getLength()) ){ + Boolean flag = checkNumber(module.getLength(), Double.class); + if (!flag) { + module.setLength("---< " + module.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + module.setLength("0"); + } + if (!StringUtils.isEmpty(module.getWidth()) ){ + Boolean flag = checkNumber(module.getWidth(), Double.class); + if (!flag) { + module.setWidth("---< " + module.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + module.setWidth("0"); + } + if (!StringUtils.isEmpty(module.getHeight()) ){ + Boolean flag = checkNumber(module.getHeight(), Double.class); + if (!flag) { + module.setHeight("---< " + module.getHeight() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + module.setHeight("0"); + } + } + } + + // 加工组数据格式验证 + public void checkGroups(GroupXmlVOS groupXmlVOS, Boolean error) { + if (StringUtils.isEmpty(groupXmlVOS.getCount())) { + groupXmlVOS.setCount("---< 模块数量不能为空 >---"); + error = false; + } else { + if (ToolUtil.convertToType(groupXmlVOS.getCount(), Integer.class)){ + if (!ToolUtil.checkNumber(groupXmlVOS.getCount())){ + groupXmlVOS.setCount("---< " + groupXmlVOS.getCount() + POSITIVE_ERR + " >---"); + error = false; + } + } else { + groupXmlVOS.setCount("---< " + groupXmlVOS.getCount() + TYPE_ERR + " >---"); + error = false; + } + } + if (groupXmlVOS.getGroupXmlVOList() != null && groupXmlVOS.getGroupXmlVOList().size() > 0){ + checkGroupList(groupXmlVOS.getGroupXmlVOList(), error); + } + } + // 加工组数据格式验证 + public void checkGroupList(List groupXmlVOList, Boolean error) { + for ( GroupXmlVO group : groupXmlVOList ) { + if (StringUtils.isEmpty(group.getId())){ + group.setId("---< 加工组编号不能为空 >---"); + error = false; + } + if (StringUtils.isEmpty(group.getName())){ + group.setName("---< 加工组名称不能为空 >---"); + error = false; + } + if (!StringUtils.isEmpty(group.getLength()) ){ + Boolean flag = checkNumber(group.getLength(), Double.class); + if (!flag) { + group.setLength("---< " + group.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + group.setLength("0"); + } + if (!StringUtils.isEmpty(group.getWidth()) ){ + Boolean flag = checkNumber(group.getWidth(), Double.class); + if (!flag) { + group.setWidth( "---< " + group.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + group.setWidth("0"); + } + if (!StringUtils.isEmpty(group.getHeight()) ){ + Boolean flag = checkNumber(group.getHeight(), Double.class); + if (!flag) { + group.setHeight("---< " + group.getHeight() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } else { + group.setHeight("0"); + } + } + } + + // 板材数据格式验证 + public void checkPlates(List plateXmlVOList, Boolean error) { + for ( PlateXmlVO plate : plateXmlVOList ) { + if (StringUtils.isEmpty(plate.getName())){ + plate.setId("---< 板材名称不能为空 >---"); + error = false; + } + if (StringUtils.isEmpty(plate.getMaterial())){ + plate.setItemNo("---< 板材材质不能为空 >---"); + error = false; + } + // 纹理有效性判断 + if (StringUtils.isEmpty(plate.getGrained())) { + plate.setGrained("有"); + } else { + if (!StringUtils.equals(plate.getGrained().trim(), "无") && !StringUtils.equals(plate.getGrained().trim(), "有")) { + plate.setGrained("---< " + plate.getGrained() + " 板材纹理无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(plate.getCoatingObverse())) { + plate.setCoatingObverse("---< 板材正面颜色不可为空>---"); + } + if (StringUtils.isEmpty(plate.getLength())){ + plate.setLength("---< 板材长度不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(plate.getLength(), Double.class); + if (!flag) { + plate.setLength("---< " + plate.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getLength(), 5, 3)){ + plate.setLength("---< " + plate.getLength() + LONG_ERR + " >---"); + error = false; + } + } + } + if (StringUtils.isEmpty(plate.getWidth())){ + plate.setWidth("---< 板材宽度不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(plate.getWidth(), Double.class); + if (!flag) { + plate.setWidth("---< " + plate.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getWidth(), 5, 3)){ + plate.setWidth("---< " + plate.getWidth() + LONG_ERR + " >---"); + error = false; + } + } + } + if (StringUtils.isEmpty(plate.getThickness())){ + plate.setThickness("---< 板材宽度不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(plate.getThickness(), Double.class); + if (!flag) { + plate.setThickness("---< " + plate.getThickness() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getThickness(), 5, 3)){ + plate.setThickness("---< " + plate.getThickness() + LONG_ERR + " >---"); + error = false; + } + } + } + if (!StringUtils.isEmpty(plate.getOddmentLength())){ + Boolean flag = checkNumber(plate.getOddmentLength(), Double.class); + if (!flag) { + plate.setOddmentLength("---< " + plate.getOddmentLength() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getOddmentLength(), 5, 3)){ + plate.setOddmentLength("---< " + plate.getOddmentLength() + LONG_ERR + " >---"); + error = false; + } + } + } + if (!StringUtils.isEmpty(plate.getOddmentWidth())){ + Boolean flag = checkNumber(plate.getOddmentWidth(), Double.class); + if (!flag) { + plate.setOddmentWidth("---< " + plate.getOddmentWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getOddmentWidth(), 5, 3)){ + plate.setOddmentWidth("---< " + plate.getOddmentWidth() + LONG_ERR + " >---"); + error = false; + } + } + } + if (!StringUtils.isEmpty(plate.getOddmentThickness())){ + Boolean flag = checkNumber(plate.getOddmentThickness(), Double.class); + if (!flag) { + plate.setOddmentThickness("---< " + plate.getOddmentThickness() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkPrecision(plate.getOddmentThickness(), 5, 3)){ + plate.setOddmentThickness("---< " + plate.getOddmentThickness() + LONG_ERR + " >---"); + error = false; + } + } + } + if (!StringUtils.isEmpty(plate.getOddment())) { + if (!StringUtils.equals(plate.getOddment().trim(), "是") && !StringUtils.equals(plate.getOddment().trim(), "否")) { + plate.setGrained("---< " + plate.getOddment() + "板材是否余料标识无效无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(plate.getUnitLength())){ + plate.setThickness("---< 板材长度单位不可为空>---"); + error = false; + } + if (StringUtils.isEmpty(plate.getArea())){ + plate.setArea("---< 板材面积不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(plate.getArea(), Double.class); + if (!flag) { + plate.setArea("---< " + plate.getArea() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + + if (plate.getBlockXmlVOS() != null) { + checkBlocks(plate.getBlockXmlVOS(), error); + } + } + } + // 小板数据格式验证 + public void checkBlocks(BlockXmlVOS blockXmlVOS, Boolean error) { + if (StringUtils.isNotEmpty(blockXmlVOS.getCount())) { + blockXmlVOS.setCount("---< 小板片数不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(blockXmlVOS.getCount(), Integer.class); + if (!flag) { + blockXmlVOS.setCount("---< " + blockXmlVOS.getCount() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkNumber(blockXmlVOS.getCount())){ + blockXmlVOS.setCount("---< " + blockXmlVOS.getCount() + POSITIVE_ERR + " >---"); + error = false; + } + } + } + if (StringUtils.isNotEmpty(blockXmlVOS.getArea())) { + blockXmlVOS.setArea("---< 小板总面积不可为空>---"); + error = false; + } else { + Boolean flag = checkNumber(blockXmlVOS.getArea(), Integer.class); + if (!flag) { + blockXmlVOS.setArea("---< " + blockXmlVOS.getArea() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } else { + if (!ToolUtil.checkNumber(blockXmlVOS.getArea())){ + blockXmlVOS.setArea("---< " + blockXmlVOS.getArea() + POSITIVE_ERR + " >---"); + error = false; + } + } + } + if (StringUtils.isNotEmpty(blockXmlVOS.getCount())) { + blockXmlVOS.setArea("---< 小板面积单位不可为空>---"); + error = false; + } + + if (blockXmlVOS.getBlockXmlVOList() != null) { + checkBlockList(blockXmlVOS.getBlockXmlVOList(), error); + } + } + // 板块数据格式验证 + public void checkBlockList(List blockXmlVOList, Boolean error) { + if (blockXmlVOList.size() > 0) { + for (BlockXmlVO blockXmlVO : blockXmlVOList) { + if (StringUtils.isEmpty(blockXmlVO.getName())){ + blockXmlVO.setName("未命名"); + } + if (StringUtils.isEmpty(blockXmlVO.getType())) { + blockXmlVO.setType("---< 板块类型不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.PLATE_TYPE, blockXmlVO.getType()).getData(); + if (dictData == null) { + blockXmlVO.setType("---< " + blockXmlVO.getType() + "板块类型无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getOpenDirection())) { + blockXmlVO.setOpenDirection("---< 板块开门方向不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.DOOR_OPENING_DIRECTIONS, blockXmlVO.getOpenDirection()).getData(); + if (dictData == null) { + blockXmlVO.setOpenDirection("---< " + blockXmlVO.getOpenDirection() + "板块开门方向无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getTexture())) { + blockXmlVO.setTexture("---< 板块设计纹路不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.DOOR_OPENING_DIRECTIONS, blockXmlVO.getTexture()).getData(); + if (dictData == null) { + blockXmlVO.setTexture("---< " + blockXmlVO.getTexture() + "板块设计纹路无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getLayoutFace())) { + blockXmlVO.setLayoutFace("---< 板块排版面不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.TYPOGRAPHY_TYPE, blockXmlVO.getLayoutFace()).getData(); + if (dictData == null) { + blockXmlVO.setLayoutFace("---< " + blockXmlVO.getLayoutFace() + "板块排版面无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getCoatingType())) { + blockXmlVO.setCoatingType("---< 板块设计饰面不可为空 >---"); + error = false; + } + if (StringUtils.isEmpty(blockXmlVO.getCoatingObverse())) { + blockXmlVO.setCoatingObverse("---< 板块正面颜色不可为空 >---"); + error = false; + } + if (StringUtils.isEmpty(blockXmlVO.getCoatingObverse())) { + blockXmlVO.setCoatingReverse("---< 板块反面颜色不可为空 >---"); + error = false; + } + if (StringUtils.isEmpty(blockXmlVO.getLength())) { + blockXmlVO.setLength("---< 板块长度不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getLength(), Double.class,5, 3)){ + blockXmlVO.setLength("---< " + blockXmlVO.getLength() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getWidth())) { + blockXmlVO.setWidth("---< 板块宽度不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getWidth(), Double.class,5, 3)){ + blockXmlVO.setWidth("---< " + blockXmlVO.getWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getThickness())) { + blockXmlVO.setThickness("---< 板块厚度不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getThickness(), Double.class,5, 3)){ + blockXmlVO.setThickness("---< " + blockXmlVO.getThickness() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getCuttingLength())) { + blockXmlVO.setCuttingLength("---< 板块开料长不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getThickness(), Double.class,5, 3)){ + blockXmlVO.setCuttingLength("---< " + blockXmlVO.getCuttingLength() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getCuttingWidth())) { + blockXmlVO.setCuttingWidth("---< 板块开料宽不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getCuttingWidth(), Double.class,5, 3)){ + blockXmlVO.setCuttingWidth("---< " + blockXmlVO.getCuttingWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getCuttingThickness())) { + blockXmlVO.setCuttingThickness("---< 板块开料厚不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getCuttingThickness(), Double.class,5, 3)){ + blockXmlVO.setCuttingThickness("---< " + blockXmlVO.getCuttingThickness() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getRawLength())) { + blockXmlVO.setRawLength("---< 板块胚料长不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getRawLength(), Double.class,5, 3)){ + blockXmlVO.setRawLength("---< " + blockXmlVO.getRawLength() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getRawWidth())) { + blockXmlVO.setRawWidth("---< 板块胚料宽不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getRawWidth(), Double.class,5, 3)){ + blockXmlVO.setRawWidth("---< " + blockXmlVO.getRawWidth() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getRawThickness())) { + blockXmlVO.setRawThickness("---< 板块胚料厚不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getRawThickness(), Double.class,5, 3)){ + blockXmlVO.setRawThickness("---< " + blockXmlVO.getRawThickness() + POSITIVE_ERR + "或是" + TYPE_ERR + "或是" + LONG_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getUnitLength())) { + blockXmlVO.setRawThickness("---< 板块长度单位不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.UNIT_LENGTH, blockXmlVO.getUnitLength()).getData(); + if (dictData == null){ + blockXmlVO.setUnitLength("---< " + blockXmlVO.getUnitLength() + " 长度单位无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getArea())) { + blockXmlVO.setArea("---< 板块成品面积不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getArea(), Double.class)){ + blockXmlVO.setArea("---< " + blockXmlVO.getArea() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getAreaCutting())){ + blockXmlVO.setAreaCutting("---< 板块开料面积不可为空 >---"); + error = false; + } else { + if (!checkNumber(blockXmlVO.getAreaCutting(), Double.class)){ + blockXmlVO.setAreaCutting("---< " + blockXmlVO.getAreaCutting() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getUnitArea())) { + blockXmlVO.setUnitArea("---< 板块面积单位不可为空 >---"); + error = false; + } else { + DictDataRespDTO dictData = dictDataApi.parseDictData(DictTypeConstants.UNIT_AREA, blockXmlVO.getUnitArea()).getData(); + if (dictData == null){ + blockXmlVO.setUnitArea("---< " + blockXmlVO.getUnitArea() + "面积单位无效 >---"); + } + } + if (StringUtils.isEmpty(blockXmlVO.getMultipleNumber())){ + blockXmlVO.setMultipleNumber("1"); + } else { + if (!checkNumber(blockXmlVO.getMultipleNumber(), Integer.class)){ + blockXmlVO.setMultipleNumber("---< " + blockXmlVO.getMultipleNumber() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getUnregular())){ + blockXmlVO.setUnregular("---< 板块是否异形不可为空 >---"); + error = false; + } else { + if (!StringUtils.equals(blockXmlVO.getUnregular().trim(), "是") && !StringUtils.equals(blockXmlVO.getUnregular().trim(), "否")) { + blockXmlVO.setUnregular("---< " + blockXmlVO.getUnregular() + "板材是否异形数据无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getDrilling())){ + blockXmlVO.setDrilling("---< 板块是否钻孔不可为空 >---"); + error = false; + } else { + if (!StringUtils.equals(blockXmlVO.getDrilling().trim(), "是") && !StringUtils.equals(blockXmlVO.getDrilling().trim(), "否")) { + blockXmlVO.setDrilling("---< " + blockXmlVO.getDrilling()+ "板材是否钻孔数据无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getSlotting())){ + blockXmlVO.setSlotting("---< 板块是否挖槽不可为空 >---"); + error = false; + } else { + if (!StringUtils.equals(blockXmlVO.getSlotting().trim(), "是") && !StringUtils.equals(blockXmlVO.getSlotting().trim(), "否")) { + blockXmlVO.setSlotting("---< " + blockXmlVO.getSlotting() + "板材是否挖槽数据无效 >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getBasePointX())){ + blockXmlVO.setBasePointX("---< 板块基点X坐标不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getBasePointX(), Double.class)) { + blockXmlVO.setBasePointX("---< " + blockXmlVO.getBasePointX() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getBasePointY())){ + blockXmlVO.setBasePointY("---< 板块基点Y坐标不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getBasePointX(), Double.class)) { + blockXmlVO.setBasePointY("---< " + blockXmlVO.getBasePointY() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getBasePointZ())){ + blockXmlVO.setBasePointZ("---< 板块基点X坐标不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getBasePointZ(), Double.class)) { + blockXmlVO.setBasePointZ("---< " + blockXmlVO.getBasePointZ() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getAxisXrotate())){ + blockXmlVO.setAxisXrotate("---< 板块绕X轴旋转角度不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getAxisXrotate(), Double.class)) { + blockXmlVO.setAxisXrotate("---< " + blockXmlVO.getAxisXrotate() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getAxisYrotate())){ + blockXmlVO.setAxisYrotate("---< 板块绕Y轴旋转角度不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getAxisYrotate(), Double.class)) { + blockXmlVO.setAxisYrotate("---< " + blockXmlVO.getAxisYrotate() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(blockXmlVO.getAxisZrotate())){ + blockXmlVO.setAxisZrotate("---< 板块绕Z轴旋转角度不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(blockXmlVO.getAxisZrotate(), Double.class)) { + blockXmlVO.setAxisZrotate("---< " + blockXmlVO.getAxisZrotate() + TYPE_ERR + " >---"); + error = false; + } + } + + if (blockXmlVO.getOutlineXmlVO() != null){ + checkOutline(blockXmlVO.getOutlineXmlVO(), error); + } + + } + } + } + + // 成品轮廓数据验证 + public void checkOutline(OutlineXmlVO outlineXmlVO, Boolean error) { + if (!StringUtils.isNotEmpty(outlineXmlVO.getCount())){ + Boolean flag = checkNumber(outlineXmlVO.getCount(), Integer.class); + if (!flag) { + outlineXmlVO.setCount("---< " + outlineXmlVO.getCount() + POSITIVE_ERR + "或是" + TYPE_ERR + " >---"); + error = false; + } + } + if (outlineXmlVO.getPointXmlVOList() != null && outlineXmlVO.getPointXmlVOList().size() > 0){ + for (PointXmlVO pointXmlVO : outlineXmlVO.getPointXmlVOList()) { + if (StringUtils.isEmpty(pointXmlVO.getPointX())){ + pointXmlVO.setPointX("---< 板块轮廓起点坐标X不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(pointXmlVO.getPointX(), Double.class)) { + pointXmlVO.setPointX("---< " + pointXmlVO.getPointX() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(pointXmlVO.getPointY())){ + pointXmlVO.setPointY("---< 板块轮廓起点坐标Y不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(pointXmlVO.getPointY(), Double.class)) { + pointXmlVO.setPointY("---< " + pointXmlVO.getPointY() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(pointXmlVO.getCurvature())){ + pointXmlVO.setPointZ("---< 板块轮廓边圆弧凹凸度不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(pointXmlVO.getCurvature(), Double.class)) { + pointXmlVO.setCurvature("---< " + pointXmlVO.getCurvature() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(pointXmlVO.getRadius())){ + pointXmlVO.setRadius("---< 板块轮廓边圆弧半径不可为空 >---"); + error = false; + } else { + if (!ToolUtil.convertToType(pointXmlVO.getRadius(), Double.class)) { + pointXmlVO.setRadius("---< " + pointXmlVO.getRadius() + TYPE_ERR + " >---"); + error = false; + } + } + if (StringUtils.isEmpty(pointXmlVO.getEdgingId())){ + pointXmlVO.setProcess("---< 板块轮廓封边条ID不可为空 >---"); + error = false; + } + + } + } + } + // 数据格式+数据正数判断 + private Boolean checkNumber(String numberStr, Class targetType) { + boolean error = true; + if (ToolUtil.convertToType(numberStr, targetType)) { + if (!ToolUtil.checkNumber(numberStr)){ + error = false; + } + } else { + error = false; + } + return error; + } + // 数据格式+数据正数+数据长度判断 + private Boolean checkNumber(String numberStr, Class targetType, Integer length, Integer decimalLength) { + Boolean flag = checkNumber(numberStr, targetType); + if (!flag) { + return false; + } else { + if (!ToolUtil.checkPrecision(numberStr, length, decimalLength)) { + return false; + } + } + return true; + } +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlBuilder.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlBuilder.java index f1793cba4..a4d691227 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlBuilder.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlBuilder.java @@ -3,8 +3,10 @@ package com.cf.imes.module.executor.util.fileConversion.admin.files.xml; import java.io.Reader; import java.io.StringReader; +import java.io.StringWriter; import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; /** @@ -38,5 +40,23 @@ public class XmlBuilder { return xmlObject; } + /** + * 将指定的POJO转为XML + * @param object 要转换的对象 + * @return XML 字符串 + * @throws Exception 如果转换过程中出现错误 + */ + public static String objectToXmlStr(Object object) throws Exception { + StringWriter writer = new StringWriter(); + JAXBContext context = JAXBContext.newInstance(object.getClass()); + + // 对象转为XML的接口 + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.marshal(object, writer); + + return writer.toString(); + } + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java index b1ac1cb6b..2d3b74cfe 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/xml/XmlTypeRealize.java @@ -1,21 +1,18 @@ package com.cf.imes.module.executor.util.fileConversion.admin.files.xml; import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; -import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; -import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO; -import com.cf.imes.module.executor.enums.DataTypeEnum; import com.cf.imes.module.executor.util.deviseData.structure.*; import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd; -import com.cf.imes.module.executor.util.fileConversion.admin.ToolUtil; import com.cf.imes.module.executor.util.fileConversion.admin.files.xml.VO.*; import com.cf.imes.module.system.api.dict.DictDataApi; import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO; @@ -26,8 +23,6 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -55,82 +50,6 @@ public class XmlTypeRealize { @Resource private IdentifierGenerator identifierGenerator; - // 数据转换 + 错误验证 - public Map> changeDate(OrderXmlVO orderXmlVO, Long orderId, Long organId) { - if (orderXmlVO == null) { - return null; - } - Map> map = new HashMap<>(); - - return null; - } - - // 生产单转换 - public Map changeOrder(OrderXmlVO orderXmlVO, Long organId) { - Map map = new HashMap<>(); - String error = ""; - - if (orderXmlVO.getCustomOrderNo() == null) { - error += "客户不能为空;"; - } - if (orderXmlVO.getDealer() == null) { - error += "经销商不能为空;"; - } - if (orderXmlVO.getCustomerAddress() == null) { - error += "客户地址不能为空;"; - } - if (orderXmlVO.getCustomerPhone() == null) { - error += "客户电话不能为空;"; - } else { - if (!ToolUtil.validatePhoneNumber(orderXmlVO.getCustomerPhone())) { - error += orderXmlVO.getCustomerPhone() + "-客户电话格式错误;"; - } - } - if (orderXmlVO.getDealerPhone() != null) { - if (!ToolUtil.validatePhoneNumber(orderXmlVO.getDealerPhone())) { - error += orderXmlVO.getDealerPhone() + "-经销商电话格式错误;"; - } - } - OrderDO orderDO = OrderDO.builder() - .organId(organId) - .dataType(DataTypeEnum.FILE_IMPORT.getStatus()) - .customer(orderXmlVO.getCustomer()) - .customOrderNo(orderXmlVO.getCustomOrderNo()) - .dealer(orderXmlVO.getDealer()) - .dealerPhoneNumber(orderXmlVO.getDealerPhone()) - .address(orderXmlVO.getCustomerAddress()) - .phoneNumber(orderXmlVO.getCustomerPhone()) - .salesman(orderXmlVO.getSeller()) - .splitter(orderXmlVO.getAnalyst()) - .remark(orderXmlVO.getMemo()) - .build(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - Map mapDate = ToolUtil.changeDate(orderXmlVO.getOrderDate(), formatter); - if (orderXmlVO.getOrderDate() == null) { - error += "-订单日期不可为空;"; - } else { - if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { - error += orderXmlVO.getOrderDate() + "-订单日期格式错误;"; - } else { - orderDO.setOrderDate(((LocalDate) mapDate.get("date")).atStartOfDay()); - } - } - mapDate = ToolUtil.changeDate(orderXmlVO.getDeliveryDate(), formatter); - if (orderXmlVO.getDeliveryDate() == null) { - error += "-出货日期不可为空;"; - } else { - if (mapDate.get("error") instanceof Integer && (Integer) mapDate.get("error") == -1) { - error += orderXmlVO.getDeliveryDate() + "-出货日期格式错误;"; - } else { - orderDO.setDeliveryDate(((LocalDate) mapDate.get("date")).atStartOfDay()); - } - } - - map.put("order", orderDO); - map.put("error", error); - return map; - } - // 房间柜体信息转换 public Map> bodyInfoChange(RoomXmlVOS roomXmlVOS, Long orderId, Long organId) { @@ -170,12 +89,12 @@ public class XmlTypeRealize { for (RoomXmlVO roomXmlVO : roomXmlVOS.getRoomXmlVOList()) { for (BoxXmlVO boxXmlVO : roomXmlVO.getBoxXmlVOList()) { BasePosition basePosition = BasePosition.builder() - .basePointX(boxXmlVO.getBasePointX()) - .basePointY(boxXmlVO.getBasePointY()) - .basePointZ(boxXmlVO.getBasePointZ()) - .axisXrotate(boxXmlVO.getAxisXrotate()) - .axisYrotate(boxXmlVO.getAxisYrotate()) - .axisZrotate(boxXmlVO.getAxisZrotate()) + .basePointX(Double.valueOf(boxXmlVO.getBasePointX())) + .basePointY(Double.valueOf(boxXmlVO.getBasePointY())) + .basePointZ(Double.valueOf(boxXmlVO.getBasePointZ())) + .axisXrotate(Double.valueOf(boxXmlVO.getAxisXrotate())) + .axisYrotate(Double.valueOf(boxXmlVO.getAxisYrotate())) + .axisZrotate(Double.valueOf(boxXmlVO.getAxisZrotate())) .build(); basePositions.put(boxXmlVO.getId(), basePosition); } @@ -248,6 +167,12 @@ public class XmlTypeRealize { // 板材 小板 if (plateXmlVOS.getPlateXmlVOList() != null && plateXmlVOS.getPlateXmlVOList().size() > 0) { for (PlateXmlVO plateXmlVO : plateXmlVOS.getPlateXmlVOList()) { + if (StringUtils.equals(plateXmlVO.getGrained().trim(), "无")) { + plateXmlVO.setGrained("false"); + } else if (StringUtils.equals(plateXmlVO.getGrained().trim(), "有")) { + plateXmlVO.setGrained("true"); + } + Long rawGoodsId = (Long) identifierGenerator.nextId(null); Long goodsId = (Long) identifierGenerator.nextId(null); rawGoodsDOs.add(RawGoodsDO.builder() @@ -259,7 +184,7 @@ public class XmlTypeRealize { .material(plateXmlVO.getMaterial()) .color(plateXmlVO.getCoatingObverse()) .colorBlack(plateXmlVO.getCoatingReverse()) - .texture(ToolUtil.convertToType(plateXmlVO.getGrained(), Boolean.class) ? Boolean.valueOf(plateXmlVO.getGrained()) : false) + .texture(Boolean.valueOf(plateXmlVO.getGrained())) .thickness(Double.parseDouble(plateXmlVO.getThickness())) .brand(plateXmlVO.getBrand()) .spec(plateXmlVO.getSpecs()) @@ -275,7 +200,7 @@ public class XmlTypeRealize { .material(plateXmlVO.getMaterial()) .color(plateXmlVO.getCoatingObverse()) .colorBlack(plateXmlVO.getCoatingReverse()) - .texture(ToolUtil.convertToType(plateXmlVO.getGrained(), Boolean.class) ? Boolean.valueOf(plateXmlVO.getGrained()) : false) + .texture(Boolean.valueOf(plateXmlVO.getGrained())) .width(BigDecimal.valueOf(Double.parseDouble(plateXmlVO.getWidth()))) .height(BigDecimal.valueOf(Double.parseDouble(plateXmlVO.getLength()))) .thickness(BigDecimal.valueOf(Double.parseDouble(plateXmlVO.getThickness()))) @@ -617,7 +542,7 @@ public class XmlTypeRealize { .area(area) .texture(Integer.valueOf(dictDataApi.parseDictData(DictTypeConstants.GRAIN_TYPE, blockXmlVO.getTexture()).getData().getValue())) .holeFace(Integer.valueOf(dictDataApi.parseDictData(DictTypeConstants.TYPOGRAPHY_TYPE, blockXmlVO.getLayoutFace()).getData().getValue())) - .isDoor(doorType == 0) + .isDoor(doorType != 0) .openDoorType(doorType) .isSpecialShaped(convertToBoolean(blockXmlVO.getUnregular())) .build(); @@ -637,12 +562,12 @@ public class XmlTypeRealize { // 基点坐标获取 BasePosition plateBasePosition = BasePosition.builder() .basePoint(blockXmlVO.getId()) - .basePointX(blockXmlVO.getBasePointX()) - .basePointY(blockXmlVO.getBasePointY()) - .basePointZ(blockXmlVO.getBasePointZ()) - .axisXrotate(blockXmlVO.getAxisXrotate()) - .axisYrotate(blockXmlVO.getAxisYrotate()) - .axisZrotate(blockXmlVO.getAxisZrotate()) + .basePointX(Double.valueOf(blockXmlVO.getBasePointX())) + .basePointY(Double.valueOf(blockXmlVO.getBasePointY())) + .basePointZ(Double.valueOf(blockXmlVO.getBasePointZ())) + .axisXrotate(Double.valueOf(blockXmlVO.getAxisXrotate())) + .axisYrotate(Double.valueOf(blockXmlVO.getAxisYrotate())) + .axisZrotate(Double.valueOf(blockXmlVO.getAxisZrotate())) .build(); PlateDetail plateDetail = PlateDetail.builder() .plateId(plateId) @@ -667,8 +592,8 @@ public class XmlTypeRealize { .holeDetail(new ArrayList<>()) .contourDetail(new ArrayList<>()) .sideHoleDetail(new ArrayList<>()) - .remark(new HashMap<>()) - .sideRemark(new HashMap<>()) + .plateRemark(new HashMap<>()) +// .sideRemark(new HashMap<>()) .isUnRegular(plateDO.getIsSpecialShaped()) .build(); // 小板、es 封边值 @@ -745,7 +670,7 @@ public class XmlTypeRealize { .radius(Double.parseDouble(pointXmlVO.getRadius())) .sealSize(size) .build()); - plateDetail.getSideRemark().put(pointXmlVO.getId(), pointXmlVO.getRemark()); +// plateDetail.getSideRemark().put(pointXmlVO.getId(), pointXmlVO.getRemark()); } } plateDetail.setSealUp(sealUp).setSealDown(sealDown).setSealLeft(sealLeft).setSealRight(sealRight); @@ -892,9 +817,9 @@ public class XmlTypeRealize { private void addRemark(PlateDO plateDO, PlateDetail plateDetail, BlockXmlVO blockXmlVO) { if (blockXmlVO.getRemarkXmlVOS() != null && blockXmlVO.getRemarkXmlVOS().getRemarkXmlVOList() != null && blockXmlVO.getRemarkXmlVOS().getRemarkXmlVOList().size() > 0) { for (RemarkXmlVO remarkXmlVO : blockXmlVO.getRemarkXmlVOS().getRemarkXmlVOList()) { - plateDetail.getRemark().put(remarkXmlVO.getName(), remarkXmlVO.getInfo()); + plateDetail.getPlateRemark().put(remarkXmlVO.getName(), remarkXmlVO.getInfo()); } - plateDO.setRemark(JSONObject.toJSONString(plateDetail.getRemark())); + plateDO.setRemark(JSONObject.toJSONString(plateDetail.getPlateRemark())); } } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/order_add_excel.xlsx b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/order_add_excel.xlsx index abdf894da..0778999da 100644 Binary files a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/order_add_excel.xlsx and b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/type/order_add_excel.xlsx differ