工作台接口修改

This commit is contained in:
lym
2024-09-14 16:31:38 +08:00
parent c3a471276a
commit e899eb2fea
21 changed files with 1389 additions and 362 deletions
@@ -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 模块 ==========
@@ -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<Long> getApiData(@RequestParam(value = "orderNo") String orderNo)
throws InterruptedException, ExecutionException {
public CommonResult<Long> 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<OrderPlateImportExcelVO> list = null;
OrderXmlVO orderXmlVO = null;
Map<String, Object> mapOrder = null;
String err = "";
OrderDO orderDO = null;
Map<String, Object> mapOrder;
Boolean flag = true;
if (type == 0) { //excel
excelReadUtil.setErr(0);
Map<String, Object> map = excelReadUtil.read(file);
if (excelReadUtil.isErr() > 0) {
ExcelWriterUtil.write(response, (Map<Object, Object>) map.get("order"), (List<OrderPlateImportExcelVO>) map.get("plate"),
orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx");
return;
list = (List<OrderPlateImportExcelVO>) map.get("plate");
mapOrder = (Map<String, Object>) map.get("orderPri");
if (index == 0) { // 全部
if (mapOrder != null) {
Map<String, Object> mapChange = excelReadUtil.changeOrderDO(mapOrder);
mapOrder = (Map<String, Object>) mapChange.get("file");
orderDO = (OrderDO) mapChange.get("order");
flag = (Boolean) mapChange.get("error");
}
} else {
list = (List<?>) map.get("plate");
mapOrder = (Map<String, Object>) 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<Map<String, PageResult<OrderOverdueRespVO>>> getOrderOverdue(@Valid PageParam pageParam) {
return success(orderService.getOrderWarn(pageParam));
public CommonResult<PageResult<OrderOverdueRespVO>> getOrderOverdue(@Valid PageParam pageParam) {
return success(orderService.getOrderOverdue(pageParam));
}
// 生产单到期告警 (工作台)
@GetMapping("/getOrderWarn")
@Operation(summary = "生产单到期告警 (工作台)")
@PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<PageResult<OrderOverdueRespVO>> getOrderNear(@Valid PageParam pageParam) {
return success(orderService.getOrderNear(pageParam));
}
}
@@ -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<OrderPlateImportExcelVO> list, OrderXmlVO orderXmlVO);
/**
* 生产导入文件模板下载
@@ -141,7 +142,12 @@ public interface OrderService {
/**
* 生产单超期告警分析统计
*/
Map<String,PageResult<OrderOverdueRespVO>> getOrderWarn(PageParam pageParam);
PageResult<OrderOverdueRespVO> getOrderOverdue(PageParam pageParam);
/**
* 生产单到期告警分析统计
*/
PageResult<OrderOverdueRespVO> getOrderNear(PageParam pageParam);
/**
@@ -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<OrderPlateImportExcelVO> 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<String, List<?>> 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> rawGoodsDO = (List<RawGoodsDO>) listMap.get("rawGoodsDOS");
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get("goodsDOS");
@@ -564,19 +578,21 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public Map<String, PageResult<OrderOverdueRespVO>> getOrderWarn(PageParam pageParam) {
Map<String, PageResult<OrderOverdueRespVO>> map = new HashMap<>();
public PageResult<OrderOverdueRespVO> getOrderOverdue(PageParam pageParam) {
LocalDate todayDate = LocalDate.now();
LocalDate tomorrow = LocalDate.now().plus(1, ChronoUnit.DAYS);
PageDTO<OrderOverdueRespVO> page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize());
// 查询预警单
IPage<OrderOverdueRespVO> orderNearVOS = orderMapper.selectOrderNear(tomorrow, OrganContextHolder.getOrganId(), page);
map.put("orderNearVOS", new PageResult<OrderOverdueRespVO>(orderNearVOS.getRecords(), orderNearVOS.getTotal()));
// 查询超时单
IPage<OrderOverdueRespVO> orderOverdueVOS = orderMapper.selectOrderOverdue(todayDate, OrganContextHolder.getOrganId(), page);
map.put("orderOverdueVOS", new PageResult<OrderOverdueRespVO>(orderOverdueVOS.getRecords(), orderOverdueVOS.getTotal()));
return map;
return new PageResult<OrderOverdueRespVO>(orderOverdueVOS.getRecords(), orderOverdueVOS.getTotal());
}
@Override
public PageResult<OrderOverdueRespVO> getOrderNear(PageParam pageParam) {
PageDTO<OrderOverdueRespVO> page = new PageDTO<>(pageParam.getPageNo(), pageParam.getPageSize());
LocalDate tomorrow = LocalDate.now().plus(1, ChronoUnit.DAYS);
// 查询预警单
IPage<OrderOverdueRespVO> orderNearVOS = orderMapper.selectOrderNear(tomorrow, OrganContextHolder.getOrganId(), page);
return new PageResult<OrderOverdueRespVO>(orderNearVOS.getRecords(), orderNearVOS.getTotal());
}
@Override
@@ -30,7 +30,7 @@ public class ExcelWriterUtil {
// 写excel
public static void write(HttpServletResponse response,
Map<Object, Object> orderMap,
Map<String, Object> orderMap,
List<OrderPlateImportExcelVO> list,
String filePathErr) throws IOException {
@@ -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轴旋转角度
}
@@ -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<HoleDetail> sideHoleDetail;//侧面孔明细
// 备注
private Map<String,String> remark;// 板件备注 (生产数据接口中)
private Map<String,String> plateRemark;// 板件备注 (生产数据接口中)
private Map<String,String> sideRemark;// 封边备注
private String extraRemark; // 扩展备注(包含铰链备注、订单板件流水号)(板材明细中)
@@ -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;
}
}
@@ -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<String, String> remarkToMap(JSONObject block) {
Map<String, String> 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));
}
}
@@ -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<Object, Object> orderMap = new HashMap<>();// order
Map<String, Object> orderMap = new HashMap<>();// order
List<Map<Integer, String>> dataLists = excelListener.getDataLists();// 读取的内容
List<OrderPlateImportExcelVO> 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<String, Object> changeOrderDO(Map<Object, Object> orderMap) {
public Map<String, Object> changeOrderDO(Map<String, Object> orderMap) {
Map<String, Object> 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<String, Object> 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<String, Object> changeOrderDO(Map<Object, Object> orderMap) {
// Map<String, Object> 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<String, Object> 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<Integer, String> 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("小板轮廓数据不能为空");
@@ -50,12 +50,12 @@ public class ExcelTypeRealize {
final String NOT_ASSIGNED = "未命名";
// 数据转换 + 错误验证
public Map<String, List<?>> changeDate(List<?> list, Long orderId) {
if (list.isEmpty()) {
public Map<String, List<?>> changeDate(List<OrderPlateImportExcelVO> excelVOS, Long orderId) {
if (excelVOS.isEmpty()) {
return null;
}
List<OrderPlateImportExcelVO> excelVOS = (List<OrderPlateImportExcelVO>) list;
// List<OrderPlateImportExcelVO> excelVOS = (List<OrderPlateImportExcelVO>) list;
Map<String, List<?>> 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]);
});
});
@@ -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;
@@ -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<BlockXmlVO> blockXmlVOList;
@@ -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<PointXmlVO> pointXmlVOList;
}
@@ -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;
@@ -20,4 +20,8 @@ public class PlateXmlVOS implements Serializable {
@XmlElement( name = "Plate")
private List<PlateXmlVO> plateXmlVOList;
// 上传结果
@XmlElement( name = "result")
private String result;
}
@@ -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;
}
}
@@ -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<String, Object> changeDate(OrderXmlVO orderXmlVO, Long organId) {
Map<String, Object> 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<String, Object> 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<BoxXmlVO> 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<ModuleXmlVO> 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<GroupXmlVO> 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<PlateXmlVO> 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<BlockXmlVO> 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;
}
}
@@ -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();
}
}
@@ -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<String, List<?>> changeDate(OrderXmlVO orderXmlVO, Long orderId, Long organId) {
if (orderXmlVO == null) {
return null;
}
Map<String, List<?>> map = new HashMap<>();
return null;
}
// 生产单转换
public Map<String, Object> changeOrder(OrderXmlVO orderXmlVO, Long organId) {
Map<String, Object> 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<String, Object> 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<String, Map<String, OrderBodyDO>> 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()));
}
}
}