api数据

This commit is contained in:
lym
2024-05-09 15:28:35 +08:00
parent 8788eef90d
commit f847b52ba4
20 changed files with 1332 additions and 375 deletions
@@ -51,8 +51,9 @@ public interface ErrorCodeConstants {
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_029_005, "生产单中未用到此板材");
ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1_002_029_006, "生产单不允许删除");
ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败");
ErrorCode PLATE_DATA_ERROR = new ErrorCode(1_002_029_008, "板材数据获取错误");
ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_002_029_008, "板材数据获取错误");
ErrorCode PARTS_DATA_ERROR = new ErrorCode(1_002_029_009, "配件数据获取错误");
ErrorCode BODY_DATA_ERROR = new ErrorCode(1_002_029_010, "柜体数据获取错误");
ErrorCode GOODS_DATA_ERROR = new ErrorCode(1_002_029_011, "商品信息获取错误");
ErrorCode PLATE_DATA_ERROR = new ErrorCode(1_002_029_012, "板材数据获取错误");
}
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.controller.admin.order;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO;
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;
@@ -63,9 +64,6 @@ public class OrderController {
@Resource
private OrderService orderService;
@Resource
private ApiOrderService apiOrderService;
private static final Logger log = LoggerFactory.getLogger(OrderController.class);
@PostMapping("/create")
@@ -101,16 +99,6 @@ public class OrderController {
return success(BeanUtils.toBean(order, OrderRespVO.class));
}
// 获取当前条件下所有生产单信息
// @GetMapping("/allOrder")
// @Operation(summary = "获得所有生产单")
// @PreAuthorize("@ss.hasPermission('executor:order:query')")
// public CommonResult<PageResult<OrderRespVO>> getAllOrder(@Valid OrderPageReqVO pageReqVO) {
// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
// PageResult<OrderDO> pageResult = orderService.getOrderPage(pageReqVO);
// return success(BeanUtils.toBean(pageResult, OrderRespVO.class));
// }
@GetMapping("/page")
@Operation(summary = "获得生产单分页")
@PreAuthorize("@ss.hasPermission('executor:order:query')")
@@ -140,15 +128,9 @@ public class OrderController {
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.setCharacterEncoding("UTF-8");
//Content-Disposition的作用:告知浏览器以何种方式显示响应返回的文件,用浏览器打开还是以附件的形式下载到本地保存
//attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
// filename表示文件的默认名称,因为网络传输只支持URL编码的相关支付,因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
// 告知浏览器文件的大小
response.addHeader("Content-Length", "" + file.length());
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
@@ -221,20 +203,30 @@ public class OrderController {
}
// 获得 房间和柜体 信息
@GetMapping("/get-room")
@Operation(summary = "获得房间——柜体 基本信息")
@Operation(summary = "生产单详情-房间、柜体信息")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:order:query')")
public CommonResult<Map<Long, List<OrderBodyRespVO>>> getRoom(@RequestParam("orderId") Long orderId) {
Map<Long, List<OrderBodyRespVO>> orderBodyMap = orderService.getOrderBody(orderId);
public CommonResult<List<OrderBodyRespVO>> getRoom(@RequestParam("orderId") Long orderId) {
List<OrderBodyRespVO> orderBodyMap = orderService.getOrderBody(orderId);
return success(orderBodyMap);
}
@GetMapping("/get-module")
@Operation(summary = "生产单详情-模块全部数量信息")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1024")
})
@PreAuthorize("@ss.hasPermission('executor:order:query')")
public CommonResult<List<OrderModuleRespVO>> getModule(@RequestParam("orderId") Long orderId) {
List<OrderModuleRespVO> moduleDOList = orderService.getModule(orderId);
return success(moduleDOList);
}
// 获得模组 —— 模块信息
@GetMapping("/get-moduleDetails")
@Operation(summary = "获得模组——模块信息")
@Operation(summary = "生产单详情-模块详细信息")//生产单详情-模块全部数量信息
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@@ -244,7 +236,7 @@ public class OrderController {
public CommonResult<List<OrderModuleExtraDO>> getModule(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false) Long roomId,
@RequestParam(value = "bodyId", required = false) Long bodyId) {
List<OrderModuleExtraDO> moduleDOList = orderService.getModule(orderId, roomId, bodyId);
List<OrderModuleExtraDO> moduleDOList = orderService.getModuleDetail(orderId, roomId, bodyId);
return success(moduleDOList);
}
@@ -270,7 +262,7 @@ public class OrderController {
return success(BeanUtils.toBean(orderService.getBody(orderId), OrderBodyRespVO.class));
}
// 测试接口
@GetMapping("getApiData")
@Operation(summary = "api数据获取")
@PreAuthorize("@ss.hasPermission('executor:order:getApiData')")
@@ -0,0 +1,29 @@
package com.cf.imes.module.executor.controller.admin.order.vo.order;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 生产单表 order Response VO")
@Data
@ExcelIgnoreUnannotated
public class OrderModuleRespVO {
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20230414026120")
private Long id;
@Schema(description = "房间Id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long roomId;
@Schema(description = "柜体Id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long bodyId;
@Schema(description = "加工组Id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long groupId;
@Schema(description = "柜体板块数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer bodyNum;
@Schema(description = "加工组板块数量", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer groupNum;
}
@@ -39,14 +39,14 @@ public class OrderProcessController {
private OrderProcessService orderProcessService;
@PostMapping("/create")
@Operation(summary = "创建生产单工序")
@Operation(summary = "创建生产单工序")
@PreAuthorize("@ss.hasPermission('executor:order-process:create')")
public CommonResult<Long> createOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO createReqVO) {
return success(orderProcessService.createOrderProcess(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产单工序")
@Operation(summary = "更新生产单工序")
@PreAuthorize("@ss.hasPermission('executor:order-process:update')")
public CommonResult<Boolean> updateOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO updateReqVO) {
orderProcessService.updateOrderProcess(updateReqVO);
@@ -54,7 +54,7 @@ public class OrderProcessController {
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产单工序")
@Operation(summary = "删除生产单工序")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('executor:order-process:delete')")
public CommonResult<Boolean> deleteOrderProcess(@RequestParam("id") Long id) {
@@ -63,7 +63,7 @@ public class OrderProcessController {
}
@GetMapping("/get")
@Operation(summary = "获得生产单工序")
@Operation(summary = "获得生产单工序")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('executor:order-process:query')")
public CommonResult<OrderProcessRespVO> getOrderProcess(@RequestParam("orderId") Long orderId) {
@@ -9,7 +9,6 @@ import javax.validation.constraints.*;
@Data
public class OrderProcessSaveReqVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31600")
private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -55,7 +55,7 @@ public class OrderBodyDO extends BaseDO {
/**
* 模块复制数量
*/
private Double multiNum;
private Integer multiNum;
/**
* 板材数量
*/
@@ -61,15 +61,15 @@ public class OrderGroupDO extends BaseDO {
/**
* 模块复制数量
*/
private Short multiNum;
private Integer multiNum;
/**
* 板材数量
*/
private Double plateNum;
private Integer plateNum;
/**
* 异型数量
*/
private Short unregularNum;
private Integer unregularNum;
/**
* 文件名
*/
@@ -46,7 +46,7 @@ public class OrderPartsDO extends BaseDO {
/**
* 配件类型
*/
private Integer type;
private String type;
/**
* 型号
*/
@@ -1,16 +1,16 @@
package com.cf.imes.module.executor.dal.dataobject.ordermodel;
import com.cf.imes.framework.es.core.dal.ESDocument;
import com.cf.imes.module.executor.util.deviseData.HoleDetail;
import com.cf.imes.module.executor.util.deviseData.ModelDetail;
import com.cf.imes.module.executor.util.deviseData.PointDetail;
import com.cf.imes.module.executor.util.deviseData.dataTwo.HoleDetail;
import com.cf.imes.module.executor.util.deviseData.dataTwo.ModelDetail;
import com.cf.imes.module.executor.util.deviseData.dataTwo.PointDetail;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.checkerframework.checker.units.qual.A;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -28,16 +28,34 @@ public class OrderModelDO extends ESDocument {
private Long orderId;
@Schema(description = "小板id")
private Long plateId;
@Schema(description = "轮廓明细列表")
private List<ModelDetail> contourDetailList;
@Schema(description = "点明细列表")
private List<PointDetail> pointDetailList;
@Schema(description = "孔明细列表")
private List<HoleDetail> holeDetailList;
@Schema(description = "纹路 纹路(0正纹1可翻转2反纹)")
private Integer texture;
@Schema(description = "排版面 排钻类型(0正面1反面2随意面)")
private Integer typographicFace;
@Schema(description = "开门类型 0非门板,1左开,2右开,3上翻,4下翻")
private Integer openDoorType; // 字典转换
@Schema(description = "小板类型")
private String boardType;
@Schema(description = "偏移量X")
private BigDecimal offsetX;
@Schema(description = "偏移量Y")
private BigDecimal offsetY;
@Schema(description = "是否有二维刀路")
private Boolean has2DModel;
@Schema(description = "是否有三维刀路")
private Boolean has3DModel;
@Schema(description = "点明细,表示小板外围轮廓的几个转折点(不含封边)")
private List<PointDetail> pointDetail;
@Schema(description = "原始点明细列表")
private List<PointDetail> rawPointDetailList;
@Schema(description = "侧面轮廓明细列表")
private List<ModelDetail> sideModelDetailList;
private List<PointDetail> rawPointDetail;
@Schema(description = "明细列表")
private List<HoleDetail> holeDetail;
@Schema(description = "造型明细")
private List<ModelDetail> contourDetail;
@Schema(description = "侧面孔明细列表")
private List<HoleDetail> sideHoleDetailList;
private List<HoleDetail> sideHoleDetail;
}
@@ -57,7 +57,7 @@ public class PlateDO extends BaseDO {
/**
* 商品 ID
*/
private String goodsId;
private Long goodsId;
/**
* 宽度
*/
@@ -149,11 +149,11 @@ public class PlateDO extends BaseDO {
/**
* 异型偏移 x
*/
private Double offsetX;
private BigDecimal offsetX;
/**
* 异型偏移 y
*/
private Double offsetY;
private BigDecimal offsetY;
/**
* 是否孤形对角
*/
@@ -9,19 +9,31 @@ import org.springframework.web.bind.annotation.*;
@FeignClient(url = "https://chenfeng.tech:7779", name = "apiOrderService")
public interface ApiOrderService {
// 登陆token
@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);
// 配件生产数据
@RequestMapping(value = "/Api-erpOrders-partsList",method = RequestMethod.POST)
JSONObject getApiOrderPartsMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
// 房间柜体
@RequestMapping(value = "/Api-erpOrders-boxsList",method = RequestMethod.POST)
JSONObject getApiOrderBodyMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
// 商品数据
@RequestMapping(value = "/Api-erpOrders-goodsList",method = RequestMethod.POST)
JSONObject getApiOrderGoodsMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
// 加工组数据
@RequestMapping(value = "/Api-erpOrders-getModuleTypeList",method = RequestMethod.POST)
JSONObject getApiModuleTypeDataMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
// 板件数据
@RequestMapping(value = "/Api-erpOrders-blocksList",method = RequestMethod.POST)
JSONObject getApiBlocksDataMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
}
@@ -8,6 +8,7 @@ import com.cf.imes.framework.common.util.json.JsonUtils;
import com.cf.imes.framework.es.core.service.ESDocumentService;
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
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.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
@@ -16,6 +17,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
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.dal.mysql.order.OrderMapper;
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
@@ -28,6 +30,7 @@ import com.cf.imes.module.executor.util.deviseData.Detail;
import com.cf.imes.module.executor.util.deviseData.IBoardProdInfo;
import com.cf.imes.module.executor.util.deviseData.PartsModuleExtra;
import com.cf.imes.module.executor.util.deviseData.PlateModuleExtra;
import com.cf.imes.module.executor.util.deviseData.dataTwo.PlateDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +52,9 @@ public class OrderInputProcessor {
private IdentifierGenerator identifierGenerator;
/*private IdentifierGenerator identifierGenerator = new SnowFlakeGenerator(0, 0);*/
@Resource
private OrderMapper orderMapper;
@Resource
private RawGoodsMapper rawGoodsMapper;
@@ -105,7 +111,7 @@ public class OrderInputProcessor {
.width(e.getWidth())
.height(e.getHeight())
.depth(e.getDepth())
.multiNum(e.getMultiNum().doubleValue())
// .multiNum(e.getMultiNum().doubleValue())
.filename("")
.remark("")
.build(),
@@ -195,23 +201,23 @@ public class OrderInputProcessor {
if (goodType == 1) {
PlateDO plateDO = PlateDO.builder()
.id(identifierGenerator.nextId(null).longValue())
.goodsId(rawGoodsDO.getRawGoodsId())
// .goodsId(rawGoodsDO.getRawGoodsId())
.orderId(orderId)
.name(e.getIBoardProdInfo().getName())
.plateNo(e.getIBoardProdInfo().getPlateNo())
//.type(e.getIBoardProdInfo().)
.goodsId(rawGoodsDO.getRawGoodsId())
.height(new BigDecimal(e.getIBoardProdInfo().getHeight()))
.width(new BigDecimal(e.getIBoardProdInfo().getWidth()))
.thickness(new BigDecimal(e.getIBoardProdInfo().getThickness().toString()))
.splitHeight(new BigDecimal(e.getIBoardProdInfo().getSplitHeight()))
.splitWidth(new BigDecimal(e.getIBoardProdInfo().getSplitWidth()))
.splitThickness(new BigDecimal(e.getIBoardProdInfo().getThickness().toString()))
.sealLeft(new BigDecimal(e.getIBoardProdInfo().getSealLeft()))
.sealRight(new BigDecimal(e.getIBoardProdInfo().getSealRight()))
.sealUp(new BigDecimal(e.getIBoardProdInfo().getSealUp()))
.sealDown(new BigDecimal(e.getIBoardProdInfo().getSealDown()))
.area(new BigDecimal( String.valueOf(e.getIBoardProdInfo().getWidth())).multiply( new BigDecimal(e.getIBoardProdInfo().getHeight())))
// .goodsId(rawGoodsDO.getRawGoodsId())
// .height(new BigDecimal(e.getIBoardProdInfo().getHeight()))
// .width(new BigDecimal(e.getIBoardProdInfo().getWidth()))
// .thickness(new BigDecimal(e.getIBoardProdInfo().getThickness().toString()))
// .splitHeight(new BigDecimal(e.getIBoardProdInfo().getSplitHeight()))
// .splitWidth(new BigDecimal(e.getIBoardProdInfo().getSplitWidth()))
// .splitThickness(new BigDecimal(e.getIBoardProdInfo().getThickness().toString()))
// .sealLeft(new BigDecimal(e.getIBoardProdInfo().getSealLeft()))
// .sealRight(new BigDecimal(e.getIBoardProdInfo().getSealRight()))
// .sealUp(new BigDecimal(e.getIBoardProdInfo().getSealUp()))
// .sealDown(new BigDecimal(e.getIBoardProdInfo().getSealDown()))
// .area(new BigDecimal( String.valueOf(e.getIBoardProdInfo().getWidth())).multiply( new BigDecimal(e.getIBoardProdInfo().getHeight())))
.texture(e.getIBoardProdInfo().getTexture())
.type(0)
.holeFace(0)
@@ -262,7 +268,7 @@ public class OrderInputProcessor {
.price(0.0)
.isComposite(false)
.remark(e.getIBoardProdInfo().getRemark())
.type(0)
// .type(0)
.build();
orderItemDO.setType(2);
orderItemDO.setPartsId(orderPartsDO.getId());
@@ -294,29 +300,40 @@ public class OrderInputProcessor {
@Transactional
public void batchInsert(Collection<RawGoodsDO> rawGoodsDOS, Collection<OrderBodyDO> orderBodyDOS,
Collection<OrderGroupDO> orderGroupDOS, Collection<OrderPartsDO> orderPartsDOS,
Collection<PlateDO> plateDOS, Collection<OrderModuleExtraDO> orderModuleExtraDOS, Collection<OrderItemDO> itemDOS) {
Collection<PlateDO> plateDOS, Collection<OrderModuleExtraDO> orderModuleExtraDOS,
Collection<OrderItemDO> itemDOS, OrderDO orderDO) {
if (orderDO != null)
orderMapper.insert(orderDO);
for (int i = 0; i < rawGoodsDOS.size(); i += 1000) {
rawGoodsMapper.insertBatch(rawGoodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < orderBodyDOS.size(); i += 1000) {
orderBodyMapper.insertBatch(orderBodyDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < orderGroupDOS.size(); i += 1000) {
orderGroupMapper.insertBatch(orderGroupDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < orderPartsDOS.size(); i += 1000) {
orderPartsMapper.insertBatch(orderPartsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < plateDOS.size(); i += 1000) {
plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < orderModuleExtraDOS.size(); i += 1000) {
orderModuleExtraMapper.insertBatch(orderModuleExtraDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
for (int i = 0; i < itemDOS.size(); i += 1000) {
orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
if (rawGoodsDOS != null)
for (int i = 0; i < rawGoodsDOS.size(); i += 1000) {
rawGoodsMapper.insertBatch(rawGoodsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
if (orderBodyDOS != null)
for (int i = 0; i < orderBodyDOS.size(); i += 1000) {
orderBodyMapper.insertBatch(orderBodyDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
if (orderGroupDOS != null)
for (int i = 0; i < orderGroupDOS.size(); i += 1000) {
orderGroupMapper.insertBatch(orderGroupDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
if (orderPartsDOS != null)
for (int i = 0; i < orderPartsDOS.size(); i += 1000) {
orderPartsMapper.insertBatch(orderPartsDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
if (plateDOS != null)
for (int i = 0; i < plateDOS.size(); i += 1000) {
plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
if (orderModuleExtraDOS != null) {
for (int i = 0; i < orderModuleExtraDOS.size(); i += 1000) {
orderModuleExtraMapper.insertBatch(orderModuleExtraDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
}
if (itemDOS != null)
for (int i = 0; i < itemDOS.size(); i += 1000) {
orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
//rawGoodsMapper.insertBatch(rawGoodsDOS);
//orderBodyMapper.insertBatch(orderBodyDOS);
@@ -4,15 +4,11 @@ import javax.validation.*;
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.ProductRespVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
import com.cf.imes.module.executor.util.deviseData.Detail;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -62,15 +58,6 @@ public interface OrderService {
*/
PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO);
/**
* 批量导入生产单
* list 数据转换之后
* id 生产单id
* orderImportRespVO 返回数据
* @return OrderImportRespVO
*/
OrderImportRespVO importOrderList(List<Detail> list , Long id , OrderImportRespVO orderImportRespVO) throws IOException;
/**
* 清除生产单表 order_{N}
* 清除还没有清除生产单与工序相关、生产单与模块相关、生产单与包裹、余料、补板、相关
@@ -86,17 +73,24 @@ public interface OrderService {
/**
* @param orderId: 生产单Id
* @return Map<Long, List<OrderBodyDO>>
* @return List<OrderBodyRespVO>
*/
Map<Long, List<OrderBodyRespVO>> getOrderBody(Long orderId);
List<OrderBodyRespVO> getOrderBody(Long orderId);
/**
* @param orderId: 生产单Id
* @return Map<Long, List<OrderModuleRespVO>>
*/
List<OrderModuleRespVO> getModule(Long orderId);
/**
* @param orderId: 生产单id
* @param roomId: 房间id
* @param bodyId: 柜体id
* @return List<ProductRespVO>
* 需要修改返回值
*/
List<OrderModuleExtraDO> getModule(Long orderId, Long roomId , Long bodyId);
List<OrderModuleExtraDO> getModuleDetail(Long orderId, Long roomId , Long bodyId);
/**
* 删除柜体
@@ -9,11 +9,13 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.ProductRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
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.orderModuleExtra.OrderModuleExtraDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
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.dal.mysql.orderBody.OrderBodyMapper;
@@ -27,6 +29,7 @@ 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.PlateDetail;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeChangeRealize;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize;
import com.cf.imes.module.system.api.application.ApplicationApi;
import com.cf.imes.module.system.api.organ.OrganApi;
import com.cf.imes.module.system.api.user.AdminUserApi;
@@ -104,6 +107,12 @@ public class OrderServiceImpl implements OrderService {
@Resource
private ApiTypeChangeRealize apiTypeChangeRealize;
@Resource
private ApiTypeRealize apiTypeRealize;
@Resource
private OrderInputProcessor orderInputProcessor;
@Resource
private ApplicationApi applicationApi;
@@ -165,160 +174,6 @@ public class OrderServiceImpl implements OrderService {
return orderMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public OrderImportRespVO importOrderList(List<Detail> list , Long id , OrderImportRespVO orderImportRespVO) throws IOException {
// 导入数据区分板材 配件
HashMap<String, List<Detail>> map = classifyGoods(list);
// 将相同条件的元素归为一个集合
Map<List<Object>, List<Detail>> groupedMap = map.get("plate").stream()
.collect(Collectors.groupingBy(
p -> Arrays.asList(p.getIBoardProdInfo().getGoodsId(),
p.getIBoardProdInfo().getGoodsName(),
p.getIBoardProdInfo().getMaterial(),
p.getIBoardProdInfo().getColor(),
p.getIBoardProdInfo().getSpec(),
p.getIBoardProdInfo().getThickness()),
Collectors.toList()
));
groupedMap.forEach((key, value) -> {
if(value.get(0).getIBoardProdInfo().getThickness() == null){
// 获取板材厚度
Pattern pattern = Pattern.compile("\\d+×\\d+×(\\d+)");
Matcher matcher = pattern.matcher(value.get(0).getIBoardProdInfo().getSpec());
if (matcher.matches()) {
String number = matcher.group(1);
number = number.trim();
value.get(0).getIBoardProdInfo().setThickness(Double.valueOf(number));
}
}
// 板材信息合集,添加生产单id,添加生产单板材设计端商品编码,板材信息写入order_raw_goods
RawGoodsDO rawGoodsDO = BeanUtils.toBean(value.get(0).getIBoardProdInfo(), RawGoodsDO.class).setOrderId(id)
.setRawGoodsId(value.get(0).getIBoardProdInfo().getGoodsId());
rawGoodsMapper.insert(rawGoodsDO);
Long rawGoodId = rawGoodsDO.getId();
// 赋值给板件未对应前order_raw_goods的id
for (Detail reqVO : value) {
reqVO.getIBoardProdInfo().setRawGoodsId(rawGoodId);
}
});
// 小板信息写入 、配件信息写入
Map<String, List<Detail>> groupedRooms = list.stream()
.collect(Collectors.groupingBy(
order -> order.getIBoardProdInfo().getRoomsName() != null ? order.getIBoardProdInfo().getRoomsName() : " ",
Collectors.toList()
));
// 根据房间分类
groupedRooms.forEach((roomName, listRoom) -> {
Long roomId = (Long) snowFlakeGenerator.nextId(null);
Map<String, List<Detail>> groupedCabinetsName = listRoom.stream()
.collect(Collectors.groupingBy(
order -> order.getIBoardProdInfo().getCabinetsName() != null ? order.getIBoardProdInfo().getCabinetsName() : " ",
Collectors.toList()
));
// 根据柜体名分类
groupedCabinetsName.forEach((cabinetName, listCabinet) -> {
final Double[] plateCountByCabinetName = {0.0};
OrderBodyDO orderBodyDO = OrderBodyDO.builder().orderId(id).roomId(roomId)
.roomName(roomName).name(cabinetName).build(); //没有获取柜体的长宽高
orderBodyMapper.insert(orderBodyDO);
Long bodyId = orderBodyDO.getId();
Map<String, List<Detail>> groupedSynthesis = listCabinet.stream()//根据组合类型
.collect(Collectors.groupingBy(
order -> Optional.ofNullable(order.getIBoardProdInfo().getSynthesis())
.map(Object::toString)
.orElse(" "),
Collectors.toList()
));
List<ProductRespVO> productRespVOS = new ArrayList<>();
// 根据组合类别分类
groupedSynthesis.forEach((synthesis, listSynthesis) -> {//根据组合类别
Map<String, List<Detail>> groupedCombinationName = listSynthesis.stream()
.collect(Collectors.groupingBy(
order -> order.getIBoardProdInfo().getCombinationName() != null ? order.getIBoardProdInfo().getCombinationName() : " ",
Collectors.toList()
));
// 根据组合名称分类
groupedCombinationName.forEach((combinationName, listCombinationName) -> {
// 板数量
final Double[] plateCountByCombination = {0.0};
OrderGroupDO orderGroupDO = OrderGroupDO.builder().orderId(id).bodyId(bodyId)
.groupTypeId(Long.valueOf(synthesis)).groupTypeName(listCombinationName.get(0).getIBoardProdInfo().getSynthesisTypeName()).name(combinationName).build();
orderGroupMapper.insert(orderGroupDO);
Long groupId = orderGroupDO.getId();
listCombinationName.forEach(plateOrParts -> {
plateCountByCombination[0] = plateCountByCombination[0] + plateOrParts.getIBoardProdInfo().getGoodsNumber();
if (plateOrParts.getIBoardProdInfo().getGoodType()== 1) {
//板材
for (int i = 0; i < plateOrParts.getIBoardProdInfo().getGoodsNumber(); i++) {
PlateDO plateDO = BeanUtils.toBean(plateOrParts.getIBoardProdInfo(), PlateDO.class).setOrderId(id).setGoodsId(String.valueOf(plateOrParts.getIBoardProdInfo().getRawGoodsId()))
.setThickness(BigDecimal.valueOf(plateOrParts.getIBoardProdInfo().getSplitThickness()));
plateMapper.insert(plateDO);
productRespVOS.add(new ProductRespVO().setRoomId(roomId).setRoomName(roomName).setBodyId(bodyId).setBodyName(cabinetName)
.setGroupId(groupId).setGroupTypeId(orderGroupDO.getGroupTypeId()).setGroupTypeName(orderGroupDO.getName())
.setGoodType(1).setGoodName(plateDO.getName()).setUnits("").setNum(1.0));
Long plateId = plateDO.getId();
orderImportRespVO.getCreateOrder().add(plateDO.getId() + "板材存入生成id");
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(1)
.roomId(roomId).bodyId(bodyId).plateId(plateId)
.num(1.0).groupId(groupId).build();
orderItemMapper.insert(orderItemDO);
// 写入Detail中的IBoardProdInfo
plateOrParts.getIBoardProdInfo().setPlateId(plateId);
plateOrParts.getIBoardProdInfo().setPlateId(plateId);
}
}else {
//配件
OrderPartsDO orderPartsDO = BeanUtils.toBean(plateOrParts.getIBoardProdInfo(), OrderPartsDO.class).
setName(plateOrParts.getIBoardProdInfo().getGoodsName()).setType(plateOrParts.getIBoardProdInfo().getGoodType()).setOrderId(id);
orderPartsMapper.insert(orderPartsDO);
orderImportRespVO.getCreateOrder().add(orderPartsDO.getId() + "配件存入生成id");
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(Integer.valueOf(plateOrParts.getIBoardProdInfo().getGoodType()))
.roomId(roomId).bodyId(bodyId).partsId(orderPartsDO.getId()).groupId(groupId)
.num(Double.valueOf(plateOrParts.getIBoardProdInfo().getGoodsNumber())).build();
orderItemMapper.insert(orderItemDO);
productRespVOS.add(new ProductRespVO().setRoomId(roomId).setRoomName(roomName).setBodyId(bodyId).setBodyName(cabinetName)
.setGroupId(groupId).setGroupTypeId(orderGroupDO.getGroupTypeId()).setGroupTypeName(orderGroupDO.getName())
.setGoodType(1).setGoodName(orderPartsDO.getName()).setUnits(orderPartsDO.getUnit()).setNum(orderItemDO.getNum()));
}
});
// 修改group中的板件数量
orderGroupMapper.updatePlateNumById(groupId, plateCountByCombination[0]);
plateCountByCabinetName[0] = plateCountByCabinetName[0] + plateCountByCombination[0];
});
ObjectMapper objectMapper = new ObjectMapper();
try {
String detailListJson = objectMapper.writeValueAsString(productRespVOS);
OrderModuleExtraDO orderModuleExtraDO = OrderModuleExtraDO.builder().orderId(id).roomId(roomId).id((Long) snowFlakeGenerator.nextId(null))
.bodyId(bodyId).type(listCabinet.get(0).getIBoardProdInfo().getGoodType()).extraData(detailListJson).build();
orderModuleExtraMapper.insert(orderModuleExtraDO);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
});
orderBodyMapper.updatePlateNumById(bodyId, plateCountByCabinetName[0]);
});
});
// fileTypeChangeUtil.fileDataChangeToJson(list, id);
return orderImportRespVO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void cleanOrder(Long orderId) {
@@ -340,17 +195,21 @@ public class OrderServiceImpl implements OrderService {
}
@Override
public Map<Long, List<OrderBodyRespVO>> getOrderBody(Long orderId) {
public List<OrderBodyRespVO> getOrderBody(Long orderId) {
// 校验存在
validateOrderExists(orderId);
List<OrderBodyRespVO> orderBodyRespVOList = BeanUtils.toBean(orderBodyMapper.selectList(new LambdaQueryWrapper<OrderBodyDO>().eq(OrderBodyDO::getOrderId, orderId)), OrderBodyRespVO.class);
Map<Long, List<OrderBodyRespVO>> groupedByRoomId = orderBodyRespVOList.stream()
.collect(Collectors.groupingBy(OrderBodyRespVO::getRoomId));
return groupedByRoomId;
return orderBodyRespVOList;
}
@Override
public List<OrderModuleExtraDO> getModule(Long orderId, Long roomId, Long bodyId) {
public List<OrderModuleRespVO> getModule(Long orderId) {
return null;
}
@Override
public List<OrderModuleExtraDO> getModuleDetail(Long orderId, Long roomId, Long bodyId) {
List<OrderModuleExtraDO> orderModuleExtraDOS = orderModuleExtraMapper.selectExtraById(orderId, roomId, bodyId);
return orderModuleExtraDOS;
}
@@ -386,20 +245,19 @@ public class OrderServiceImpl implements OrderService {
String appSecret = app.getString("appSecret");
JSONObject json = apiOrderService.getApiTokenMessage(appId, appSecret);
System.out.println("json " + json);
if (!json.getString("err_msg").equals("success")) {
throw exception(APP_TOKEN_ERROR);
}
String token = json.getJSONObject("info").getString("access_token");
// 获取板件信息
JSONObject jsonPlates = new JSONObject();
jsonPlates.put("order_no", orderNo);//生产单号需要传入赋值
jsonPlates.put("format", "json");
JSONObject dataPlates = apiOrderService.getApiOrderMessage(token, jsonPlates);
// 获取板件生产数据信息
JSONObject jsonPlatesData = new JSONObject();
jsonPlatesData.put("order_no", orderNo);//生产单号需要传入赋值
jsonPlatesData.put("format", "json");
JSONObject dataPlates = apiOrderService.getApiOrderMessage(token, jsonPlatesData);
if (!dataPlates.getString("err_code").equals("0")) {
throw exception(PLATE_DATA_ERROR);
throw exception(PLATE_PLAN_DATA_ERROR);
}
// 获取配件信息
// 获取配件信息 分页获取
JSONObject jsonParts = new JSONObject();
jsonParts.put("curr_page", 1);
jsonParts.put("page_count", PARTS_PAGE_MAX);
@@ -412,7 +270,7 @@ public class OrderServiceImpl implements OrderService {
for (int i = 1; i <= parts.getJSONObject("value").getInteger("PageCount"); i++) {
jsonParts.put("curr_page", i);
JSONObject value = apiOrderService.getApiOrderPartsMessage(token, jsonParts).getJSONObject("value");
mergeJSONObjects(dataParts, value);
dataParts = mergeJSONObjects(dataParts, value);
}
// 柜体信息转换
JSONObject jsonBody = new JSONObject();
@@ -424,10 +282,10 @@ public class OrderServiceImpl implements OrderService {
throw exception(BODY_DATA_ERROR);
}
JSONObject dataBody = new JSONObject();
for (int i = 1; i <= dataBody.getJSONObject("value").getInteger("PageCount"); i++) {
for (int i = 1; i <= body.getJSONObject("value").getInteger("PageCount"); i++) {
jsonParts.put("curr_page", i);
JSONObject value = apiOrderService.getApiOrderPartsMessage(token, jsonBody).getJSONObject("value");
mergeJSONObjects(dataBody, value);
JSONObject value = apiOrderService.getApiOrderBodyMessage(token, jsonBody).getJSONObject("value");
dataBody = mergeJSONObjects(dataBody, value);
}
// 商品信息转换
JSONObject jsonGoods = new JSONObject();
@@ -435,45 +293,80 @@ public class OrderServiceImpl implements OrderService {
jsonGoods.put("page_count", PARTS_PAGE_MAX);
jsonGoods.put("order_no", orderNo);
JSONObject goods = apiOrderService.getApiOrderGoodsMessage(token, jsonGoods);
System.err.println("err_code " + goods.getString("err_code").equals("0"));
if (!goods.getString("err_code").equals("0")) {
throw exception(GOODS_DATA_ERROR);
}
JSONObject dataGoods = new JSONObject();
for (int i = 1; i <= dataGoods.getJSONObject("value").getInteger("PageCount"); i++) {
for (int i = 1; i <= goods.getJSONObject("value").getInteger("PageCount"); i++) {
jsonParts.put("curr_page", i);
JSONObject value = apiOrderService.getApiOrderGoodsMessage(token, jsonGoods).getJSONObject("value");
mergeJSONObjects(dataGoods, value);
dataGoods = mergeJSONObjects(dataGoods, value);
}
// 板材信息转换
JSONObject jsonPlates = new JSONObject();
jsonPlates.put("curr_page", 1);
jsonPlates.put("page_count", PARTS_PAGE_MAX);
jsonPlates.put("order_no", orderNo);
JSONObject plates = apiOrderService.getApiBlocksDataMessage(token, jsonGoods);
if (!plates.getString("err_code").equals("0")) {
throw exception(PLATE_DATA_ERROR);
}
JSONObject plate = new JSONObject();
for (int i = 1; i <= plates.getJSONObject("value").getInteger("PageCount"); i++) {
jsonParts.put("curr_page", i);
JSONObject value = apiOrderService.getApiBlocksDataMessage(token, jsonGoods).getJSONObject("value");
plate = mergeJSONObjects(plate, value);
}
// 加工组信息转换
JSONObject jsonModule = new JSONObject();
jsonModule.put("order_no", orderNo);
JSONObject dataModule = apiOrderService.getApiModuleTypeDataMessage(token, jsonGoods);
// 转换
List<PlateDetail> plateDetails = (List<PlateDetail>) apiTypeChangeRealize.apiPlateDataChange(dataPlates.getJSONObject("value"),dataParts,dataBody,dataGoods);
// order_raw_goods List<BoardInfo>
// List<RawGoodsDO> boardInfos = BeanUtils.toBean(apiTypeChangeRealize.goodsInfoChange(dataGoods), RawGoodsDO.class);
// System.out.println(" jsonPlatesData " + dataPlates.getJSONObject("value")+ "\n"
// + " dataParts " + dataParts+ "\n"
// + " dataBody " + dataBody+ "\n"
// + " dataGoods " + dataGoods+ "\n"
// + " plate " + plate+ "\n"
// + " dataModule " + dataModule);
Map<String, List<?>> listMap = apiTypeRealize.apiPlateDataChange(
dataPlates.getJSONObject("value"),//板件生产信息
dataParts,// 配件信息
dataBody, // 柜体信息
dataGoods, // 商品信息
plate, // 板件信息
dataModule); // 加工组信息
List<OrderDO> order = (List<OrderDO>) listMap.get("orderDO");
List<GoodsDO> goodsDO = (List<GoodsDO>) listMap.get("goodsDO");
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) listMap.get("rawGoodsDO");
List<OrderBodyDO> bodyDO = (List<OrderBodyDO>) listMap.get("bodyDO");
List<OrderGroupDO> groupDO = (List<OrderGroupDO>) listMap.get("groupDO");
List<OrderPartsDO> partsDO = (List<OrderPartsDO>) listMap.get("partsDO");
List<PlateDO> plateDO = (List<PlateDO>) listMap.get("platesDO");
List<PlateDetail> plateDetail = (List<PlateDetail>) listMap.get("plateDetail");
List<OrderItemDO> itemDO = (List<OrderItemDO>) listMap.get("itemDO");
System.out.println(plateDetails);
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, null, itemDO, order.get(0));
System.out.println(BeanUtils.toBean(plateDetail, OrderModelDO.class));
orderInputProcessor.batchSaveModel(BeanUtils.toBean(plateDetail, OrderModelDO.class));
return null;
}
// 合并两个 JSON 对象的方法
public JSONObject mergeJSONObjects(JSONObject object1, JSONObject object2) {
JSONObject mergedObject = new JSONObject();
// 获取第一个 JSON 对象中 "name" 的值
Object value1 = object1.get("List");
// 获取第二个 JSON 对象中 "name" 的值
Object value2 = object2.get("List");
// 创建一个 JSON 数组,将两个值添加进去
JSONArray array = new JSONArray();
array.add(value1);
array.add(value2);
// 将数组作为值设置到合并后的 JSON 对象中
mergedObject.put("List", array);
return mergedObject;
if (object1.getJSONArray("List") == null) {
object1.put("value", object2);
} else {
if (value2 != null)
object1.getJSONArray("List").add(value2);
}
return object1;
}
private void validateOrderBodyExists(Long orderId, Long bodyId) {
if (orderBodyMapper.selectCount(new LambdaQueryWrapper<OrderBodyDO>().eq(OrderBodyDO::getOrderId, orderId).eq(OrderBodyDO::getId, bodyId)) == 0) {
throw exception(ORDER_BODY_NOT_EXISTS);
@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* 板件基本信息
*/
@@ -28,10 +30,10 @@ public class BoardInfo {
private String unit; //商品单位
private String spec; //商品规格
private Double height;
private Double width;
private Double length;
private Double thickness;//规格-板厚 板厚,成品和开料都是一样的
private BigDecimal height;
private BigDecimal width;
private BigDecimal length;
private BigDecimal thickness;//规格-板厚 板厚,成品和开料都是一样的
private Boolean isTexture; // 有无纹路
private Double price;
@@ -21,7 +21,7 @@ public class PartsInfo {
// 配件所属信息
private String roomName; //房间名称
private String bodyName; //柜体名
private String bodyNo; // 柜体编号
private Integer bodyNo; // 柜体编号
// 柜体成倍拆单的倍数
@@ -1,10 +1,12 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import com.cf.imes.framework.es.core.dal.ESDocument;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@@ -15,9 +17,11 @@ import java.util.Map;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PlateDetail {
public class PlateDetail{
// 板名称
private String name;
// 板id
private Long id;
// 板编号
private String plateNo;
// 自定义板号
@@ -49,27 +53,27 @@ public class PlateDetail {
private List<Group> groupList;
// 成品长宽、面积
private Double plateWidth;
private Double plateLength;
private Double acreage;
private BigDecimal plateWidth;
private BigDecimal plateLength;
private BigDecimal acreage;
// 开料长宽、面积
private Double splitLength;
private Double splitWidth;
private Double sealAcreage;
private BigDecimal splitLength;
private BigDecimal splitWidth;
private BigDecimal sealAcreage;
// 是否异形
private Boolean isUnRegular;
// 封边,用于矩形
private Double sealLeft;
private Double sealRight;
private Double sealUp;
private Double sealDown;
private BigDecimal sealLeft;
private BigDecimal sealRight;
private BigDecimal sealUp;
private BigDecimal sealDown;
// 偏移量
private Double offsetX;
private Double offsetY;
private BigDecimal offsetX;
private BigDecimal offsetY;
// 大板基本信息
private BoardInfo boardInfo;
@@ -7,18 +7,12 @@ 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.orderModuleExtra.OrderModuleExtraDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
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.util.deviseData.dataTwo.*;
import com.cf.imes.module.system.api.dict.DictDataApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -44,14 +38,19 @@ public class ApiTypeChangeRealize {
@Resource
private DictDataApi dictDataApi;
public Map<Long, List<?>> apiPlateDataChange(JSONObject dataPlates, JSONObject dataParts, JSONObject dataBody, JSONObject dataGoods) {
public Map<Long, List<?>> apiPlateDataChange(JSONObject dataPlates, JSONObject dataParts
, JSONObject dataBody, JSONObject dataGoods
, JSONObject plates, JSONObject dataModule) {
// 上产单id
Long orderId = (Long) identifierGenerator.nextId(null);
Map<Long, List<?>> map = new HashMap<>();
return map;
}
// 板材数据转换
public List<PlateDetail> platesInfoChange(JSONObject dataPlates) {
// raw商品数据获取
Map<String, Map<Integer, ?>> rawGoodsMap = rawGoodsInfoChange(dataGoods, orderId); //数据完整
// 获取柜体数据转换
Map<Integer, OrderBodyDO> orderBodyDOMap = bodyInfoChange(dataBody, orderId); // 缺少数量
// 板材数据转换
List<PlateDetail> plateDetails = new ArrayList<>();
// 获取 Orders 字段对应的数组
JSONArray ordersArray = dataPlates.getJSONArray("Orders");
@@ -64,7 +63,7 @@ public class ApiTypeChangeRealize {
JSONObject order = ordersArray.getJSONObject(i);
// 生产单信息
Long orderId = (Long) identifierGenerator.nextId(null);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate orderDate = LocalDate.parse(order.getString("SaleDate"), formatter);
LocalDate deliveryDate = LocalDate.parse(order.getString("DeliveryDate"), formatter);
@@ -115,7 +114,7 @@ public class ApiTypeChangeRealize {
.getData().getValue());
PlateDO orderPartsDO = PlateDO.builder()
.id(plateId)
.goodsId(String.valueOf(goodsId))
.goodsId(Long.valueOf(goodsId))
.orderId(orderId)
.name(block.getString("BlockName"))
.plateNo(block.getString("CustomNo"))
@@ -144,8 +143,8 @@ public class ApiTypeChangeRealize {
.isDoor(block.getInteger("OpenDoorType") == 0 ? false : true)
.openDoorType(block.getInteger("OpenDoorType"))
.offsetX(block.getDouble("OffsetX"))
.offsetY(block.getDouble("OffsetY"))
.offsetX(block.getBigDecimal("OffsetX"))
.offsetY(block.getBigDecimal("OffsetY"))
.isArcAcross(false)
.moduleTypeId(0L)
@@ -168,22 +167,22 @@ public class ApiTypeChangeRealize {
.group(block.getString("ProcessGroupName"))
.multiNum(1)
// .groupList(getProcessGroup(block))
.plateWidth(Double.valueOf(block.getString("Width")))
.plateLength(Double.valueOf(block.getString("Length")))
.acreage(Double.valueOf(block.getString("Size")))
.splitWidth(Double.valueOf(block.getString("CuttingWidth")))
.splitLength(Double.valueOf(block.getString("CuttingLength")))
.sealAcreage(Double.valueOf(block.getString("CuttingSize")))
.isUnRegular(Boolean.valueOf(block.getString("IsUnRegular")))
.sealLeft(Double.valueOf(block.getString("BorderLeft")))
.sealRight(Double.valueOf(block.getString("BorderRight")))
.sealUp(Double.valueOf(block.getString("BorderUpper")))
.sealDown(Double.valueOf(block.getString("BorderUnder")))
.texture(Integer.valueOf(block.getString("Wave")))
.plateWidth(block.getBigDecimal("Width"))
.plateLength(block.getBigDecimal("Length"))
.acreage(block.getBigDecimal("Size"))
.splitWidth(block.getBigDecimal("CuttingWidth"))
.splitLength(block.getBigDecimal("CuttingLength"))
.sealAcreage(block.getBigDecimal("CuttingSize"))
.isUnRegular(block.getBoolean("IsUnRegular"))
.sealLeft(block.getBigDecimal("BorderLeft"))
.sealRight(block.getBigDecimal("BorderRight"))
.sealUp(block.getBigDecimal("BorderUpper"))
.sealDown(block.getBigDecimal("BorderUnder"))
.texture(block.getInteger("Wave"))
.typographicFace(Integer.valueOf(block.getString("PlaceFace")))
.openDoorType(Integer.valueOf(block.getString("OpenDoorType")))
.offsetX(Double.valueOf(block.getString("OffsetX")))
.offsetY(Double.valueOf(block.getString("OffsetY")))
.offsetX(block.getBigDecimal("OffsetX"))
.offsetY(block.getBigDecimal("OffsetY"))
.pointDetail(getPointDetail(block, 1))
.rawPointDetail(getPointDetail(block, 3))
.holeDetail(getHoleDetail(block, 1))
@@ -215,60 +214,275 @@ public class ApiTypeChangeRealize {
System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。");
}
return plateDetails;
return map;
}
// 柜体信息转换
private List<OrderBodyDO> bodyInfoChange(JSONObject dataBody) {
List<OrderBodyDO> bodyInfos = new ArrayList<>();
/**
* 生产单信息转换
*
* @param dataPlates:
* @return OrderDO
* @author Administrator
* @date 2024/4/30
*/
public OrderDO orderInfoChange(JSONObject dataPlates, Long orderId) {
List<PlateDetail> plateDetails = new ArrayList<>();
// 获取 Orders 字段对应的数组
JSONObject order = dataPlates.getJSONObject("Orders");
// 如果 Orders 数组不为空,则获取第一个订单对象
if (order != null && !order.isEmpty()) {
// 获取生产单信息
// 使用 DateTimeFormatter 解析日期字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate orderDate = LocalDate.parse(order.getString("SaleDate"), formatter);
LocalDate deliveryDate = LocalDate.parse(order.getString("DeliveryDate"), formatter);
OrderDO orderDO = OrderDO.builder()
.id(orderId)
.parentNo(0L)
.orderDate(orderDate.atStartOfDay())
.deliveryDate(deliveryDate.atStartOfDay())
.orderType(1)
.orderSort(0)
.dataType(2)
.status(0)
.customOrderNo(order.getString("CustomOrderNo"))
.customer(order.getString("Consigee"))
.address(order.getString("ConsigeeAddress"))
.phoneNumber(order.getString("ConsigeePhone"))
.dealer(order.getString("CustomName"))
.dealerPhoneNumber("")
.salesman(order.getString("SalePerson"))
.splitter("")
.remark(order.getString("Remark"))
.build();
return orderDO;
}
return null;
}
/**
* raw商品信息转换 和 商品信息转换
*
* @param dataRawGoods:
* @param orderId:
* @return Map<String, Map < Integer, ?>> String 标识 Integer:商品ID标识,RawGoodsDO:商品信息
* @author Administrator
* @date 2024/4/30
*/
public Map<String, Map<Integer, ?>> rawGoodsInfoChange(JSONObject dataRawGoods, Long orderId) {
Map<String, Map<Integer, ?>> map = new HashMap<>();
Map<Integer, RawGoodsDO> rawGoodsDOS = new HashMap<>();
Map<Integer, GoodsDO> goodsDOS = new HashMap<>();
dataRawGoods.getJSONArray("List").forEach(item -> {
JSONObject parts = (JSONObject) item;
RawGoodsDO rawGoodsDO = RawGoodsDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.rawGoodsId(String.valueOf(parts.getLong("GoodsID")))
.goodsName(parts.getString("GoodsName"))
.material(parts.getString("Material"))
.color(parts.getString("Color"))
.thickness(parts.getDouble("Thickness"))
.price(parts.getDouble("Price"))
.brand(parts.getString("Brand"))
.spec(parts.getString("Spec"))
.build();
rawGoodsDOS.put(parts.getInteger("GoodsID"), rawGoodsDO);
GoodsDO goodsDO = GoodsDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.rawGoodsId(rawGoodsDO.getId())
.goodsId(parts.getLong("GoodsID"))
.goodsName(parts.getString("GoodsName"))
.material(parts.getString("Material"))
.color(parts.getString("Color"))
.width(BigDecimal.valueOf(parts.getDouble("Width")))
.height(BigDecimal.valueOf(parts.getDouble("Height")))
.thickness(BigDecimal.valueOf(parts.getDouble("Thickness")))
.price(BigDecimal.valueOf(parts.getDouble("Price")))
.brand(parts.getString("Brand"))
.spec(parts.getString("Spec"))
.build();
goodsDOS.put(parts.getInteger("GoodsID"), goodsDO);
});
map.put("rawGoodsDOS", rawGoodsDOS);
map.put("goodsDOS", goodsDOS);
return map;
}
/**
* 柜体信息转换
*
* @param dataBody:
* @return Map<Integer, OrderBodyDO> Integer:柜体ID标识,OrderBodyDO:柜体信息(差数据)
* @author Administrator
* @date 2024/4/30
*/
private Map<Integer, OrderBodyDO> bodyInfoChange(JSONObject dataBody, Long orderId) {
Map<Integer, OrderBodyDO> bodyInfos = new HashMap<>();
dataBody.getJSONArray("List").forEach(item -> {
JSONObject body = (JSONObject) item;
OrderBodyDO bodyInfo = OrderBodyDO.builder()
.id(Long.valueOf(body.getString("BoxID")))// 差一个BoxID,没有对应的
.orderId(orderId)
.roomId(Long.valueOf(body.getString("RoomID")))
.roomName(body.getString("Room"))
.name(body.getString("Name"))
.width(body.getDouble("Width"))
.height(body.getDouble("Height"))
.depth(body.getDouble("Depth"))
.multiNum(0)
.plateNum(0)
.unregularNum(0)
.filename("")
.remark("")
.build();
bodyInfos.add(bodyInfo);
bodyInfos.put(body.getInteger("BoxID"), bodyInfo);
});
return bodyInfos;
}
// 加工组信息筛选
private List<OrderGroupDO> getProcessGroup(JSONObject block) {
List<OrderGroupDO> groupList = new ArrayList<>();
if (block.getJSONObject("ExtraRemark") != null && !block.getJSONObject("ExtraRemark").isEmpty()) {
JSONObject extraRemark = block.getJSONObject("ExtraRemark");
if (extraRemark.getJSONObject("extra") != null && !extraRemark.getJSONObject("extra").isEmpty()) {
JSONObject extra = extraRemark.getJSONObject("extra");
if (extra.getJSONArray("processList") != null && !extra.getJSONArray("processList").isEmpty()) {
for (int i = 0; i < extra.getJSONArray("processList").size(); i++) {
JSONObject process = extra.getJSONArray("processList").getJSONObject(i);
OrderGroupDO group = OrderGroupDO.builder()
// .id
.name(process.getString("name"))
.width(Double.valueOf(process.getJSONObject("size").getString("width")))
.height(Double.valueOf(process.getJSONObject("size").getString("height")))
.depth(Double.valueOf(process.getJSONObject("size").getString("depth")))
.build();
/**
* 加工组信息转换
*
* @param dataGroup: JSON 数据
* @param orderId:
* @param body: 柜体信息
* @return Map<Integer, List < Map < OrderGroupDO, List < Integer>>>> Integer 柜体id , List<Map<OrderGroupDO,List<Integer>>> 相同柜体的加工组信息
* OrderGroupDO:加工组信息 , List<Integer>:加工组中包含的板材配件信息
* (差数据)
* @author Administrator
* @date 2024/4/30
*/
private Map<Long, List<Map<OrderGroupDO, List<Integer>>>> groupInfoChange(JSONObject dataGroup, Long orderId
, Map<Integer, OrderBodyDO> body) {
groupList.add(group);
}
Map<Long, List<Map<OrderGroupDO, List<Integer>>>> groupInfosAndBodyId = new HashMap<>();
List<Map<OrderGroupDO, List<Integer>>> groupInfosAndItemList = new ArrayList<>();
Map<OrderGroupDO, List<Integer>> groupInfos = new HashMap<>();
}
dataGroup.getJSONArray("value").forEach(value -> {
JSONObject group = (JSONObject) value;
OrderGroupDO bodyInfo = OrderGroupDO.builder()
.id((Long) identifierGenerator.nextId(null))// 自动生成
.orderId(orderId)
.bodyId(0L)
.groupTypeId(Long.valueOf(group.getInteger("ModuleTypeID")))
.groupTypeName("")
.name(group.getString("ModuleTypeName"))
.width(group.getDouble("Width"))
.height(group.getDouble("Length"))
.depth(group.getDouble("Thickness"))
.multiNum(0)
.plateNum(0)
.unregularNum(0)
.filename("")
.remark("")
.build();
if (body.get(group.getInteger("BoxID")) != null) {
bodyInfo.setBodyId(body.get(group.getInteger("BoxID")).getId());
} else {
bodyInfo.setBodyId(-0L);
}
groupInfos.put(bodyInfo, jsonArrayToList(group.getJSONArray("ItemIDList")));
});
// 遍历groupInfos,以OrderGroupDO中的bodyId为key,将groupInfosAndItemList中的value添加到groupInfosAndBodyId中
// 遍历 groupInfos
groupInfos.forEach((groupInfo, itemList) -> {
// 获取当前分组信息的 bodyId
Long bodyId = groupInfo.getBodyId();
}
return groupList;
// 如果 groupInfosAndBodyId 中已经存在该 bodyId,则获取对应的项目列表,否则创建一个新的列表
List<Map<OrderGroupDO, List<Integer>>> existingItemList = groupInfosAndBodyId.getOrDefault(bodyId, new ArrayList<>());
// 创建包含当前分组信息及项目列表的 Map
Map<OrderGroupDO, List<Integer>> infoAndItemList = new HashMap<>();
infoAndItemList.put(groupInfo, itemList);
// 将当前的分组信息及项目列表添加到列表中
existingItemList.add(infoAndItemList);
// 更新 groupInfosAndBodyId 中的映射关系
groupInfosAndBodyId.put(bodyId, existingItemList);// 有问题
});
return groupInfosAndBodyId;
}
/**
* JSONArray转List<Integer>
*/
public List<Integer> jsonArrayToList(JSONArray jsonArray) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
list.add(jsonArray.getInteger(i));
}
return list;
}
/**
* 配件信息转存
*
* @param value: JSON数据
* @param orderId:
* @param group: 加工组信息
* @return List<PartsInfo>
* @author Administrator
* @date 2024/4/30
*/
public List<PartsInfo> partsInfoChange(JSONObject value, Long orderId, Map<OrderGroupDO, List<Integer>> group) {
List<PartsInfo> partsInfos = new ArrayList<>();
if (value != null && !value.isEmpty()) {
JSONArray partsLists = value.getJSONArray("List");
for (int i = 0; i < partsLists.size(); i++) {
JSONObject parts = partsLists.getJSONObject(i);
PartsInfo partsInfo = PartsInfo.builder()
.id(parts.getString("DataID"))
.name(parts.getString("Name"))
.roomName(parts.getString("RoomName"))
.bodyName(parts.getString("BoxName"))
.bodyNo(parts.getInteger("BoxID"))
.multiNum(Integer.valueOf(parts.getString("MultiNum")))
.goodsNo(parts.getString("GoodsNo"))
.goodId(Long.valueOf(parts.getString("GoodsID")))
.material(parts.getString("material"))
.color(parts.getString("color"))
.factory(parts.getString("Factory"))
.brand(parts.getString("Brand"))
.model(parts.getString("Model"))
.unit(parts.getString("Units"))
.price(parts.getDouble("Price"))
.isComposite(Boolean.valueOf(parts.getString("IsComposite")))
.groupName(parts.getString("GroupName"))
.objectType(parts.getString("ObjectType"))
.objectSpecExtras(parts.getString("SpecExtras"))
.goodsNumber(Double.valueOf(parts.getString("GoodsNumber")))
.doorRemark(parts.getString("DoorRemark"))
.hingeRemark(parts.getString("HingeRemark"))
.specialRemark(parts.getString("SpecialRemark"))
.remark(parts.getString("Remark"))
.processGroup(parts.getString("ProcessGroup"))
.build();
partsInfos.add(partsInfo);
}
}
// 配件信息转换成 柜体id,配件信息
Map<Integer, List<PartsInfo>> partsInfoMap = partsInfos.stream().collect(Collectors.groupingBy(PartsInfo::getBodyNo));
System.out.println(" partsInfos " + partsInfos);
return partsInfos;
}
// 异形板的开料轮廓 (type 为1,不含封边;其他为,含封边)
private List<PointDetail> getPointDetail(JSONObject block, Integer type) {
List<PointDetail> pointDetailList = new ArrayList<>();
@@ -0,0 +1,780 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
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.util.deviseData.dataTwo.*;
import com.cf.imes.module.system.api.dict.DictDataApi;
import lombok.extern.slf4j.Slf4j;
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.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
/**
* 实现数据格式转换
* 使用自带id
*/
@Slf4j
@Component
public class ApiTypeRealize {
@Resource
private IdentifierGenerator identifierGenerator;
@Resource
private DictDataApi dictDataApi;
/**
* @param dataPlates: 板件生产信息
* @param dataParts: 配件信息
* @param dataBody: 柜体信息
* @param dataGoods: 商品信息
* @param plates: 板件信息
* @param dataModule: 加工组信息
* @return Map<Long, List < ?>>
* @author Administrator
* @date 2024/5/6
*/
public Map<String, List<?>> apiPlateDataChange(JSONObject dataPlates, JSONObject dataParts
, JSONObject dataBody, JSONObject dataGoods
, JSONObject plates, JSONObject dataModule) {
Map<String, List<?>> map = new HashMap<>();
// 生产单id
Long orderId = (Long) identifierGenerator.nextId(null);
// 生产单数据
OrderDO orderDO = orderInfoChange(dataPlates, orderId);
List<OrderDO> order = new ArrayList<>();
order.add(orderDO);
// 商品信息数据 信息以全
Map<String, Map<Integer, ?>> goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId);
// System.out.println(" goodsInfoChange " + goodsInfoChange);
List<GoodsDO> goodsDO = (List<GoodsDO>) goodsInfoChange.get("goodsDOS").values().stream()
.collect(Collectors.toList());
map.put("goodsDO", goodsDO);
List<RawGoodsDO> rawGoodsDO = (List<RawGoodsDO>) goodsInfoChange.get("rawGoodsDOS").values().stream()
.collect(Collectors.toList());
map.put("rawGoodsDO", rawGoodsDO);
// 柜体信息 少异形数量、板材数量
Map<Integer, OrderBodyDO> bodyInfoChange = bodyInfoChange(dataBody, orderId);
// System.out.println(" bodyInfoChange " + bodyInfoChange);
// 加工组 少异形数量、板材数量
Map<String, Map<Integer, ?>> group = groupInfoChange(dataModule, orderId, bodyInfoChange);
Map<Integer, OrderGroupDO> orderGroupDO = (Map<Integer, OrderGroupDO>) group.get("orderGroup");
map.put("groupDO", orderGroupDO.values().stream().collect(Collectors.toList()));
Map<Integer, List<Integer>> groupLists = (Map<Integer, List<Integer>>) group.get("lists");
// 配件
Map<String, Map<Integer, ?>> partsDO = partsInfoChange(dataParts, orderId,
(Map<Integer, GoodsDO>) goodsInfoChange.get("goodsDOS"), bodyInfoChange);
Map<Integer, OrderPartsDO> orderPartsDO = (Map<Integer, OrderPartsDO>) partsDO.get("partsInfos");
map.put("partsDO", orderPartsDO.values().stream().collect(Collectors.toList()));
Map<Integer, OrderItemDO> partsItems = (Map<Integer, OrderItemDO>) partsDO.get("partsItems");
List<OrderItemDO> itemsList = new ArrayList<>();
partsItems = orderPartsChange(bodyInfoChange, orderGroupDO, groupLists, partsItems);// item补充
itemsList.addAll(partsItems.values());
// 板材 写库
Map<String, Map<Integer, ?>> platesDO = platesInfoChange(dataPlates, plates, orderId,
(Map<Integer, GoodsDO>) goodsInfoChange.get("goodsDOS"), bodyInfoChange);
Map<Integer, PlateDO> orderPlatesDO = (Map<Integer, PlateDO>) platesDO.get("platesInfos");
map.put("platesDO", orderPlatesDO.values().stream().collect(Collectors.toList()));
map.put("plateDetail", platesDO.get("plateDetail").values().stream().collect(Collectors.toList()));
Map<Integer, OrderItemDO> platesItems = (Map<Integer, OrderItemDO>) platesDO.get("platesItems");
Map<Integer, OrderBodyDO> bodyItemsPlates= (Map<Integer, OrderBodyDO>) platesDO.get("bodyInfos");
platesItems = orderPartsChange(bodyInfoChange, orderGroupDO, groupLists, platesItems);// item补充
itemsList.addAll(platesItems.values());
// System.out.println("生产单数据 " + orderDO+ " 商品信息1 " + goodsDO + " 商品信息2 "
// + rawGoodsDO + " 板材信息 " + new ArrayList<>(orderPlatesDO.values())
// + " 配件信息 " + new ArrayList<>(orderPartsDO.values())
// + " 柜体信息 " + new ArrayList<>(bodyInfoChange.values())
// + " 加工组信息 " + orderGroupDO
// + " 配件Item " + partsItems + " 板材Item " + platesItems);
map.put("orderDO", order);
map.put("itemDO", itemsList);
System.out.println(" bodyItemsPlates " + bodyItemsPlates);
map.put("bodyDO", bodyItemsPlates.values().stream().collect(Collectors.toList()));
return map;
}
/**
* @param bodyInfoChange: BoxId body
* @param orderGroupDO: ModuleID group
* @param groupLists: ModuleID 板材、配件id
* @param partsItems: ItemID item
* @return Map<Integer, OrderItemDO>
* @author Administrator
* @date 2024/5/8
*/
public Map<Integer, OrderItemDO> orderPartsChange(Map<Integer, OrderBodyDO> bodyInfoChange, Map<Integer, OrderGroupDO> orderGroupDO,
Map<Integer, List<Integer>> groupLists, Map<Integer, OrderItemDO> partsItems) {
groupLists.forEach((k, v) -> {
AtomicReference<Integer> groupNum = new AtomicReference<>(0);
v.forEach(v1 -> {
if (partsItems.get(v1) != null) {
partsItems.get(v1).setGroupId(orderGroupDO.get(k).getId());
groupNum.getAndSet(groupNum.get() + 1);
}
});
orderGroupDO.get(k).setPlateNum(groupNum.get());
});
// partsItems.forEach((k, v) -> {
// if (bodyInfoChange.get(Integer.parseInt(String.valueOf(v.getBodyId()))) != null) {
// v.setRoomId(bodyInfoChange.get(Integer.parseInt(String.valueOf(v.getBodyId()))).getRoomId());
// }
// });
return partsItems;
}
/**
* 柜体,加工组板材数量添加 !!!!!!!!!!!!!!
*/
/**
* 加工组 信息转换
*/
private Map<String, Map<Integer, ?>> groupInfoChange(JSONObject dataModule, Long orderId, Map<Integer, OrderBodyDO> bodyInfoChange) {
Map<String, Map<Integer, ?>> map = new HashMap<>();
Map<Integer, OrderGroupDO> orderGroupDOs = new HashMap<>();// 加工组id 和 加工组信息
Map<Integer, List<Integer>> groupLists = new HashMap<>();// 加工组id 和 详细信息
if (dataModule.getJSONArray("value") != null &&
!dataModule.getJSONArray("value").isEmpty()) {
JSONArray groupsLists = dataModule.getJSONArray("value");
for (int i = 0; i < groupsLists.size(); i++) {
JSONObject group = groupsLists.getJSONObject(i);
OrderGroupDO bodyInfo = OrderGroupDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.bodyId(bodyInfoChange.get(group.getInteger("BoxID")).getId())//group.getLong("BoxID")
.groupTypeId(Long.valueOf(group.getInteger("ModuleTypeID")))
.groupTypeName("")
.name(group.getString("ModuleTypeName"))
.width(group.getDouble("Width"))
.height(group.getDouble("Length"))
.depth(group.getDouble("Thickness"))
.multiNum(0)
.plateNum(0)
.unregularNum(0)
.filename("")
.remark("")
.build();
groupLists.put(group.getInteger("ModuleID"), jsonArrayToList(group.getJSONArray("ItemIDList")));
orderGroupDOs.put(group.getInteger("ModuleID"), bodyInfo);
}
}
map.put("lists", groupLists);
map.put("orderGroup", orderGroupDOs);
return map;
}
/**
* 生产单信息转换
*
* @param dataPlates:
* @return OrderDO
* @author Administrator
* @date 2024/4/30
*/
public OrderDO orderInfoChange(JSONObject dataPlates, Long orderId) {
// 获取 Orders 字段对应的数组
JSONObject order = dataPlates.getJSONArray("Orders").getJSONObject(0);
// 如果 Orders 数组不为空,则获取第一个订单对象
if (order != null && !order.isEmpty()) {
// 获取生产单信息
// 使用 DateTimeFormatter 解析日期字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate orderDate = LocalDate.parse(order.getString("SaleDate"), formatter);
LocalDate deliveryDate = LocalDate.parse(order.getString("DeliveryDate"), formatter);
OrderDO orderDO = OrderDO.builder()
.id(orderId)
.parentNo(0L)
.orderDate(orderDate.atStartOfDay())
.deliveryDate(deliveryDate.atStartOfDay())
.orderType(1)
.orderSort(0)
.dataType(2)
.status(0)
.customOrderNo(order.getString("CustomOrderNo"))
.customer(order.getString("Consigee"))
.address(order.getString("ConsigeeAddress"))
.phoneNumber(order.getString("ConsigeePhone"))
.dealer(order.getString("CustomName"))
.dealerPhoneNumber("")
.salesman(order.getString("SalePerson"))
.splitter("")
.remark(order.getString("Remark"))
.build();
return orderDO;
}
return null;
}
/**
* raw商品信息转换 和 商品信息转换
*
* @param dataRawGoods:
* @param orderId:
* @return Map<String, Map < Integer, ?>> String 标识 Integer:商品ID标识,RawGoodsDO:商品信息
* @author Administrator
* @date 2024/4/30
*/
public Map<String, Map<Integer, ?>> rawGoodsInfoChange(JSONObject dataRawGoods, Long orderId) {
Map<String, Map<Integer, ?>> map = new HashMap<>();
Map<Integer, RawGoodsDO> rawGoodsDOS = new HashMap<>();
Map<Integer, GoodsDO> goodsDOS = new HashMap<>();
if (dataRawGoods.getJSONObject("value").getJSONArray("List") != null &&
!dataRawGoods.getJSONObject("value").getJSONArray("List").isEmpty()) {
JSONArray goodsLists = dataRawGoods.getJSONObject("value").getJSONArray("List");
for (int i = 0; i < goodsLists.size(); i++) {
JSONObject goods = goodsLists.getJSONObject(i);
RawGoodsDO rawGoodsDO = RawGoodsDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.rawGoodsId(String.valueOf(goods.getLong("GoodsID")))
.goodsName(goods.getString("GoodsName"))
.material(goods.getString("Material"))
.color(goods.getString("Color"))
.thickness(goods.getDouble("Thickness"))
.price(goods.getDouble("Price"))
.brand(goods.getString("Brand"))
.spec(goods.getString("Spec"))
.build();
rawGoodsDOS.put(goods.getInteger("GoodsID"), rawGoodsDO);
GoodsDO goodsDO = GoodsDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.rawGoodsId(rawGoodsDO.getId())
.goodsId(goods.getLong("GoodsID"))
.goodsName(goods.getString("GoodsName"))
.material(goods.getString("Material"))
.color(goods.getString("Color"))
.width(BigDecimal.valueOf(goods.getDouble("Width")))
.height(BigDecimal.valueOf(goods.getDouble("Height")))
.thickness(BigDecimal.valueOf(goods.getDouble("Thickness")))
.price(BigDecimal.valueOf(goods.getDouble("Price")))
.brand(goods.getString("Brand"))
.spec(goods.getString("Spec"))
.build();
goodsDOS.put(goods.getInteger("GoodsID"), goodsDO);
}
}
map.put("rawGoodsDOS", rawGoodsDOS);
map.put("goodsDOS", goodsDOS);
return map;
}
/**
* 柜体信息转换
*
* @param dataBody:
* @return Map<Integer, OrderBodyDO> Integer:柜体ID标识,OrderBodyDO:柜体信息(差数据)
* @author Administrator
* @date 2024/4/30
*/
private Map<Integer, OrderBodyDO> bodyInfoChange(JSONObject dataBody, Long orderId) {
Map<Integer, OrderBodyDO> bodyInfos = new HashMap<>();
if (dataBody.getJSONObject("value").getJSONArray("List") != null &&
!dataBody.getJSONObject("value").getJSONArray("List").isEmpty()) {
JSONArray bodyLists = dataBody.getJSONObject("value").getJSONArray("List");
for (int i = 0; i < bodyLists.size(); i++) {
JSONObject body = bodyLists.getJSONObject(i);
OrderBodyDO bodyInfo = OrderBodyDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.roomId(Long.valueOf(body.getString("RoomID")))
.roomName(body.getString("Room"))
.name(body.getString("Name"))
.width(body.getDouble("Width"))
.height(body.getDouble("Height"))
.depth(body.getDouble("Depth"))
.multiNum(0)
.plateNum(0)
.unregularNum(0)
.filename("")
.remark("")
.build();
bodyInfos.put(body.getInteger("BoxID"), bodyInfo);
}
}
return bodyInfos;
}
/**
* JSONArray转List<Integer>
*/
public List<Integer> jsonArrayToList(JSONArray jsonArray) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
list.add(jsonArray.getInteger(i));
}
return list;
}
/**
* 配件信息转存 还没有存备注!!!!!!!!!!!!!!!!!!!!
*
* @param value: JSON数据
* @param orderId:
* @param goodsDOMap:
* @return Map<Integer, OrderPartsDO> Integer指配件的dataId标识id
* @author Administrator
* @date 2024/4/30
*/
public Map<String, Map<Integer, ?>> partsInfoChange(JSONObject value, Long orderId, Map<Integer, GoodsDO> goodsDOMap, Map<Integer, OrderBodyDO> bodyInfos) {
Map<String, Map<Integer, ?>> map = new HashMap<>();
Map<Integer, OrderPartsDO> partsInfos = new HashMap<>();
Map<Integer, OrderItemDO> partsItem = new HashMap<>();
if (value != null && !value.isEmpty()) {
JSONArray partsLists = value.getJSONObject("value").getJSONArray("List");
for (int i = 0; i < partsLists.size(); i++) {
JSONObject parts = partsLists.getJSONObject(i);
Long partsId = (Long) identifierGenerator.nextId(null);
OrderPartsDO partsInfo = OrderPartsDO.builder()
.id(partsId)
.orderId(orderId)
.goodsId(String.valueOf(goodsDOMap.get(parts.getInteger("GoodsID")) != null
? goodsDOMap.get(parts.getInteger("GoodsID")).getId() : parts.getInteger("GoodsID")))
.name(parts.getString("Name"))
.material(String.valueOf(goodsDOMap.get(parts.getInteger("GoodsID")) != null
? goodsDOMap.get(parts.getInteger("GoodsID")).getMaterial() : ""))
.type(parts.getString("ObjectType"))
.model(parts.getString("Model"))
.spec(parts.getString("Spec"))
.brand(parts.getString("Brand"))
.factory(parts.getString("Factory"))
.unit(parts.getString("Units"))
.price(parts.getDouble("Price"))
.isComposite(parts.getBoolean("IsComposite"))
.remark(parts.getString("SpecExtras"))
.build();
partsInfos.put(parts.getInteger("DataID"), partsInfo);
// item 明细
OrderItemDO item = OrderItemDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.type(2)
.roomId(bodyInfos.get(parts.getInteger("BoxID")).getRoomId())
.bodyId(bodyInfos.get(parts.getInteger("BoxID")).getId())
.planId(0L)
.packageId(0L)
.groupId(0L)
.partsId(partsId)
.num(parts.getDouble("Num"))
.build();
partsItem.put(parts.getInteger("DataID"), item);
}
}
map.put("partsInfos", partsInfos);
map.put("partsItems", partsItem);
return map;
}
private Integer num = 0;
/**
* 板材信息转换 写表 Integer指板材的ItemID板id 还没有存备注!!!!!!!!!!!!!!!!!!!!
*/
private Map<String, Map<Integer, ?>> platesInfoChange(JSONObject value, JSONObject dataPlates, Long orderId, Map<Integer, GoodsDO> goodsDOMap, Map<Integer, OrderBodyDO> bodyInfos) {
// 板材 写ES
Map<Integer, PlateDetail> plateDetail = platesDetailChange(value);
Map<String, Map<Integer, ?>> map = new HashMap<>();
Map<Integer, PlateDO> platesInfos = new HashMap<>();
Map<Integer, OrderItemDO> platesItem = new HashMap<>();
if (dataPlates.getJSONObject("value") != null &&
!dataPlates.getJSONObject("value").isEmpty()) {
JSONArray plateLists = dataPlates.getJSONObject("value").getJSONArray("List");
for (int i = 0; i < plateLists.size(); i++) {
JSONObject plate = plateLists.getJSONObject(i);
Integer type = Integer.valueOf(dictDataApi.parseDictData("order_plate_type",
plate.getString("BoardType"))
.getData().getValue());
Long plateId = (Long) identifierGenerator.nextId(null);
PlateDO plateInfo = PlateDO.builder()
.id(plateId)
.orderId(orderId)
.name(plate.getString("BoardName"))
.plateNo(plate.getString("CustBlockNo"))
.type(type)
.goodsId(goodsDOMap.get(plate.getInteger("GoodsID")) != null
? goodsDOMap.get(plate.getInteger("GoodsID")).getId() : plate.getInteger("GoodsID"))
.width(BigDecimal.valueOf(plate.getDouble("CutWidth")))
.height(BigDecimal.valueOf(plate.getDouble("CutWidth")))
.thickness(goodsDOMap.get(plate.getInteger("GoodsID")) != null
? goodsDOMap.get(plate.getInteger("GoodsID")).getThickness() : BigDecimal.valueOf(0L))
.splitHeight(BigDecimal.valueOf(plate.getDouble("SpliteHeight")))
.splitThickness(BigDecimal.valueOf(plate.getDouble("SpliteThickness")))
.splitWidth(BigDecimal.valueOf(plate.getDouble("SpliteWidth")))
.sealLeft(BigDecimal.valueOf(plate.getDouble("SealedLeft")))
.sealRight(BigDecimal.valueOf(plate.getDouble("SealedRight")))
.sealUp(BigDecimal.valueOf(plate.getDouble("SealedUp")))
.sealDown(BigDecimal.valueOf(plate.getDouble("SealedDown")))
.area(plateDetail.get(plate.getInteger("BlockNo")).getSealAcreage())
.texture(plateDetail.get(plate.getInteger("BlockNo")).getTexture())
.holeFace(0)
.holeArrange(0)
.unregularPointCount(0)
.frontHoleCount(plate.getInteger("FrontHoleCount"))
.sideHoleCount(plate.getInteger("BackHoleCount"))
.sideHoleCount(plate.getInteger("SideHoleCount"))
.frontModelCount(plate.getInteger("FrontModelCount"))
.backModelCount(plate.getInteger("BackModelCount"))
.isDoor(plateDetail.get(plate.getInteger("BlockNo")).getOpenDoorType() == 0)
.openDoorType(plate.getInteger("OpenDoorType"))
.offsetX(plateDetail.get(plate.getInteger("BlockNo")).getOffsetX())
.offsetY(plateDetail.get(plate.getInteger("BlockNo")).getOffsetY())
.isArcAcross(false)
.moduleTypeId(0L)
.isSculpt(plate.getBoolean("IsModel"))
.isSpecialShaped(plate.getBoolean("UnRegular"))
.isCancel(false)
.remark("")
.build();
// item 明细
OrderItemDO itemPlate = OrderItemDO.builder()
.id((Long) identifierGenerator.nextId(null))
.orderId(orderId)
.type(1)
.roomId(bodyInfos.get(plate.getInteger("BoxID")).getRoomId())
.bodyId(bodyInfos.get(plate.getInteger("BoxID")).getId())
.planId(0L)
.packageId(0L)
.groupId(0L)
.partsId(0L)
.plateId(plateId)
.num(0.0)
.build();
if (plateDetail.get(plate.getInteger("BlockNo")) != null) {
plateDetail.get(plate.getInteger("BlockNo")).setId(plateId);
}
platesInfos.put(plate.getInteger("ItemID"), plateInfo);
platesItem.put(plate.getInteger("ItemID"), itemPlate);
}
}
List<OrderItemDO> platesList = platesItem.values().stream().collect(Collectors.toList());
Map<Long, List<OrderItemDO>> platesDetail = platesList.stream()
.collect(Collectors.groupingBy(OrderItemDO::getBodyId));
// 遍历platesDetail
platesDetail.forEach((k, v) -> {
Integer specialShapedNum = 0;
v.forEach(item -> {
num++;
});
bodyInfos.forEach((n, m) -> {
if (k==m.getId()){
m.setPlateNum(num);
}
});
});
System.err.println(bodyInfos);
map.put("platesInfos", platesInfos);
map.put("platesItems", platesItem);
map.put("plateDetail", plateDetail);
map.put("bodyInfos", bodyInfos);
return map;
}
/**
* 板材数据转换成PlateDetail Integer指BlockID板id
*/
public Map<Integer, PlateDetail> platesDetailChange(JSONObject dataPlates) {
Map<Integer, PlateDetail> plateDetails = new HashMap<>();
// 获取 Orders 字段对应的数组
JSONArray ordersArray = dataPlates.getJSONArray("Orders");
// System.err.println(dataPlates);
if (ordersArray != null && !ordersArray.isEmpty()) {
for (int i = 0; i < ordersArray.size(); i++) {
JSONObject order = ordersArray.getJSONObject(i);
// 获取材料信息
if (order.getJSONArray("Materials") != null && !order.getJSONArray("Materials").isEmpty()) {
for (int j = 0; j < order.getJSONArray("Materials").size(); j++) {
JSONObject material = order.getJSONArray("Materials").getJSONObject(j);
// goodsMap.put()
// 板件信息
if (material.getJSONArray("Blocks") != null && !material.getJSONArray("Blocks").isEmpty()) {
for (int k = 0; k < material.getJSONArray("Blocks").size(); k++) {
JSONObject block = material.getJSONArray("Blocks").getJSONObject(k);// 每块板
PlateDetail plateDetail = PlateDetail.builder()
.bodyNo(block.getString("BoxNo"))
.plateNo(block.getString("BlockNo"))
.name(block.getString("BlockName"))
.customPlateNo(block.getString("CustomNo"))
.roomsName(block.getString("RoomName"))
.bodyName(block.getString("BoxName"))
.group(block.getString("ProcessGroupName"))
.multiNum(1)
.plateWidth(block.getBigDecimal("Width"))
.plateLength(block.getBigDecimal("Length"))
.acreage(block.getBigDecimal("Size"))
.splitWidth(block.getBigDecimal("CuttingWidth"))
.splitLength(block.getBigDecimal("CuttingLength"))
.sealAcreage(block.getBigDecimal("CuttingSize"))
.isUnRegular(block.getBoolean("IsUnRegular"))
.sealLeft(block.getBigDecimal("BorderLeft"))
.sealRight(block.getBigDecimal("BorderRight"))
.sealUp(block.getBigDecimal("BorderUpper"))
.sealDown(block.getBigDecimal("BorderUnder"))
.texture(block.getInteger("Wave"))
.typographicFace(Integer.valueOf(block.getString("PlaceFace")))
.openDoorType(Integer.valueOf(block.getString("OpenDoorType")))
.offsetX(block.getBigDecimal("OffsetX"))
.offsetY(block.getBigDecimal("OffsetY"))
.pointDetail(getPointDetail(block, 1))
.rawPointDetail(getPointDetail(block, 3))
.holeDetail(getHoleDetail(block, 1))
.sideHoleDetail(getHoleDetail(block, 3))
.contourDetail(getModelDetail(block))
// 排钻类型
.drillsInfos(getDrillsInfo(block))
.build();
if (block.getJSONObject("ExtraRemark") != null) {
if (block.getJSONObject("ExtraRemark").getJSONObject("extra") != null)
plateDetail.setBoardType(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("boardType"))
.setThroughHoleCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughHoleCount")))
.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")));
}
plateDetails.put(block.getInteger("BlockNo"), plateDetail);
}
}
}
}
// System.out.println("板块 " + plateDetails);
}
} else {
System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。");
}
return plateDetails;
}
// 异形板的开料轮廓 (type 为1,不含封边;其他为,含封边)
private List<PointDetail> getPointDetail(JSONObject block, Integer type) {
List<PointDetail> pointDetailList = new ArrayList<>();
if (type == 1) { // 不含封边
if (block.getJSONArray("Points") != null && !block.getJSONArray("Points").isEmpty()) {
for (int i = 0; i < block.getJSONArray("Points").size(); i++) {
JSONObject point = block.getJSONArray("Points").getJSONObject(i);
pointDetailList.add(PointDetail.builder()
.pointX(Double.valueOf(point.getString("X")))
.pointY(Double.valueOf(point.getString("Y")))
.curve(Double.valueOf(point.getString("Curve")))
.build());
}
}
} else { // 含封边
if (block.getJSONArray("OrgPoints") != null && !block.getJSONArray("OrgPoints").isEmpty()) {
for (int i = 0; i < block.getJSONArray("OrgPoints").size(); i++) {
JSONObject rawPoint = block.getJSONArray("OrgPoints").getJSONObject(i);
pointDetailList.add(PointDetail.builder()
.pointX(Double.valueOf(rawPoint.getString("X")))
.pointY(Double.valueOf(rawPoint.getString("Y")))
.curve(Double.valueOf(rawPoint.getString("Curve")))
.sealSize(Double.valueOf(rawPoint.getString("Edge")))
.build());
}
}
}
return pointDetailList;
}
// 孔明细板数据解析 (type 为1,正面;3,侧面)
private List<HoleDetail> getHoleDetail(JSONObject block, Integer type) {
List<HoleDetail> holeDetails = new ArrayList<>();
if (type == 1) { // 1,正面
if (block.getJSONArray("Holes") != null && !block.getJSONArray("Holes").isEmpty()) {
for (int i = 0; i < block.getJSONArray("Holes").size(); i++) {
JSONObject hole = block.getJSONArray("Holes").getJSONObject(i);
holeDetails.add(HoleDetail.builder()
.startX(Double.valueOf(hole.getString("X")))
.startY(Double.valueOf(hole.getString("Y")))
.faceType(1)
.radius(Double.valueOf(hole.getString("Diameter")) / 2)
.depth(Double.valueOf(hole.getString("Depth")))
.build());
}
}
} else {
if (block.getJSONArray("SideHoles") != null && !block.getJSONArray("SideHoles").isEmpty()) {
for (int i = 0; i < block.getJSONArray("SideHoles").size(); i++) {
JSONObject hole = block.getJSONArray("SideHoles").getJSONObject(i);
String[] startPoints = splitAndTrim(hole.getString("StartPoint"));
String[] endPoints = splitAndTrim(hole.getString("EndPoint"));
try {
holeDetails.add(HoleDetail.builder()
.startX(Double.valueOf(startPoints[0]))
.startY(Double.valueOf(startPoints[1]))
.startZ(Double.valueOf(startPoints[2]))
.endX(Double.valueOf(endPoints[0]))
.endY(Double.valueOf(endPoints[1]))
.endZ(Double.valueOf(endPoints[2]))
.faceType(3)
.radius(Double.valueOf(hole.getString("Diameter")) / 2)
.depth(Double.valueOf(hole.getString("Depth")))
.build());
} catch (Exception e) {
System.out.println("HoleDetail " + hole);
}
}
}
}
return holeDetails;
}
// 造型明细板数据解析 (type 为1,正面;3,侧面)
private List<ModelDetail> getModelDetail(JSONObject block) {
List<ModelDetail> modelDetails = new ArrayList<>();
if (block.getJSONArray("Models") != null && !block.getJSONArray("Models").isEmpty()) {
for (int i = 0; i < block.getJSONArray("Models").size(); i++) {
JSONObject model = block.getJSONArray("Models").getJSONObject(i);
List<PointList> pointLists = new ArrayList<>();
if (model.getJSONArray("Points") != null && !model.getJSONArray("Points").isEmpty()) {
for (int j = 0; j < model.getJSONArray("Points").size(); j++) {
JSONObject point = model.getJSONArray("Points").getJSONObject(j);
String[] points = splitAndTrim(point.getString("Pos"));
pointLists.add(PointList.builder()
.pointX(Double.valueOf(points[0]))
.pointY(Double.valueOf(points[1]))
.pointZ(Double.valueOf(points[2]))
.curve(Double.valueOf(point.getString("Curve")))
.build());
}
}
List<OffSetList> offSetLists = new ArrayList<>();
if (model.getJSONArray("OffsetList") != null && !model.getJSONArray("OffsetList").isEmpty()) {
for (int j = 0; j < model.getJSONArray("OffsetList").size(); j++) {
JSONObject offSet = model.getJSONArray("OffsetList").getJSONObject(j);
offSetLists.add(OffSetList.builder()
.value(Double.valueOf(offSet.getString("Value")))
.name(offSet.getString("Name"))
.radius(Double.valueOf(offSet.getString("Diameter")) / 2)
.angle(Double.valueOf(offSet.getString("Angle")))
.depth(Double.valueOf(offSet.getString("Depth")))
.build());
}
}
modelDetails.add(ModelDetail.builder()
.depth(Double.valueOf(model.getString("Depth")))
.faceType(Integer.valueOf(model.getString("Face")))
.knifeName(model.getString("TooINo"))
.knifeRadius(Double.valueOf(model.getString("Diameter")) / 2)
.pointList(pointLists)
.offSetList(offSetLists)
.build());
}
}
return modelDetails;
}
// 排钻数据
private List<DrillsInfo> getDrillsInfo(JSONObject block) {
List<DrillsInfo> drillsInfos = new ArrayList<>();
if (block.getJSONArray("drills") != null && !block.getJSONArray("drills").isEmpty()) {
for (int i = 0; i < block.getJSONArray("drills").size(); i++) {
JSONObject drill = block.getJSONArray("drills").getJSONObject(i);
drillsInfos.add(DrillsInfo.builder()
.name(drill.getString("name"))
.type(drill.getString("type"))
.face(drill.getString("face"))
.count(Double.valueOf(drill.getString("count")))
.build());
}
}
return drillsInfos;
}
// String[] 以逗号分割,去空格
public String[] splitAndTrim(String str) {
String[] strs = str.split(",");
for (int i = 0; i < strs.length; i++) {
strs[i] = strs[i].trim();
}
return strs;
}
// 将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()) {
map.put("remark" + i, block.getString("remark" + i));
}
}
return map;
}
// 将remark转为map
public Map<String, String> edgeRemarkToMap(JSONObject edgeRemark) {
Map<String, String> map = new HashMap<>();
if (edgeRemark.getJSONArray("edgeRemarks") != null && !edgeRemark.getJSONArray("edgeRemarks").isEmpty()) {
for (int i = 0; i < edgeRemark.getJSONArray("edgeRemarks").size(); i++) {
if (edgeRemark.getJSONArray("edgeRemarks").getString(i) != null && !edgeRemark.getJSONArray("edgeRemarks").getString(i).isEmpty()) {
map.put(String.valueOf(i), edgeRemark.getJSONArray("edgeRemarks").getString(i));
}
}
}
return map;
}
}
@@ -129,7 +129,9 @@ public class ProcessGroupServiceImpl implements ProcessGroupService {
List<ProcessGroupDO> processGroupDOList = processGroupMapper.selectList(new LambdaQueryWrapperX<ProcessGroupDO>()
.likeIfPresent(ProcessGroupDO::getName, name)
.eq(ProcessGroupDO::getOrganId, OrganContextHolder.getOrganId())
.select(ProcessGroupDO::getId, ProcessGroupDO::getName));
.select(ProcessGroupDO::getId, ProcessGroupDO::getName,
ProcessGroupDO::getIsDefault, ProcessGroupDO::getSort, ProcessGroupDO::getDescription,
ProcessGroupDO::getItems, ProcessGroupDO::getCreateTime, ProcessGroupDO::getUpdateTime));
return BeanUtils.toBean(processGroupDOList, ProcessGroupRespVO.class);
}