mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
工作台接口修改
This commit is contained in:
+2
@@ -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 模块 ==========
|
||||
|
||||
+95
-58
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+8
-2
@@ -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);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
+30
-14
@@ -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
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+6
-6
@@ -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轴旋转角度
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -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; // 扩展备注(包含铰链备注、订单板件流水号)(板材明细中)
|
||||
|
||||
+38
-1
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
+112
-40
@@ -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("小板轮廓数据不能为空");
|
||||
|
||||
+4
-4
@@ -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]);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
+20
@@ -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;
|
||||
|
||||
+8
@@ -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;
|
||||
|
||||
+5
@@ -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;
|
||||
}
|
||||
|
||||
+4
@@ -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;
|
||||
|
||||
+4
@@ -20,4 +20,8 @@ public class PlateXmlVOS implements Serializable {
|
||||
|
||||
@XmlElement( name = "Plate")
|
||||
private List<PlateXmlVO> plateXmlVOList;
|
||||
|
||||
// 上传结果
|
||||
@XmlElement( name = "result")
|
||||
private String result;
|
||||
}
|
||||
|
||||
-129
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+999
@@ -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;
|
||||
}
|
||||
}
|
||||
+20
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+27
-102
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
Binary file not shown.
Reference in New Issue
Block a user