mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
新增cad三维看图能力相关
This commit is contained in:
+15
@@ -50,6 +50,21 @@ public class ServletUtils {
|
||||
IoUtil.write(response.getOutputStream(), false, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回附件文本
|
||||
*
|
||||
* @param response 响应
|
||||
* @param filename 文件名
|
||||
* @param content 附件内容
|
||||
*/
|
||||
public static void writeAttachmentText(HttpServletResponse response, String filename, byte[] content) throws IOException {
|
||||
// 设置 header 和 contentType
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
|
||||
response.setContentType(MediaType.TEXT_PLAIN_VALUE);
|
||||
// 输出附件
|
||||
IoUtil.write(response.getOutputStream(), false, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param request 请求
|
||||
* @return ua
|
||||
|
||||
+6
@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
@@ -75,6 +76,11 @@ public interface FileApi {
|
||||
@Parameter(name = "path", description = "文件地址", example = "url", required = true)
|
||||
CommonResult<Boolean> deleteFileByPath(String path);
|
||||
|
||||
@DeleteMapping(PREFIX + "/{id}")
|
||||
@Operation(summary = "根据文件id删除文件")
|
||||
@Parameter(name = "id", description = "文件id", example = "123L", required = true)
|
||||
CommonResult<Boolean> deleteFileById(@PathVariable Long id);
|
||||
|
||||
@PostMapping(PREFIX + "/create/id")
|
||||
@Operation(summary = "保存文件,并返回文件id")
|
||||
CommonResult<Long> createFileAndReturnId(@Valid @RequestBody FileCreateReqDTO createReqDTO);
|
||||
|
||||
+6
@@ -28,6 +28,12 @@ public class FileApiImpl implements FileApi {
|
||||
return success(fileService.deleteFileByPath(path));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteFileById(Long id) {
|
||||
fileService.deleteFile(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Long> createFileAndReturnId(FileCreateReqDTO createReqDTO) {
|
||||
return success(fileService.createFileDO(createReqDTO.getName(), createReqDTO.getPath(),
|
||||
|
||||
+24
@@ -50,6 +50,14 @@ public class FileController {
|
||||
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
|
||||
}
|
||||
|
||||
@PostMapping("/cadview")
|
||||
@Operation(summary = "上传CAD图纸数据")
|
||||
@OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要
|
||||
public CommonResult<Long> uploadCadViewFile(@RequestPart("file") MultipartFile file) throws Exception {
|
||||
return success(fileService.createFileDO("cadViewFile", null, file.getBytes()));
|
||||
}
|
||||
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除文件")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@@ -101,6 +109,22 @@ public class FileController {
|
||||
ServletUtils.writeAttachment(response, String.valueOf(id), content);
|
||||
}
|
||||
|
||||
@GetMapping("/txt/{id}")
|
||||
@Operation(summary = "根据文件编号下载文本文件")
|
||||
@Parameter(name = "id", description = "文件编号", required = true)
|
||||
@OperateLog(enable = false)
|
||||
@PermitAll
|
||||
public void getTxtFileContentById(HttpServletResponse response,
|
||||
@PathVariable("id") Long id) throws Exception {
|
||||
byte[] content = fileService.getFileById(id);
|
||||
if (content == null) {
|
||||
log.warn("[getFileContent][id({}) 文件不存在]", id);
|
||||
response.setStatus(HttpStatus.NOT_FOUND.value());
|
||||
return;
|
||||
}
|
||||
ServletUtils.writeAttachmentText(response, String.valueOf(id), content);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得文件分页")
|
||||
@PreAuthorize("@ss.hasPermission('infra:file:query')")
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ public interface FileService {
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteFile(Long id) throws Exception;
|
||||
void deleteFile(Long id);
|
||||
|
||||
/**
|
||||
* 获得文件内容
|
||||
|
||||
+6
-2
@@ -105,14 +105,18 @@ public class FileServiceImpl implements FileService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFile(Long id) throws Exception {
|
||||
public void deleteFile(Long id) {
|
||||
// 校验存在
|
||||
FileDO file = validateFileExists(id);
|
||||
|
||||
// 从文件存储器中删除
|
||||
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
||||
Assert.notNull(client, CLIENT_ERR_NOTIFICATION, file.getConfigId());
|
||||
client.delete(file.getPath());
|
||||
try {
|
||||
client.delete(file.getPath());
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException(FILE_REMOVE_FAIL);
|
||||
}
|
||||
|
||||
// 删除记录
|
||||
fileMapper.deleteById(id);
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order.vo.order;
|
||||
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
@Schema(description = "管理后台 - 柜体视图板材分组条件")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrderBodyViewPlatePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "生产单号", example = "1024")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "房间编号", example = "1024")
|
||||
private Long roomId;
|
||||
|
||||
@Schema(description = "柜体编号", example = "1024")
|
||||
private Long bodyId;
|
||||
}
|
||||
-3
@@ -88,7 +88,4 @@ public class OrderRespVO {
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private Boolean deleted;
|
||||
|
||||
@Schema(description = "cad图纸路径")
|
||||
private String cadViewPath;
|
||||
}
|
||||
-2
@@ -1,10 +1,8 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order.vo.product;
|
||||
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
|
||||
+12
@@ -6,6 +6,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
||||
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderBodyViewPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
@@ -138,5 +139,16 @@ public class PlateController {
|
||||
return success(plateService.createNewPlate(reqVO));
|
||||
}
|
||||
|
||||
@GetMapping("/body/view/page")
|
||||
@Operation(summary = "获取柜体下的板件视图分页列表数据")
|
||||
public CommonResult<PageResult<OrderBodyViewPlatePageRespVO>> getBodyViewPlatesPage(@Valid OrderBodyViewPlatePageReqVO orderBodyPageRespVO) {
|
||||
return success(plateService.getBodyViewPlatesPage(orderBodyPageRespVO));
|
||||
}
|
||||
|
||||
@GetMapping("/body/view/cadinfo")
|
||||
@Operation(summary = "获取板件对应柜体下的所有板件视图列表数据")
|
||||
@Parameter(name = "plateNo", description = "板件id", required = true)
|
||||
public CommonResult<List<OrderBodyViewPlatePageRespVO>> getBodyViewPlatesCadInfo(@RequestParam(value = "plateNo") Long plateNo) {
|
||||
return success(plateService.getBodyViewPlatesCadInfo(plateNo));
|
||||
}
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author Gqr
|
||||
* @since 2025/12/23 13:40
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "管理后台 - 柜体对应的板件视图信息")
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class OrderBodyViewPlatePageRespVO {
|
||||
@Schema(description = "板件编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "板件名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "板件宽度")
|
||||
private BigDecimal width;
|
||||
|
||||
@Schema(description = "板件高度")
|
||||
private BigDecimal height;
|
||||
|
||||
@Schema(description = "板件厚度")
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "板件CAD图纸ID")
|
||||
private Integer cadViewId;
|
||||
|
||||
@Schema(description = "左封边厚度")
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
@Schema(description = "右封边厚度")
|
||||
private BigDecimal sealRight;
|
||||
|
||||
@Schema(description = "上封边厚度")
|
||||
private BigDecimal sealUp;
|
||||
|
||||
@Schema(description = "下封边厚度")
|
||||
private BigDecimal sealDown;
|
||||
|
||||
@Schema(description = "材质")
|
||||
private String material;
|
||||
|
||||
@Schema(description = "颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "CAD图纸文件ID")
|
||||
private Long cadViewFileId;
|
||||
|
||||
@Schema(description = "CAD设计板编号")
|
||||
private String customNumber;
|
||||
}
|
||||
-5
@@ -146,9 +146,4 @@ public class OrderDO extends BaseDO {
|
||||
private Double plannedPlateArea;
|
||||
|
||||
private int version;
|
||||
|
||||
/**
|
||||
* cad图纸路径
|
||||
*/
|
||||
private String cadViewPath;
|
||||
}
|
||||
|
||||
+5
-1
@@ -1,6 +1,5 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.orderBody;
|
||||
|
||||
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
|
||||
import lombok.*;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
@@ -82,4 +81,9 @@ public class OrderBodyDO extends BaseDO {
|
||||
* 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
/**
|
||||
* cad图纸数据文件id
|
||||
*/
|
||||
private Long cadViewFileId;
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.orderItem;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 柜体板件视图数据DO
|
||||
*
|
||||
* @author Gqr
|
||||
* @since 2025/12/23 11:54
|
||||
*/
|
||||
@Data
|
||||
public class OrderBodyViewPlatesPageDO {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 板件名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 板件宽度
|
||||
*/
|
||||
private BigDecimal width;
|
||||
|
||||
/**
|
||||
* 板件高度
|
||||
*/
|
||||
private BigDecimal height;
|
||||
|
||||
/**
|
||||
* 板件厚度
|
||||
*/
|
||||
private BigDecimal thickness;
|
||||
|
||||
/**
|
||||
* 板件CAD图纸ID
|
||||
*/
|
||||
private Integer cadViewId;
|
||||
|
||||
/**
|
||||
* 左封边厚度
|
||||
*/
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
/**
|
||||
* 右封边厚度
|
||||
*/
|
||||
private BigDecimal sealRight;
|
||||
|
||||
/**
|
||||
* 上封边厚度
|
||||
*/
|
||||
private BigDecimal sealUp;
|
||||
|
||||
/**
|
||||
* 下封边厚度
|
||||
*/
|
||||
private BigDecimal sealDown;
|
||||
|
||||
/**
|
||||
* 材质
|
||||
*/
|
||||
private String material;
|
||||
|
||||
/**
|
||||
* 颜色
|
||||
*/
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* cad设计板编号
|
||||
*/
|
||||
private String customNumber;
|
||||
}
|
||||
+5
@@ -222,4 +222,9 @@ public class PlateDO extends BaseDO {
|
||||
* cad图纸数据
|
||||
*/
|
||||
private String cadData;
|
||||
|
||||
/**
|
||||
* cad自定义板编号
|
||||
*/
|
||||
private String cadPlateNo;
|
||||
}
|
||||
+16
@@ -10,6 +10,7 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderGoodsRes
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlatesDetailRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderBodyViewPlatesPageDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@@ -186,4 +187,19 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
|
||||
|
||||
List<PlateAndPartIdList> selectOrderPackPlateIds(@Param("orderId") Long orderId,@Param("organId") Long organId);
|
||||
|
||||
/**
|
||||
* 分页查询柜体板件视图数据
|
||||
*
|
||||
* @param page
|
||||
* @param orderId
|
||||
* @param roomId
|
||||
* @param bodyId
|
||||
* @return
|
||||
*/
|
||||
IPage<OrderBodyViewPlatesPageDO> selectBodyViewPlatesPage(@Param("page") IPage page,
|
||||
@Param("orderId") Long orderId,
|
||||
@Param("roomId") Long roomId,
|
||||
@Param("bodyId") Long bodyId,
|
||||
@Param("organId") Long organId,
|
||||
@Param("cadView") boolean cadView);
|
||||
}
|
||||
+16
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.plate;
|
||||
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderBodyViewPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
@@ -94,4 +95,19 @@ public interface PlateService {
|
||||
|
||||
List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO);
|
||||
|
||||
/**
|
||||
* 获取柜体板件视图分页列表
|
||||
*
|
||||
* @param orderBodyPageRespVO
|
||||
* @return
|
||||
*/
|
||||
PageResult<OrderBodyViewPlatePageRespVO> getBodyViewPlatesPage(OrderBodyViewPlatePageReqVO orderBodyPageRespVO);
|
||||
|
||||
/**
|
||||
* 根据板件id获取柜体下的所有板件cad视图所需信息
|
||||
*
|
||||
* @param plateId
|
||||
* @return
|
||||
*/
|
||||
List<OrderBodyViewPlatePageRespVO> getBodyViewPlatesCadInfo(Long plateId);
|
||||
}
|
||||
+117
-76
@@ -1,5 +1,6 @@
|
||||
package com.cf.imes.module.executor.service.plate;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
||||
@@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||
import com.cf.imes.framework.common.enums.*;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
@@ -21,6 +23,7 @@ import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
|
||||
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderBodyViewPlatePageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlateNumAndAreaRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderGoodsResp;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
@@ -28,6 +31,7 @@ import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
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.orderItem.OrderBodyViewPlatesPageDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||
@@ -136,28 +140,28 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deletePlate(List<Long> plateIds, Long planId) {
|
||||
|
||||
if(CollUtil.isEmpty(plateIds)){
|
||||
if (CollUtil.isEmpty(plateIds)) {
|
||||
return;
|
||||
}
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
List<PlateDO> plateDOS = plateMapper.selectBatchIds(plateIds);
|
||||
|
||||
AssertUtils.notEmpty(plateDOS,REMAIN_PLATE_NOT_EXISTS);
|
||||
AssertUtils.notEmpty(plateDOS, REMAIN_PLATE_NOT_EXISTS);
|
||||
|
||||
|
||||
for (PlateDO plateDO : plateDOS) {
|
||||
|
||||
if(!plateDO.getType().equals(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())){
|
||||
throw new ServiceException(PLATE_IS_SOURCE,plateDO.getPlateNo());
|
||||
if (!plateDO.getType().equals(OrderPlateTypeEnum.SELFINCREASINGBOARD.getType())) {
|
||||
throw new ServiceException(PLATE_IS_SOURCE, plateDO.getPlateNo());
|
||||
}
|
||||
|
||||
if(!plateDO.getIsCutted().equals(OrderPlateCutStatusEnum.NOCUTTING.getStatus())){
|
||||
if (!plateDO.getIsCutted().equals(OrderPlateCutStatusEnum.NOCUTTING.getStatus())) {
|
||||
|
||||
throw new ServiceException(THIS_PLATE_IS_OPTIMIZE,plateDO.getPlateNo());
|
||||
throw new ServiceException(THIS_PLATE_IS_OPTIMIZE, plateDO.getPlateNo());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +179,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
|
||||
|
||||
orderBodyDOS.forEach(f->{
|
||||
orderBodyDOS.forEach(f -> {
|
||||
int plateNum = orderItemDOS.stream().filter(o -> f.getId().equals(o.getBodyId())).toList().size();
|
||||
f.setPlateNum(f.getPlateNum() - plateNum);
|
||||
|
||||
@@ -191,7 +195,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
// 删除添加自增板时新增的大板ID
|
||||
List<Long> orderGoodsIdList = goodsMapper.selectInsertGoodsIds(orderIds, goodsIds, getUserOrganId());
|
||||
if(CollUtil.isNotEmpty(orderGoodsIdList)){
|
||||
if (CollUtil.isNotEmpty(orderGoodsIdList)) {
|
||||
goodsMapper.deleteBatchIds(orderGoodsIdList);
|
||||
}
|
||||
|
||||
@@ -301,8 +305,6 @@ public class PlateServiceImpl implements PlateService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO) {
|
||||
return plateMapper.selectPage(pageReqVO);
|
||||
@@ -317,8 +319,6 @@ public class PlateServiceImpl implements PlateService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO pageReqVO) {
|
||||
|
||||
@@ -331,14 +331,14 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
|
||||
queryWrapperX
|
||||
.eq("o.organ_id",organId)
|
||||
.eq("o.deleted",false)
|
||||
.in("o.status",statusList)
|
||||
.eq("o.organ_id", organId)
|
||||
.eq("o.deleted", false)
|
||||
.in("o.status", statusList)
|
||||
.isNotNull("op.id")
|
||||
.eq("op.deleted",false);
|
||||
.eq("op.deleted", false);
|
||||
|
||||
|
||||
if(pageReqVO.getPlanId() != null){
|
||||
if (pageReqVO.getPlanId() != null) {
|
||||
|
||||
Long planId = pageReqVO.getPlanId();
|
||||
|
||||
@@ -348,7 +348,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
List<OrderGoodsResp> goodsRespVOS = planMapper.selectPlanGoodsList(planId, organId);
|
||||
|
||||
AssertUtils.notEmpty(goodsRespVOS,PLAN_NOT_EXISTS);
|
||||
AssertUtils.notEmpty(goodsRespVOS, PLAN_NOT_EXISTS);
|
||||
|
||||
List<String> material = goodsRespVOS.stream().map(OrderGoodsResp::getMaterial).distinct().toList();
|
||||
|
||||
@@ -362,7 +362,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
|
||||
// 混单
|
||||
if(planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())){
|
||||
if (planDO.getType().equals(PlanTypeEnum.MIXEDORDERPLAN.getType())) {
|
||||
|
||||
// 混单添加查询条件
|
||||
mixedInsertQuery(pageReqVO, planDO, material, thickness, queryWrapperX);
|
||||
@@ -381,37 +381,37 @@ public class PlateServiceImpl implements PlateService {
|
||||
else {
|
||||
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL,pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor())
|
||||
.eqIfPresent(FIELD_OP_THICKNESS,pageReqVO.getThickness());
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.eqIfPresent(FIELD_OP_THICKNESS, pageReqVO.getThickness());
|
||||
}
|
||||
|
||||
|
||||
queryWrapperX
|
||||
.inIfPresent("op.goods_id",pageReqVO.getGoodsIdList())
|
||||
.inIfPresent("op.goods_id", pageReqVO.getGoodsIdList())
|
||||
.likeIfPresent("o.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId() : null)
|
||||
.likeIfPresent("op.id",pageReqVO.getPlateId())
|
||||
.likeIfPresent("op.name",pageReqVO.getPlateName())
|
||||
.likeIfPresent("op.plate_no",pageReqVO.getPlateNo())
|
||||
.likeIfPresent("op.custom_plate_no",pageReqVO.getCustomPlateNo())
|
||||
.likeIfPresent("op.id", pageReqVO.getPlateId())
|
||||
.likeIfPresent("op.name", pageReqVO.getPlateName())
|
||||
.likeIfPresent("op.plate_no", pageReqVO.getPlateNo())
|
||||
.likeIfPresent("op.custom_plate_no", pageReqVO.getCustomPlateNo())
|
||||
.betweenIfPresent("op.height", new BigDecimal[]{pageReqVO.getLongMinRang(), pageReqVO.getLongMaxRang()})
|
||||
.betweenIfPresent("op.width", new BigDecimal[]{pageReqVO.getWidthMinRang(), pageReqVO.getWidthMaxRang()})
|
||||
.betweenIfPresent(FIELD_OP_THICKNESS, new BigDecimal[]{pageReqVO.getThicknessMinRang(), pageReqVO.getThicknessMaxRang()})
|
||||
.eqIfPresent("op.texture",pageReqVO.getTexture())
|
||||
.eqIfPresent("op.is_special_shaped",pageReqVO.getIsSpecialShaped())
|
||||
.eqIfPresent("op.is_sculpt",pageReqVO.getIsSculpt())
|
||||
.eqIfPresent("op.is_row_hole",pageReqVO.getIsRowHole())
|
||||
.likeIfPresent("op.remark",pageReqVO.getRemark())
|
||||
.eqIfPresent("op.texture", pageReqVO.getTexture())
|
||||
.eqIfPresent("op.is_special_shaped", pageReqVO.getIsSpecialShaped())
|
||||
.eqIfPresent("op.is_sculpt", pageReqVO.getIsSculpt())
|
||||
.eqIfPresent("op.is_row_hole", pageReqVO.getIsRowHole())
|
||||
.likeIfPresent("op.remark", pageReqVO.getRemark())
|
||||
.orderByDesc("o.id, op.id");
|
||||
|
||||
|
||||
Integer pageNo = (pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize();
|
||||
|
||||
|
||||
List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX,pageNo,pageReqVO.getPageSize(),organId);
|
||||
List<PlateResList> plateResLists = orderMapper.selectNoPlanOrderPlateList(queryWrapperX, pageNo, pageReqVO.getPageSize(), organId);
|
||||
|
||||
if(CollUtil.isEmpty(plateResLists)){
|
||||
if (CollUtil.isEmpty(plateResLists)) {
|
||||
|
||||
return new PageResult<>();
|
||||
|
||||
@@ -420,7 +420,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
queryWrapperX
|
||||
.groupBy("o.id");
|
||||
|
||||
List<Long> plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX,organId);
|
||||
List<Long> plateCount = orderMapper.selectNoPlanOrderPlateCount(queryWrapperX, organId);
|
||||
|
||||
long sum = plateCount.stream().mapToLong(Long::longValue).sum();
|
||||
|
||||
@@ -465,7 +465,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Override
|
||||
public PageResult<PlateRespVO> getPlatePageByTerms(PlateTermsPageReqVO pageReqVO) {
|
||||
PageDTO<PlateRespVO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
IPage<PlateRespVO> pageRes = plateMapper.selectProductList(page, pageReqVO.getOrderId(), pageReqVO.getRoomId(), pageReqVO.getBodyId(),getUserOrganId());
|
||||
IPage<PlateRespVO> pageRes = plateMapper.selectProductList(page, pageReqVO.getOrderId(), pageReqVO.getRoomId(), pageReqVO.getBodyId(), getUserOrganId());
|
||||
return new PageResult<PlateRespVO>(pageRes.getRecords(), pageRes.getTotal());
|
||||
}
|
||||
|
||||
@@ -487,11 +487,11 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public List<BodyPlateDetailVO> getPlateModelByPlateId(List<Long> bodyIds) {
|
||||
public List<BodyPlateDetailVO> getPlateModelByPlateId(List<Long> bodyIds) {
|
||||
List<BodyPlateIdDTO> list = plateMapper.selectJoinList(BodyPlateIdDTO.class, new MPJLambdaWrapperX<PlateDO>()
|
||||
.selectAs(PlateDO::getId, FIELD_PLATE_ID)
|
||||
.leftJoin(OrderItemDO.class, OrderItemDO::getPlateId, PlateDO::getId)
|
||||
.eq(OrderItemDO::getOrganId,getUserOrganId())
|
||||
.eq(OrderItemDO::getOrganId, getUserOrganId())
|
||||
.in(OrderItemDO::getBodyId, bodyIds)
|
||||
.select(OrderItemDO::getBodyId)
|
||||
);
|
||||
@@ -503,18 +503,17 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
List<BodyPlateDetailVO> bodyPlateDetailVOS = new ArrayList<>();
|
||||
List<List<List<Object>>> data = new ArrayList<>();
|
||||
map.entrySet().forEach(e->{
|
||||
bodyPlateDetailVOS.add(BodyPlateDetailVO.builder()
|
||||
.orderModelList(e.getValue())
|
||||
.bodyId(e.getKey())
|
||||
.build()
|
||||
);
|
||||
map.entrySet().forEach(e -> {
|
||||
bodyPlateDetailVOS.add(BodyPlateDetailVO.builder()
|
||||
.orderModelList(e.getValue())
|
||||
.bodyId(e.getKey())
|
||||
.build()
|
||||
);
|
||||
});
|
||||
return bodyPlateDetailVOS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO) {
|
||||
@@ -529,15 +528,15 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
List<OrderModelDO> orderPlateModelDOS = new ArrayList<>();
|
||||
|
||||
Long planId = Optional.ofNullable(reqVO.get(0).getPlanId()).orElseThrow(()-> new ServiceException(ORDER_PLAN_PLATE_ERROR));
|
||||
Long planId = Optional.ofNullable(reqVO.get(0).getPlanId()).orElseThrow(() -> new ServiceException(ORDER_PLAN_PLATE_ERROR));
|
||||
|
||||
PlanDO planDO = planMapper.selectById(planId);
|
||||
AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR);
|
||||
AssertUtils.notEmpty(planDO, ORDER_PLAN_DATE_ERROR);
|
||||
|
||||
List<Long> orderIds = reqVO.stream().map(OptimizationSavePlateReqVO::getOrderId).distinct().toList();
|
||||
|
||||
// 查询排单下的orderGoodsId列表
|
||||
List<Long> goodsId = planMapper.selectPlanOrderGoodsId(planId,orderIds, getUserOrganId());
|
||||
List<Long> goodsId = planMapper.selectPlanOrderGoodsId(planId, orderIds, getUserOrganId());
|
||||
|
||||
List<GoodsDO> goodsDOS = goodsMapper.selectBatchIds(goodsId);
|
||||
|
||||
@@ -546,9 +545,9 @@ public class PlateServiceImpl implements PlateService {
|
||||
Map<Long, OrderPlanPlateNumAndAreaRespVO> orderGoodsPlanPlateNumAndAreaRespVOMap = new HashMap<>();
|
||||
|
||||
// 组装新增数据
|
||||
reqVO.forEach(f->{
|
||||
reqVO.forEach(f -> {
|
||||
|
||||
Map<String,String> plateIdAndNo = new HashMap<>();
|
||||
Map<String, String> plateIdAndNo = new HashMap<>();
|
||||
|
||||
Long orderId = f.getOrderId();
|
||||
|
||||
@@ -571,7 +570,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
// 小板ID
|
||||
Long plateId = (Long) identifierGenerator.nextId(null);
|
||||
|
||||
plateIdAndNo.put(plateId.toString(),plateNo);
|
||||
plateIdAndNo.put(plateId.toString(), plateNo);
|
||||
|
||||
// 计算面积
|
||||
BigDecimal area = f.getWidth().multiply(f.getHeight()).movePointLeft(6).stripTrailingZeros();
|
||||
@@ -644,7 +643,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
List<OrderBodyDO> orderBodyDOS = orderBodyMapper.selectBatchIds(bodyIds);
|
||||
|
||||
orderBodyDOS.forEach(f->{
|
||||
orderBodyDOS.forEach(f -> {
|
||||
|
||||
Integer plateNum = numVOS.stream()
|
||||
.filter(n -> n.getBodyId().equals(f.getId()))
|
||||
@@ -724,7 +723,6 @@ public class PlateServiceImpl implements PlateService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static List<OrderBodyNumVO> mergeOrderBody(List<OrderBodyNumVO> dataList) {
|
||||
if (dataList == null || dataList.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
@@ -744,16 +742,12 @@ public class PlateServiceImpl implements PlateService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
|
||||
|
||||
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
|
||||
SearchRequest.Builder builder = new SearchRequest.Builder();
|
||||
builder.index(index);
|
||||
builder.query(q -> q.terms(b -> b.field(FIELD_PLATE_ID).terms(e->e.value(fieldValues))));
|
||||
builder.query(q -> q.terms(b -> b.field(FIELD_PLATE_ID).terms(e -> e.value(fieldValues))));
|
||||
builder.size(plateIds.size());
|
||||
try {
|
||||
SearchResponse<OrderModelDO> search = elasticsearchClient.search(builder.build(), OrderModelDO.class);
|
||||
@@ -776,29 +770,28 @@ public class PlateServiceImpl implements PlateService {
|
||||
QueryWrapperX<OrderDO> queryWrapperX) {
|
||||
|
||||
|
||||
|
||||
if(Boolean.TRUE.equals(pageReqVO.getIsMixed())){
|
||||
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
||||
throw new ServiceException(PLAN_IS_MIXED_ERROR);
|
||||
}
|
||||
|
||||
// 相同材质和厚度
|
||||
if(planDO.getFilter().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){
|
||||
if (planDO.getFilter().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())) {
|
||||
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL,material)
|
||||
.likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS,thickness);
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
|
||||
}
|
||||
// 相同厚度
|
||||
else {
|
||||
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL,pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND,pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR,pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS,thickness);
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
.likeIfPresent(FIELD_OG_COLOR, pageReqVO.getColor())
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
|
||||
}
|
||||
|
||||
@@ -816,14 +809,14 @@ public class PlateServiceImpl implements PlateService {
|
||||
QueryWrapperX<OrderDO> queryWrapperX) {
|
||||
|
||||
// 是否开启混单
|
||||
if(Boolean.TRUE.equals(pageReqVO.getIsMixed())){
|
||||
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
||||
|
||||
if(!planDO.getStatus().equals(PlanStatusEnum.NOCUTTING.getStatus())){
|
||||
if (!planDO.getStatus().equals(PlanStatusEnum.NOCUTTING.getStatus())) {
|
||||
throw new ServiceException(PLAN_PLATE_IS_CUTTING);
|
||||
}
|
||||
|
||||
// 相同材质和厚度 混单
|
||||
if(pageReqVO.getMixedType().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())){
|
||||
if (pageReqVO.getMixedType().equals(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.getType())) {
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
@@ -832,7 +825,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
}
|
||||
// 相同厚度 混单
|
||||
else{
|
||||
else {
|
||||
queryWrapperX
|
||||
.likeIfPresent(FIELD_OG_MATERIAL, pageReqVO.getMaterial())
|
||||
.likeIfPresent(FIELD_OG_BRAND, pageReqVO.getBrand())
|
||||
@@ -840,7 +833,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
.inIfPresent(FIELD_OP_THICKNESS, thickness);
|
||||
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
queryWrapperX
|
||||
.inIfPresent(FIELD_OG_MATERIAL, material)
|
||||
.inIfPresent(FIELD_OG_BRAND, brand)
|
||||
@@ -852,5 +845,53 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<OrderBodyViewPlatePageRespVO> getBodyViewPlatesPage(OrderBodyViewPlatePageReqVO pageReqVO) {
|
||||
PageDTO<PlateRespVO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
IPage<OrderBodyViewPlatesPageDO> pageRes = orderItemMapper.selectBodyViewPlatesPage(page, pageReqVO.getOrderId(), pageReqVO.getRoomId(), pageReqVO.getBodyId(), getUserOrganId(), false);
|
||||
return new PageResult(BeanUtil.copyToList(pageRes.getRecords(), OrderBodyViewPlatePageRespVO.class), pageRes.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderBodyViewPlatePageRespVO> getBodyViewPlatesCadInfo(Long plateId) {
|
||||
// 匹配板材
|
||||
PlateDO plateDO = plateMapper.selectById(plateId);
|
||||
if (ObjectUtil.isNull(plateDO)) {
|
||||
throw new ServiceException(PLATE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
// 匹配orderItem
|
||||
OrderItemDO orderItemDO = orderItemMapper.selectOne(new LambdaUpdateWrapper<OrderItemDO>()
|
||||
.eq(OrderItemDO::getPlateId, plateId)
|
||||
.eq(OrderItemDO::getOrderId, plateDO.getOrderId())
|
||||
.eq(OrderItemDO::getOrganId, plateDO.getOrganId()));
|
||||
if (ObjectUtil.isNull(orderItemDO)) {
|
||||
throw new ServiceException(PLATE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
// 匹配柜体
|
||||
OrderBodyDO orderBodyDO = orderBodyMapper.selectById(orderItemDO.getBodyId());
|
||||
if (ObjectUtil.isNull(orderBodyDO)) {
|
||||
throw new ServiceException(ORDER_BODY_NOT_EXISTS);
|
||||
}
|
||||
|
||||
Long cadViewFileId = orderBodyDO.getCadViewFileId();
|
||||
|
||||
// 查询所有板件的视图所需信息
|
||||
PageDTO<PlateRespVO> page = new PageDTO<>(1, PageParam.PAGE_SIZE_NONE);
|
||||
IPage<OrderBodyViewPlatesPageDO> viewPlatesPage = orderItemMapper.selectBodyViewPlatesPage(page, orderItemDO.getOrderId(), orderItemDO.getRoomId(), orderItemDO.getBodyId(), orderItemDO.getOrganId(), true);
|
||||
List<OrderBodyViewPlatesPageDO> records = viewPlatesPage.getRecords();
|
||||
|
||||
List<OrderBodyViewPlatePageRespVO> resultList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
resultList = records.stream().map(item -> {
|
||||
OrderBodyViewPlatePageRespVO vo = new OrderBodyViewPlatePageRespVO();
|
||||
BeanUtil.copyProperties(item, vo);
|
||||
|
||||
vo.setCadViewFileId(cadViewFileId);
|
||||
return vo;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
+17
@@ -533,4 +533,21 @@
|
||||
and plate_id !=0
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectBodyViewPlatesPage" resultType="com.cf.imes.module.executor.dal.dataobject.orderItem.OrderBodyViewPlatesPageDO">
|
||||
SELECT p.id, p.name, p.width, p.height, p.thickness, p.cad_view_id, g.material, g.color
|
||||
<if test="cadView">
|
||||
, p.cad_plate_no as customNumber, p.seal_left, p.seal_down, p.seal_right, p.seal_up
|
||||
</if>
|
||||
FROM order_item i
|
||||
LEFT JOIN `order_plate` p ON i.plate_id = p.id
|
||||
LEFT JOIN `order_goods` g ON g.id = p.goods_id
|
||||
WHERE i.order_id = #{orderId} AND i.organ_id = #{organId} AND p.deleted = false and i.plate_id != 0
|
||||
<if test="roomId != null">
|
||||
AND i.room_id = #{roomId}
|
||||
</if>
|
||||
<if test="bodyId != null">
|
||||
AND i.body_id = #{bodyId}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
+3
-2
@@ -18,6 +18,9 @@ public class WebCadDataReqVO {
|
||||
@JsonProperty(value = "OrderNo")
|
||||
private String orderNo;
|
||||
|
||||
@JsonProperty(value = "CadViewFileId")
|
||||
private Long cadViewFileId;
|
||||
|
||||
@JsonProperty(value = "Materials")
|
||||
private List<WebCadDataMaterialReqVO> Materials;
|
||||
|
||||
@@ -33,6 +36,4 @@ public class WebCadDataReqVO {
|
||||
|
||||
@JsonProperty(value = "Blocks")
|
||||
private List<WebCadDataDoubleRoomTreeReqVO> blocks;
|
||||
|
||||
private String cadViewPath;
|
||||
}
|
||||
|
||||
-5
@@ -157,9 +157,4 @@ public class OrderDO extends BaseDO {
|
||||
* 版本号:乐观锁用
|
||||
*/
|
||||
private int version;
|
||||
|
||||
/**
|
||||
* cad图纸路径
|
||||
*/
|
||||
private String cadViewPath;
|
||||
}
|
||||
|
||||
+5
@@ -301,4 +301,9 @@ public class PlateDO extends BaseDO {
|
||||
* cad图纸数据
|
||||
*/
|
||||
private String cadData;
|
||||
|
||||
/**
|
||||
* cad自定义板编号
|
||||
*/
|
||||
private String cadPlateNo;
|
||||
}
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
package com.cf.imes.module.plan.framework.rpc.config;
|
||||
|
||||
import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.system.api.customplateno.CustomPlateNoSeqApi;
|
||||
import com.cf.imes.module.system.api.dict.DictDataApi;
|
||||
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
|
||||
@@ -11,6 +12,6 @@ import org.springframework.context.annotation.Configuration;
|
||||
* @author there
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, DictDataApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class,})
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, DictDataApi.class, SystemConfigApi.class, CustomPlateNoSeqApi.class, FileApi.class})
|
||||
public class RpcConfiguration {
|
||||
}
|
||||
|
||||
+28
@@ -21,6 +21,7 @@ import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTaskStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||
import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataReqVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
||||
@@ -118,6 +119,9 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
@Resource
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Resource
|
||||
private FileApi fileApi;
|
||||
|
||||
private static final String REDIS_UNIQUEKEY = "webcad";
|
||||
|
||||
@Resource
|
||||
@@ -134,6 +138,8 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
Long taskId = null;
|
||||
OrderDO orderDO = null;
|
||||
JsonFactory factory = new JsonFactory();
|
||||
|
||||
Long cadViewFileId = null;
|
||||
try (GZIPInputStream gzipInputStream = new GZIPInputStream(file.getInputStream());
|
||||
JsonParser parser = factory.createParser(gzipInputStream)) {
|
||||
factory.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
|
||||
@@ -165,6 +171,9 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
WebCadDataReqVO webCadDataReqVO = mapper.readValue(parser, WebCadDataReqVO.class);
|
||||
WebCadOrderImportFactory webCadOrderImportFactory = new WebCadOrderImportFactory(organId, orderDO, snowFlakeGenerator, orderMapper, orderBodyMapper, plateMapper,
|
||||
idWorker, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, webCadImportProperties.getCadImportPlateNumThreshold(), jdbcTemplate);
|
||||
|
||||
// cad图纸文件id
|
||||
cadViewFileId = webCadDataReqVO.getCadViewFileId();
|
||||
webCadOrderImportFactory.analyzeTempData(webCadDataReqVO);
|
||||
} else {
|
||||
sync = false;
|
||||
@@ -190,11 +199,15 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
}
|
||||
}
|
||||
} catch (ServiceException se) {
|
||||
// 删除cad图纸数据
|
||||
removeCadFileWhenException(cadViewFileId);
|
||||
// 移除临时文件
|
||||
removeCacheFileWhenException(sync, taskId);
|
||||
|
||||
throw se;
|
||||
} catch (Exception e) {
|
||||
// 删除cad图纸数据
|
||||
removeCadFileWhenException(cadViewFileId);
|
||||
// 移除临时文件
|
||||
removeCacheFileWhenException(sync, taskId);
|
||||
|
||||
@@ -333,4 +346,19 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除cad图纸文件数据
|
||||
*
|
||||
* @param cadViewFileId
|
||||
*/
|
||||
private void removeCadFileWhenException(Long cadViewFileId) {
|
||||
try {
|
||||
if (ObjectUtil.isNotNull(cadViewFileId)) {
|
||||
fileApi.deleteFileById(cadViewFileId);
|
||||
}
|
||||
} catch (IORuntimeException e) {
|
||||
log.error("删除cad图纸数据文件失败: {}", cadViewFileId, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-7
@@ -5,17 +5,16 @@ import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
|
||||
import com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants;
|
||||
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.framework.redis.config.ChenfengCacheProperties;
|
||||
import com.cf.imes.framework.redis.constants.RedisKeyConstants;
|
||||
import com.cf.imes.framework.redis.util.RedisLockUtil;
|
||||
import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
||||
import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.order.OrderMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderBody.OrderBodyMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderGroup.OrderGroupMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
||||
@@ -65,9 +64,6 @@ public class WebCadOrderImportConsumer {
|
||||
@Resource
|
||||
private PlateMapper plateMapper;
|
||||
|
||||
@Resource
|
||||
private OrderGroupMapper orderGroupMapper;
|
||||
|
||||
@Resource
|
||||
private SnowflakeIdWorker3rd idWorker;
|
||||
|
||||
@@ -107,6 +103,9 @@ public class WebCadOrderImportConsumer {
|
||||
@Resource
|
||||
private ChenfengCacheProperties chenfengCacheProperties;
|
||||
|
||||
@Resource
|
||||
private FileApi fileApi;
|
||||
|
||||
@RabbitListener(queues = "#{@orderImportWebCadQueueName}")
|
||||
@DS("imes_prod")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -150,8 +149,9 @@ public class WebCadOrderImportConsumer {
|
||||
|
||||
log.info("====================【webcad异步拆单处理临时数据开始】====================");
|
||||
WebCadOrderImportAsyncFactory webCadOrderImportAsyncFactory =
|
||||
new WebCadOrderImportAsyncFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, orderGroupMapper, idWorker,
|
||||
orderImportTaskMapper, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, orderImportTaskDO.getCreator(), cadImportPlateNumThreshold, jdbcTemplate);
|
||||
new WebCadOrderImportAsyncFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, idWorker,
|
||||
orderImportTaskMapper, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, orderImportTaskDO.getCreator(),
|
||||
cadImportPlateNumThreshold, jdbcTemplate, fileApi);
|
||||
webCadOrderImportAsyncFactory.analyzeTempData(taskId, webCadImportProperties.getTempFilePath());
|
||||
log.info("====================【webcad异步拆单处理临时数据结束】====================");
|
||||
|
||||
|
||||
+51
-34
@@ -1,6 +1,7 @@
|
||||
package com.cf.imes.module.plan.service.orderImport.factory;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
@@ -23,6 +24,7 @@ import com.cf.imes.module.executor.enums.DataTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||
import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataBlockRemarkVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataBlockReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataDoubleRoomTreeReqVO;
|
||||
@@ -51,7 +53,6 @@ import com.cf.imes.module.plan.dal.elasticsearch.PointList;
|
||||
import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.order.OrderMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderBody.OrderBodyMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderGroup.OrderGroupMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.orderImport.OrderImportTaskMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
||||
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
||||
@@ -113,8 +114,6 @@ public class WebCadOrderImportAsyncFactory {
|
||||
|
||||
private PlateMapper plateMapper;
|
||||
|
||||
private OrderGroupMapper orderGroupMapper;
|
||||
|
||||
private SnowflakeIdWorker3rd idWorker;
|
||||
|
||||
private OrderImportTaskMapper orderImportTaskMapper;
|
||||
@@ -131,6 +130,8 @@ public class WebCadOrderImportAsyncFactory {
|
||||
|
||||
private JdbcTemplate jdbcTemplate;
|
||||
|
||||
private FileApi fileApi;
|
||||
|
||||
private Long organId;
|
||||
|
||||
// 批次id
|
||||
@@ -202,15 +203,14 @@ public class WebCadOrderImportAsyncFactory {
|
||||
|
||||
private String tempFilePath;
|
||||
|
||||
// cad图纸路径
|
||||
private String cadViewPath;
|
||||
// cad图纸文件id
|
||||
private Long cadViewFileId;
|
||||
|
||||
public WebCadOrderImportAsyncFactory(Long organId,
|
||||
OrderMapper orderMapper,
|
||||
SnowFlakeGenerator snowFlakeGenerator,
|
||||
OrderBodyMapper orderBodyMapper,
|
||||
PlateMapper plateMapper,
|
||||
OrderGroupMapper orderGroupMapper,
|
||||
SnowflakeIdWorker3rd idWorker,
|
||||
OrderImportTaskMapper orderImportTaskMapper,
|
||||
OrderInputProcessor orderInputProcessor,
|
||||
@@ -220,13 +220,13 @@ public class WebCadOrderImportAsyncFactory {
|
||||
SystemConfigApi systemConfigApi,
|
||||
String operatorName,
|
||||
int cadImportPlateNumThreshold,
|
||||
JdbcTemplate jdbcTemplate) {
|
||||
JdbcTemplate jdbcTemplate,
|
||||
FileApi fileApi) {
|
||||
this.organId = organId;
|
||||
this.orderMapper = orderMapper;
|
||||
this.snowFlakeGenerator = snowFlakeGenerator;
|
||||
this.orderBodyMapper = orderBodyMapper;
|
||||
this.plateMapper = plateMapper;
|
||||
this.orderGroupMapper = orderGroupMapper;
|
||||
this.idWorker = idWorker;
|
||||
this.orderImportTaskMapper = orderImportTaskMapper;
|
||||
this.orderInputProcessor = orderInputProcessor;
|
||||
@@ -240,6 +240,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
sealEdgeConfigList = new ArrayList<>();
|
||||
this.cadImportPlateNumThreshold = cadImportPlateNumThreshold;
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
this.fileApi = fileApi;
|
||||
}
|
||||
|
||||
public void analyzeTempData(Long taskId, String webcadJsonCachePath) throws FileNotFoundException {
|
||||
@@ -254,6 +255,9 @@ public class WebCadOrderImportAsyncFactory {
|
||||
|
||||
performPostProcessing(taskId);
|
||||
} catch (Exception e) {
|
||||
// 删除cad图纸数据
|
||||
removeCadFileWhenException(cadViewFileId);
|
||||
|
||||
handleProcessingException(e);
|
||||
throw e;
|
||||
} finally {
|
||||
@@ -272,9 +276,6 @@ public class WebCadOrderImportAsyncFactory {
|
||||
analyzeOrder(reader.readString());
|
||||
log.debug("====================【cad拆单解析生产单结束】====================");
|
||||
break;
|
||||
case "cadViewPath":
|
||||
cadViewPath = reader.readString();
|
||||
break;
|
||||
case "Materials":
|
||||
log.debug("====================【cad拆单解析板材开始】====================");
|
||||
analyzeMaterials(reader);
|
||||
@@ -296,6 +297,9 @@ public class WebCadOrderImportAsyncFactory {
|
||||
case "Parts":
|
||||
processParts(reader);
|
||||
break;
|
||||
case "CadViewFileId":
|
||||
cadViewFileId = reader.readLong();
|
||||
break;
|
||||
default:
|
||||
// 跳过未知字段
|
||||
reader.readObject();
|
||||
@@ -434,7 +438,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
.eq("deleted", false));
|
||||
if (CollUtil.isNotEmpty(orderPlateSumResult)) {
|
||||
Map<String, Object> resultMap = orderPlateSumResult.get(0);
|
||||
if(ObjectUtil.isNotNull(resultMap)) {
|
||||
if (ObjectUtil.isNotNull(resultMap)) {
|
||||
currentPlateArea = (BigDecimal) resultMap.get("area");
|
||||
}
|
||||
}
|
||||
@@ -623,7 +627,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
reader.startObject();
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
|
||||
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
@@ -646,7 +650,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
if (existRoomId != null) {
|
||||
return existRoomId;
|
||||
}
|
||||
|
||||
|
||||
Long roomId = queryExistingRoomId(roomName);
|
||||
if (roomId == null) {
|
||||
roomId = (Long) snowFlakeGenerator.nextId(null);
|
||||
@@ -660,15 +664,15 @@ public class WebCadOrderImportAsyncFactory {
|
||||
*/
|
||||
private Long queryExistingRoomId(String roomName) {
|
||||
List<Long> existRoomIds = orderBodyMapper.selectList(new LambdaQueryWrapper<OrderBodyDO>()
|
||||
.select(OrderBodyDO::getRoomId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getDeleted, false)
|
||||
.eq(OrderBodyDO::getRoomName, roomName))
|
||||
.select(OrderBodyDO::getRoomId)
|
||||
.eq(OrderBodyDO::getOrderId, orderId)
|
||||
.eq(OrderBodyDO::getOrganId, organId)
|
||||
.eq(OrderBodyDO::getDeleted, false)
|
||||
.eq(OrderBodyDO::getRoomName, roomName))
|
||||
.stream()
|
||||
.map(OrderBodyDO::getRoomId)
|
||||
.toList();
|
||||
|
||||
|
||||
return CollUtil.isNotEmpty(existRoomIds) ? existRoomIds.get(0) : null;
|
||||
}
|
||||
|
||||
@@ -1390,11 +1394,10 @@ public class WebCadOrderImportAsyncFactory {
|
||||
// 配置不为空时,生成自定义板编号
|
||||
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
||||
customPlateNoGenerateService.generateCustomPlateNo(orderId, plateDO, plateNoGenerateConfigVO, isFirstPlate);
|
||||
} else {
|
||||
// 配置为空的时候,使用cad的板编号
|
||||
if (ObjectUtil.isNotNull(cadCustBlockNo)) {
|
||||
plateDO.setCustomPlateNo(String.valueOf(cadCustBlockNo));
|
||||
}
|
||||
}
|
||||
// cad的板编号
|
||||
if (ObjectUtil.isNotNull(cadCustBlockNo)) {
|
||||
plateDO.setCadPlateNo(String.valueOf(cadCustBlockNo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1419,7 +1422,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
reader.startObject();
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
|
||||
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
@@ -1849,7 +1852,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
private void orderPlateBatchInsertWithinThreshold(List<PlateDO> list, boolean isLast) {
|
||||
// 达到批量的阈值就做一次插入
|
||||
if (CollUtil.isNotEmpty(list) && (list.size() >= BATCH_THRESHOLD_NUMBER || isLast)) {
|
||||
String sql = "INSERT INTO order_plate (id,organ_id,order_id,name,plate_no,type,goods_id,width,height,thickness,split_width,split_height,split_thickness,seal_left,seal_right,seal_up,seal_down,area,texture,hole_face,hole_arrange,unregular_point_count,front_hole_count,back_hole_count,side_hole_count,front_model_count,back_model_count,is_door,open_door_type,offset_x,offset_y,is_arc_across,module_type_id,is_special_shaped,is_sculpt,is_side_sculpt,is_2v,is_side_2v,is_row_hole,is_optimized,is_cutted,filter_type,remark,is_cancel,deleted,custom_plate_no,create_time,update_time,creator,updater, cad_view_id, cad_data) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
String sql = "INSERT INTO order_plate (id,organ_id,order_id,name,plate_no,type,goods_id,width,height,thickness,split_width,split_height,split_thickness,seal_left,seal_right,seal_up,seal_down,area,texture,hole_face,hole_arrange,unregular_point_count,front_hole_count,back_hole_count,side_hole_count,front_model_count,back_model_count,is_door,open_door_type,offset_x,offset_y,is_arc_across,module_type_id,is_special_shaped,is_sculpt,is_side_sculpt,is_2v,is_side_2v,is_row_hole,is_optimized,is_cutted,filter_type,remark,is_cancel,deleted,custom_plate_no,create_time,update_time,creator,updater, cad_view_id, cad_data, cad_plate_no) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||
@@ -1922,8 +1925,8 @@ public class WebCadOrderImportAsyncFactory {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearPlate(){
|
||||
plateDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
private void clearPlate() {
|
||||
plateDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
}
|
||||
|
||||
private void orderItemBatchInsertWithinThreshold(List<OrderItemDO> list, boolean isLast) {
|
||||
@@ -1966,8 +1969,8 @@ public class WebCadOrderImportAsyncFactory {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearItem(){
|
||||
orderItemDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
private void clearItem() {
|
||||
orderItemDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
}
|
||||
|
||||
private void orderPartBatchInsertWithinThreshold(List<OrderPartsDO> list, boolean isLast) {
|
||||
@@ -2021,8 +2024,8 @@ public class WebCadOrderImportAsyncFactory {
|
||||
}
|
||||
}
|
||||
|
||||
private void clearPart(){
|
||||
orderPartsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
private void clearPart() {
|
||||
orderPartsDOS = ListUtils.newArrayListWithExpectedSize(BATCH_THRESHOLD_NUMBER);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2215,7 +2218,6 @@ public class WebCadOrderImportAsyncFactory {
|
||||
.eq(OrderDO::getVersion, version)
|
||||
.set(OrderDO::getPlateNum, currentPlateNum)
|
||||
.set(OrderDO::getArea, currentPlateArea)
|
||||
.set(OrderDO::getCadViewPath, cadViewPath)
|
||||
.set(OrderDO::getVersion, version + 1));
|
||||
if (updated == 0) {
|
||||
throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR, orderId);
|
||||
@@ -2255,4 +2257,19 @@ public class WebCadOrderImportAsyncFactory {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除cad图纸文件数据
|
||||
*
|
||||
* @param cadViewFileId
|
||||
*/
|
||||
private void removeCadFileWhenException(Long cadViewFileId) {
|
||||
try {
|
||||
if (ObjectUtil.isNotNull(cadViewFileId)) {
|
||||
fileApi.deleteFileById(cadViewFileId);
|
||||
}
|
||||
} catch (IORuntimeException e) {
|
||||
log.error("删除cad图纸数据文件失败: {}", cadViewFileId, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
-10
@@ -189,6 +189,9 @@ public class WebCadOrderImportFactory {
|
||||
// 板件数量是否已达到阈值
|
||||
private boolean plateNumReachThreshold = false;
|
||||
|
||||
// cad图纸文件id
|
||||
private Long cadViewFileId;
|
||||
|
||||
public WebCadOrderImportFactory(Long organId,
|
||||
OrderDO orderDO,
|
||||
SnowFlakeGenerator snowFlakeGenerator,
|
||||
@@ -258,7 +261,9 @@ public class WebCadOrderImportFactory {
|
||||
|
||||
orderItemBatchInsertWithinThreshold(orderItemDOS, true);
|
||||
log.debug("====================【cad拆单全局保存开始】====================");
|
||||
|
||||
// 保存数据柜体、加工组
|
||||
cadViewFileId = webCadDataReqVO.getCadViewFileId();
|
||||
saveData();
|
||||
log.debug("====================【cad拆单全局保存结束】====================");
|
||||
|
||||
@@ -266,7 +271,7 @@ public class WebCadOrderImportFactory {
|
||||
insertOrUpdatePlateNumGoods();
|
||||
|
||||
// 更新生产单板件数量
|
||||
updateOrderPlateNum(webCadDataReqVO.getCadViewPath());
|
||||
updateOrderPlateNum();
|
||||
|
||||
// 所有自定义板编号生成完成后更新配置到生产单
|
||||
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
|
||||
@@ -1158,11 +1163,10 @@ public class WebCadOrderImportFactory {
|
||||
// 配置不为空时,生成自定义板编号
|
||||
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
||||
customPlateNoGenerateService.generateCustomPlateNo(orderId, plateDO, plateNoGenerateConfigVO, isFirstPlate);
|
||||
} else {
|
||||
// 配置为空的时候,使用cad的板编号
|
||||
if (ObjectUtil.isNotNull(cadCustBlockNo)) {
|
||||
plateDO.setCustomPlateNo(String.valueOf(cadCustBlockNo));
|
||||
}
|
||||
}
|
||||
// cad的板编号
|
||||
if (ObjectUtil.isNotNull(cadCustBlockNo)) {
|
||||
plateDO.setCadPlateNo(String.valueOf(cadCustBlockNo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1700,7 +1704,7 @@ public class WebCadOrderImportFactory {
|
||||
private void orderPlateBatchInsertWithinThreshold(List<PlateDO> list, boolean isLast) {
|
||||
// 达到批量的阈值就做一次插入
|
||||
if (CollUtil.isNotEmpty(list) && (list.size() >= BATCH_THRESHOLD_NUMBER || isLast)) {
|
||||
String sql = "INSERT INTO order_plate (id,organ_id,order_id,name,plate_no,type,goods_id,width,height,thickness,split_width,split_height,split_thickness,seal_left,seal_right,seal_up,seal_down,area,texture,hole_face,hole_arrange,unregular_point_count,front_hole_count,back_hole_count,side_hole_count,front_model_count,back_model_count,is_door,open_door_type,offset_x,offset_y,is_arc_across,module_type_id,is_special_shaped,is_sculpt,is_side_sculpt,is_2v,is_side_2v,is_row_hole,is_optimized,is_cutted,filter_type,remark,is_cancel,deleted,custom_plate_no,create_time,update_time,creator,updater, cad_view_id, cad_data) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
String sql = "INSERT INTO order_plate (id,organ_id,order_id,name,plate_no,type,goods_id,width,height,thickness,split_width,split_height,split_thickness,seal_left,seal_right,seal_up,seal_down,area,texture,hole_face,hole_arrange,unregular_point_count,front_hole_count,back_hole_count,side_hole_count,front_model_count,back_model_count,is_door,open_door_type,offset_x,offset_y,is_arc_across,module_type_id,is_special_shaped,is_sculpt,is_side_sculpt,is_2v,is_side_2v,is_row_hole,is_optimized,is_cutted,filter_type,remark,is_cancel,deleted,custom_plate_no,create_time,update_time,creator,updater, cad_view_id, cad_data, cad_plate_no) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
|
||||
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||
@@ -1757,6 +1761,7 @@ public class WebCadOrderImportFactory {
|
||||
ps.setString(50, item.getUpdater());
|
||||
ps.setInt(51, item.getCadViewId());
|
||||
ps.setString(52, item.getCadData());
|
||||
ps.setString(53, item.getCadPlateNo());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1914,7 +1919,7 @@ public class WebCadOrderImportFactory {
|
||||
*/
|
||||
private void saveBody(List<List<OrderBodyDO>> bodyList) {
|
||||
for (List<OrderBodyDO> bodys : bodyList) {
|
||||
String sql = "INSERT INTO order_body (id, organ_id, order_id, room_id, room_name, name, width, height, depth, multi_num, plate_num, unregular_num, filename, remark, deleted,create_time,update_time,creator,updater) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
String sql = "INSERT INTO order_body (id, organ_id, order_id, room_id, room_name, name, width, height, depth, multi_num, plate_num, unregular_num, filename, remark, deleted,create_time,update_time,creator,updater, cad_view_file_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||
@Override
|
||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||
@@ -1938,6 +1943,7 @@ public class WebCadOrderImportFactory {
|
||||
ps.setTimestamp(17, Timestamp.valueOf(orderBodyDO.getUpdateTime()));
|
||||
ps.setString(18, orderBodyDO.getCreator());
|
||||
ps.setString(19, orderBodyDO.getUpdater());
|
||||
ps.setLong(20, cadViewFileId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2016,7 +2022,7 @@ public class WebCadOrderImportFactory {
|
||||
/**
|
||||
* 更新生产单的板件总数
|
||||
*/
|
||||
private void updateOrderPlateNum(String cadViewPath) {
|
||||
private void updateOrderPlateNum() {
|
||||
int version = orderDO.getVersion();
|
||||
Long orderId = orderDO.getId();
|
||||
int updated = orderMapper.update(new LambdaUpdateWrapper<OrderDO>()
|
||||
@@ -2025,7 +2031,6 @@ public class WebCadOrderImportFactory {
|
||||
.eq(OrderDO::getVersion, version)
|
||||
.set(OrderDO::getPlateNum, currentPlateNum)
|
||||
.set(OrderDO::getArea, currentPlateArea)
|
||||
.set(OrderDO::getCadViewPath, cadViewPath)
|
||||
.set(OrderDO::getVersion, version + 1));
|
||||
if (updated == 0) {
|
||||
throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR, orderId);
|
||||
|
||||
Reference in New Issue
Block a user