bug修改

This commit is contained in:
lym
2024-04-24 19:28:21 +08:00
parent 49f9cb9de5
commit 53937f842b
27 changed files with 392 additions and 122 deletions
@@ -2,11 +2,13 @@ package com.cf.imes.module.executor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* @author there
*/
@SpringBootApplication
@EnableFeignClients
public class ExecutorServerApplication {
public static void main(String[] args) {
SpringApplication.run(ExecutorServerApplication.class, args);
@@ -1,14 +1,18 @@
package com.cf.imes.module.executor.controller.admin.order;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderImportRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderSaveReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
import com.cf.imes.module.executor.service.order.ApiOrderService;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import com.cf.imes.module.executor.util.FileTypeChangeUtil;
import com.cf.imes.module.executor.util.deviseData.Detail;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.util.ObjectUtils;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
@@ -68,6 +72,9 @@ public class OrderController {
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private ApiOrderService apiOrderService;
private static final Logger log = LoggerFactory.getLogger(OrderController.class);
@PostMapping("/create")
@@ -163,62 +170,62 @@ public class OrderController {
}
}
@PostMapping("/import")
@Operation(summary = "导入生产单新增")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
@Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
@Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true)
})
@PreAuthorize("@ss.hasPermission('executor:order:import')")
public CommonResult<Map<Boolean, String>> importExcel(@RequestPart("file") MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
@RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
Map<Boolean, String> map = new HashMap<>();
// 判断是否更新板材
if (!isAddPlate) {//不需要添加板材
if (upload) {
orderService.updateOrder(createReqVO);//更新
map.put(true, "单独更新生产单成功");
} else {
Long id = orderService.createOrder(createReqVO);//新建
map.put(true, "单独新增生产单成功");
}
return success(map);
} else {
Long id = 0L;
if (upload) {
orderService.updateOrder(createReqVO);//更新
id = createReqVO.getId();
map.put(true, "单独更新生产单成功");
} else {
id = orderService.createOrder(createReqVO);//新建
map.put(true, "单独新增生产单成功");
}
// 解析导入文件,生成统一格式
List<?> list = new ArrayList<>();
if (createReqVO.getDataType() == 1) {//CAD
} else if (createReqVO.getDataType() == 2) {//WebCAD
} else if (createReqVO.getDataType() == 3) {//Excel
// 文件数据读取
list = fileTypeChangeUtil.fileDataChange(file);
}
if (list == null || list.size() == 0) {
map.put(false, "导入文件有误");
return success(map);
}
// OrderImportRespVO respVO = orderService.importOrderList(list , id , orderImportRespVO);
orderInputProcessor.input((List<Detail>) list, id);
// 是否新增成功需要返回
map.putIfAbsent(true, "文件导入成功");
return success(map);
}
}
// @PostMapping("/import")
// @Operation(summary = "导入生产单新增")
// @Parameters({
// @Parameter(name = "file", description = "Excel 文件", required = true),
// @Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
// @Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
// @Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true)
// })
// @PreAuthorize("@ss.hasPermission('executor:order:import')")
// public CommonResult<Map<Boolean, String>> importExcel(@RequestPart("file") MultipartFile file,
// @RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
// @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
// @RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
// Map<Boolean, String> map = new HashMap<>();
//// 判断是否更新板材
// if (!isAddPlate) {//不需要添加板材
// if (upload) {
// orderService.updateOrder(createReqVO);//更新
// map.put(true, "单独更新生产单成功");
// } else {
// Long id = orderService.createOrder(createReqVO);//新建
// map.put(true, "单独新增生产单成功");
// }
// return success(map);
// } else {
// Long id = 0L;
// if (upload) {
// orderService.updateOrder(createReqVO);//更新
// id = createReqVO.getId();
// map.put(true, "单独更新生产单成功");
// } else {
// id = orderService.createOrder(createReqVO);//新建
// map.put(true, "单独新增生产单成功");
// }
//// 解析导入文件,生成统一格式
// List<?> list = new ArrayList<>();
// if (createReqVO.getDataType() == 1) {//CAD
//
// } else if (createReqVO.getDataType() == 2) {//WebCAD
//
// } else if (createReqVO.getDataType() == 3) {//Excel
//// 文件数据读取
// list = fileTypeChangeUtil.fileDataChange(file);
// }
// if (list == null || list.size() == 0) {
// map.put(false, "导入文件有误");
// return success(map);
// }
//// OrderImportRespVO respVO = orderService.importOrderList(list , id , orderImportRespVO);
// orderInputProcessor.input((List<Detail>) list, id);
//// 是否新增成功需要返回
// map.putIfAbsent(true, "文件导入成功");
// return success(map);
//
// }
// }
// 导出错误的excel
@PostMapping("/import-excel")
@@ -249,15 +256,15 @@ public class OrderController {
orderService.updateOrder(createReqVO);//更新
id = createReqVO.getId();
} else {
// id = orderService.createOrder(createReqVO);//新建
id = orderService.createOrder(createReqVO);//新建
}
// 解析导入文件,生成统一格式
List<?> list = new ArrayList<>();
if (createReqVO.getDataType() == 1) {//CAD
if (createReqVO.getDataType() == 1) {//数据源
} else if (createReqVO.getDataType() == 2) {//WebCAD
} else if (createReqVO.getDataType() == 2) {//api
} else if (createReqVO.getDataType() == 3) {//Excel
} else if (createReqVO.getDataType() == 0) {//文件
// 文件数据读取
list = fileTypeChangeUtil.fileDataChange(file);
}
@@ -339,33 +346,82 @@ public class OrderController {
return success(BeanUtils.toBean(orderService.getBody(orderId), OrderBodyRespVO.class));
}
@PostMapping("file-import")
@Operation(summary = "文件上接口")
@Parameters({
@Parameter(name = "file", description = "文件", required = false),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
@Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
@Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true),
@Parameter(name = "type", description = "文件类型", required = true)
})
@PreAuthorize("@ss.hasPermission('executor:fileData:import')")
public CommonResult<OrderImportRespVO> apiImport(@RequestPart(value = "file", required = false) MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
@RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO,
@RequestParam(value = "type", required = false, defaultValue = "cf_cad") String type,
final HttpServletResponse respons) throws IOException {
// @PostMapping("file-import")
// @Operation(summary = "文件上接口--完善中")
// @Parameters({
// @Parameter(name = "file", description = "文件", required = false),
// @Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
// @Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
// @Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true),
// @Parameter(name = "type", description = "文件类型", required = true)
// })
// @PreAuthorize("@ss.hasPermission('executor:fileData:import')")
// public CommonResult<OrderImportRespVO> apiImport(@RequestPart(value = "file", required = false) MultipartFile file,
// @RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
// @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
// @RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO,
// @RequestParam(value = "type", required = false, defaultValue = "cf_cad") String type,
// final HttpServletResponse respons) throws IOException {
//
// OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
// .updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
//
//// 数据格式转换,返回转换完成的数据(传入文件类型,和文件类容),判断需要使用那种解析之后,进行数据的转换
// List<?> list = fileTypeChangeUtil.chooseType(file, type);
// if (fileTypeChangeUtil.getFlag()) {//文件数据转换成功,进行数据填入
//
// }
//
// return success(orderImportRespVO);
// }
OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
.updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
// 数据格式转换,返回转换完成的数据(传入文件类型,和文件类容),判断需要使用那种解析之后,进行数据的转换
List<?> list = fileTypeChangeUtil.chooseType(file, type);
if (fileTypeChangeUtil.getFlag()) {//文件数据转换成功,进行数据填入
// 测试接口
@GetMapping("getTest")
@Operation(summary = "测试接口")
@PreAuthorize("@ss.hasPermission('executor:order:query')")
public CommonResult<JSONObject> test(@RequestParam(value = "orderNo", required = false, defaultValue = "20230809027818") String orderNo) {
// 获取token
JSONObject json = apiOrderService.getApiTokenMessage("CF7526AD51", "5f467b508061eff60bdacc7230357d2f");
// 判断获取token是否成功
if (json.getString("err_msg").equals("success")) {
System.out.println("获取token成功");
String token = json.getJSONObject("info").getString("access_token");
JSONObject jsonObject = new JSONObject();
jsonObject.put("order_no", orderNo);//生产单号需要传入赋值
jsonObject.put("format", "json");
// 数据解析
JSONObject data = apiOrderService.getApiOrderMessage(token, jsonObject);
if (data.getString("err_code").equals("0")) {
System.out.println("获取数据成功");
String value = data.getString("value");
System.out.println("value " + data.getString("value") );
// System.out.println("list " + toListMap(value));
// 数据格式进行转换
System.out.println("order " + value.substring(1, value.length() - 1));
}
}
return success(orderImportRespVO);
return success(apiOrderService.getApiTokenMessage("CF7526AD51", "5f467b508061eff60bdacc7230357d2f"));
}
@PostMapping("/importTest")
@Operation(summary = "生产单导入新增")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
@Parameter(name = "upload", description = "是 更新、否 新建", example = "false")
})
@PreAuthorize("@ss.hasPermission('executor:order:importExcel')")
@OperateLog(type = EXPORT)
public void exportTest(@RequestPart("file") MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
@RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
HttpServletResponse response) throws IOException {
}
}
@@ -13,8 +13,10 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
@Schema(description = "管理后台 - 生产单表 order_{N}分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderPageReqVO extends PageParam {
@Schema(description = "父单号")
@@ -8,7 +8,7 @@ import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产单表 order_{N} Response VO")
@Data
@ExcelIgnoreUnannotated
//@ExcelIgnoreUnannotated
public class OrderRespVO {
@Schema(description = "生产单号,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15091")
@@ -13,7 +13,6 @@ import java.time.LocalDateTime;
@Data
public class OrderSaveReqVO {
@Schema(description = "生产单号,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15091")
private Long id;
@Schema(description = "父单号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -12,10 +12,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.math.BigDecimal;
import java.util.*;
import java.io.IOException;
@@ -31,7 +29,6 @@ import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.service.plan.PlanService;
@Tag(name = "管理后台 - 排单")
@@ -105,7 +102,7 @@ public class PlanController {
@GetMapping("getNotPlanOrderListPage")
@Operation(summary = "获取未排单的板材生产单板材分页列表")
@PreAuthorize("@ss.hasPermission('executor:plan:query')")
public CommonResult<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) {
public CommonResult<PageResult<OrderRespVOCopy>> getOrderPage(@Valid OrderPageReqVOCopy pageReqVO) {
return success(planService.getOrderPage(pageReqVO));
}
@@ -17,7 +17,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
*/
@NoArgsConstructor
@Data
public class OrderPageReqVO extends PageParam {
public class OrderPageReqVOCopy extends PageParam {
@Schema(description = "生产单id")
private Long orderId;
@@ -21,7 +21,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderRespVO {
public class OrderRespVOCopy {
@Schema(description = "生产单id")
private Long orderId;
@Schema(description = "自定义单号")
@@ -7,15 +7,13 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -50,7 +48,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
}
IPage<OrderRespVO> selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
IPage<OrderRespVOCopy> selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
default List<OrderDO> selectOrderCheck(OrderPageReqVO reqVO) {
MPJLambdaWrapper<OrderDO> wrapper = new MPJLambdaWrapper<OrderDO>()
@@ -0,0 +1,17 @@
package com.cf.imes.module.executor.service.order;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(url = "https://chenfeng.tech:7779", name = "apiOrderService")
public interface ApiOrderService {
@RequestMapping(value = "/Api-Oauth-token",method = RequestMethod.GET)
JSONObject getApiTokenMessage(@RequestParam("appid") String appid, @RequestParam("appsecret") String appsecret);
@RequestMapping(value = "/Api-erpOrders-orderPlanData",method = RequestMethod.POST)
JSONObject getApiOrderMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
}
@@ -3,9 +3,7 @@ package com.cf.imes.module.executor.service.plan;
import java.util.*;
import javax.validation.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
/**
* 生产单开料排单 Service 接口
@@ -52,7 +50,7 @@ public interface PlanService {
*/
PageResult<PlanRespVO> getPlanPage(PlanPageReqVO pageReqVO);
PageResult<OrderRespVO> getOrderPage(OrderPageReqVO pageReqVO);
PageResult<OrderRespVOCopy> getOrderPage(OrderPageReqVOCopy pageReqVO);
PageResult<PlatePage> getNotPlanPlateListPage(PlateReqPageVO pageVO);
@@ -1,19 +1,13 @@
package com.cf.imes.module.executor.service.plan;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
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.orderItem.OrderItemDO;
@@ -44,7 +38,6 @@ import java.util.stream.Collectors;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
@@ -241,8 +234,8 @@ public class PlanServiceImpl implements PlanService {
}
@Override
public PageResult<OrderRespVO> getOrderPage(OrderPageReqVO pageReqVO) {
PageDTO<OrderRespVO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
public PageResult<OrderRespVOCopy> getOrderPage(OrderPageReqVOCopy pageReqVO) {
PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX
@@ -265,7 +258,7 @@ public class PlanServiceImpl implements PlanService {
queryWrapperX.inIfPresent("c.filter_type", filterTypes);
IPage<OrderRespVO> orderDOPageResult = orderMapper.selectOrderPage(page, queryWrapperX);
IPage<OrderRespVOCopy> orderDOPageResult = orderMapper.selectOrderPage(page, queryWrapperX);
if (CollectionUtil.isEmpty(orderDOPageResult.getRecords())) {
return new PageResult<>();
}
@@ -1,6 +1,8 @@
package com.cf.imes.module.executor.util;
import com.cf.imes.module.executor.util.deviseData.Detail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@@ -0,0 +1,29 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 配件基本信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PartsDetail {
// 商品信息
private String goodsNo; // 商品编码
private String goodsName; //商品名称
private String goodType; //商品类型,用于筛选是板材还是配件类,可传入文字(需做转换)
private String material; //材质
private String color; //颜色
private String factory; //商品生产厂商
private String brand; //商品品牌
private String model; //商品型号
private String spec; //商品规格
private float thickness;//规格-板厚 板厚,成品和开料都是一样的
private String unit; //商品单位
private float goodsNumber; //产品数量为特殊处理,板件和配件都有数量
}
@@ -21,7 +21,7 @@ public class PlateDetail {
// 板件所属信息
private String roomsName; //房间名称
private String cabinetsName; //柜体名
private String bodyName; //柜体名
// 柜体信息 长 宽 深
private float width;
private float height;
@@ -30,9 +30,12 @@ public class PlateDetail {
private List<String> synthesis;// 板件加工组Group的名称,可以有多个
private String synthesisName;// 加工组中Group中每个小加工组的名称
// 商品基本信息
// 小板基本信息
private IBoardProdInfo iBoardProdInfo;
// 配件基本信息
private List<PartsDetail> partsDetail;
// 基准位置,用于画图
private BasePosition basePosition;
@@ -1,15 +1,148 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.util.FileTypeChangeUtil;
import com.cf.imes.module.executor.util.deviseData.Detail;
import com.cf.imes.module.executor.util.deviseData.dataTwo.IBoardProdInfo;
import com.cf.imes.module.executor.util.deviseData.dataTwo.PlateDetail;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 实现数据格式转换
*/
public interface ApiTypeChangeRealize extends FileTypeChangeUtil {
default List<Detail> apiDataChange(String data) {
public class ApiTypeChangeRealize implements FileTypeChangeUtil {
@Override
public <T> List<?> fileDataChange(MultipartFile file) throws IOException {
return null;
}
public <T> List<?> fileDataChange(String data) throws IOException {
return null;
}
@Override
public boolean getFlag() {
return false;
}
public static void main(String[] args) {
String jsonData = "" ;
JSONObject jsonObject = JSONObject.parseObject(jsonData);
// System.out.println(jsonObject.getString("Orders"));
// 解析 JSON 字符串
JSONObject object = JSON.parseObject(jsonData);
// 获取 Orders 字段对应的数组
JSONArray ordersArray = object.getJSONArray("Orders");
// 如果 Orders 数组不为空,则获取第一个订单对象
if (ordersArray != null && !ordersArray.isEmpty()) {
JSONObject value = ordersArray.getJSONObject(0);
// 使用 DateTimeFormatter 解析日期字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate deliveryDate = LocalDate.parse(value.getString("DeliveryDate"), formatter);
OrderDO orderDO = OrderDO.builder()
.parentNo(0L)
.type(true)
.sort(0)
.dataType(1)
.status(0)
.customOrderNo(value.getString("OrderNo"))
.customer(value.getString("Consigee"))
.address(value.getString("ConsigeeAddress"))
.phoneNumber(value.getString("ConsigeePhone"))
.dealer(value.getString("CustomName"))
.salesman(value.getString("SalePerson"))
.remark(value.getString("Remark"))
.deliveryDate(deliveryDate.atStartOfDay())
.build();
// System.out.println("orderDO 差生产单的创建日期、拆单员、经销商电话数据," + orderDO);
List<Detail> details = new ArrayList<>();
// 遍历 Orders 数组
for (int i = 0; i < ordersArray.size(); i++) {
JSONObject orderObject = ordersArray.getJSONObject(i);
// 获取订单的 Materials 数组
JSONArray materialsArray = orderObject.getJSONArray("Materials");
// 遍历 Materials 数组
for (int j = 0; j < materialsArray.size(); j++) {
JSONObject materialObject = materialsArray.getJSONObject(j);
// 处理每个材料对象,这里可以根据需要进行操作
System.out.println("Material " + (j + 1) + ": " + materialObject);
JSONArray blocksArray = materialObject.getJSONArray("Blocks");
System.out.println(blocksArray.size());
for (int k = 0; k < blocksArray.size(); k++) {
JSONObject blockObject = materialsArray.getJSONObject(k);
//
// 处理每个块对象,这里可以根据需要进行操作
System.out.println("Block " + (k + 1) + ": " + blockObject.getString("RoomName"));
//
// for (int l = 0; l < materialsArray.size(); l++) {
// JSONObject holeObject = materialsArray.getJSONObject(l);
//
// // 处理每个孔对象,这里可以根据需要进行操作
// }
}
// PlateDetail plateDetail = PlateDetail.builder()
// .multiNum(1)
// .roomsName(materialObject.getString("RoomName"))
// .bodyName(materialObject.getString("BoxName"))
// .iBoardProdInfo(IBoardProdInfo.builder()
// .goodsNo(materialObject.getString("GoodsSN"))
// .goodsName(materialObject.getString("Name"))
// .material(materialObject.getString("Material"))
// .color(materialObject.getString("Color"))
//
// .build())
// .build();
}
}
} else {
System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。");
}
}
// 生产单数据分离填入
public List<T> getDeviseData(String[] args) {
return null;
}
// 将remark转为map
public Map<String, String> remarkToMap(String[] remark) {
Map<String, String> map = new HashMap<>();
return map;
}
}
@@ -0,0 +1,17 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.vo;
import lombok.Data;
import javax.xml.bind.annotation.*;
@Data// lombok注解,给字段添加getter和setter
@XmlAccessorType(XmlAccessType.FIELD)// 映射所有的字段
@XmlRootElement(name = "Point ")// XML根节点名称,此处为nation
public class Point {
@XmlAttribute// 解析节点的属性
private String type;
@XmlValue// 解析nation节点的内容,字段名称无所谓
private String nationValue;
}
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.order.OrderMapper">
<select id="selectOrderPage" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO">
<select id="selectOrderPage" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy">
select a.id as orderId, a.delivery_date, a.customer, a.address, a.custom_order_no as defineId,
count(c.id) as num, sum(c.area) as area, p.goods_name, p.color, p.material, p.goods_id
from `order` a