mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 21:52:07 +08:00
新增cad三维看图能力相关
This commit is contained in:
+15
@@ -50,6 +50,21 @@ public class ServletUtils {
|
|||||||
IoUtil.write(response.getOutputStream(), false, content);
|
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 请求
|
* @param request 请求
|
||||||
* @return ua
|
* @return ua
|
||||||
|
|||||||
+6
@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
|||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@@ -75,6 +76,11 @@ public interface FileApi {
|
|||||||
@Parameter(name = "path", description = "文件地址", example = "url", required = true)
|
@Parameter(name = "path", description = "文件地址", example = "url", required = true)
|
||||||
CommonResult<Boolean> deleteFileByPath(String path);
|
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")
|
@PostMapping(PREFIX + "/create/id")
|
||||||
@Operation(summary = "保存文件,并返回文件id")
|
@Operation(summary = "保存文件,并返回文件id")
|
||||||
CommonResult<Long> createFileAndReturnId(@Valid @RequestBody FileCreateReqDTO createReqDTO);
|
CommonResult<Long> createFileAndReturnId(@Valid @RequestBody FileCreateReqDTO createReqDTO);
|
||||||
|
|||||||
+6
@@ -28,6 +28,12 @@ public class FileApiImpl implements FileApi {
|
|||||||
return success(fileService.deleteFileByPath(path));
|
return success(fileService.deleteFileByPath(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult<Boolean> deleteFileById(Long id) {
|
||||||
|
fileService.deleteFile(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResult<Long> createFileAndReturnId(FileCreateReqDTO createReqDTO) {
|
public CommonResult<Long> createFileAndReturnId(FileCreateReqDTO createReqDTO) {
|
||||||
return success(fileService.createFileDO(createReqDTO.getName(), createReqDTO.getPath(),
|
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())));
|
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")
|
@DeleteMapping("/delete")
|
||||||
@Operation(summary = "删除文件")
|
@Operation(summary = "删除文件")
|
||||||
@Parameter(name = "id", description = "编号", required = true)
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
@@ -101,6 +109,22 @@ public class FileController {
|
|||||||
ServletUtils.writeAttachment(response, String.valueOf(id), content);
|
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")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "获得文件分页")
|
@Operation(summary = "获得文件分页")
|
||||||
@PreAuthorize("@ss.hasPermission('infra:file:query')")
|
@PreAuthorize("@ss.hasPermission('infra:file:query')")
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ public interface FileService {
|
|||||||
*
|
*
|
||||||
* @param id 编号
|
* @param id 编号
|
||||||
*/
|
*/
|
||||||
void deleteFile(Long id) throws Exception;
|
void deleteFile(Long id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得文件内容
|
* 获得文件内容
|
||||||
|
|||||||
+5
-1
@@ -105,14 +105,18 @@ public class FileServiceImpl implements FileService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteFile(Long id) throws Exception {
|
public void deleteFile(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
FileDO file = validateFileExists(id);
|
FileDO file = validateFileExists(id);
|
||||||
|
|
||||||
// 从文件存储器中删除
|
// 从文件存储器中删除
|
||||||
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
||||||
Assert.notNull(client, CLIENT_ERR_NOTIFICATION, file.getConfigId());
|
Assert.notNull(client, CLIENT_ERR_NOTIFICATION, file.getConfigId());
|
||||||
|
try {
|
||||||
client.delete(file.getPath());
|
client.delete(file.getPath());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ServiceException(FILE_REMOVE_FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
// 删除记录
|
// 删除记录
|
||||||
fileMapper.deleteById(id);
|
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 LocalDateTime createTime;
|
||||||
|
|
||||||
private Boolean deleted;
|
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;
|
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 io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.*;
|
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.common.util.object.BeanUtils;
|
||||||
import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
||||||
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
|
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.plan.vo.PlateResList;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||||
@@ -138,5 +139,16 @@ public class PlateController {
|
|||||||
return success(plateService.createNewPlate(reqVO));
|
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 Double plannedPlateArea;
|
||||||
|
|
||||||
private int version;
|
private int version;
|
||||||
|
|
||||||
/**
|
|
||||||
* cad图纸路径
|
|
||||||
*/
|
|
||||||
private String cadViewPath;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -1,6 +1,5 @@
|
|||||||
package com.cf.imes.module.executor.dal.dataobject.orderBody;
|
package com.cf.imes.module.executor.dal.dataobject.orderBody;
|
||||||
|
|
||||||
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||||
@@ -82,4 +81,9 @@ public class OrderBodyDO extends BaseDO {
|
|||||||
* 是否删除
|
* 是否删除
|
||||||
*/
|
*/
|
||||||
private Boolean deleted;
|
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图纸数据
|
* cad图纸数据
|
||||||
*/
|
*/
|
||||||
private String cadData;
|
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.order.vo.order.OrderPlatesDetailRespVO;
|
||||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
|
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.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 com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
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);
|
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.framework.common.pojo.PageResult;
|
||||||
import com.cf.imes.module.executor.controller.admin.goods.vo.GoodsSaveReqVO;
|
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.plan.vo.PlateResList;
|
||||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||||
@@ -94,4 +95,19 @@ public interface PlateService {
|
|||||||
|
|
||||||
List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO);
|
List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取柜体板件视图分页列表
|
||||||
|
*
|
||||||
|
* @param orderBodyPageRespVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PageResult<OrderBodyViewPlatePageRespVO> getBodyViewPlatesPage(OrderBodyViewPlatePageReqVO orderBodyPageRespVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据板件id获取柜体下的所有板件cad视图所需信息
|
||||||
|
*
|
||||||
|
* @param plateId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderBodyViewPlatePageRespVO> getBodyViewPlatesCadInfo(Long plateId);
|
||||||
}
|
}
|
||||||
+52
-11
@@ -1,5 +1,6 @@
|
|||||||
package com.cf.imes.module.executor.service.plate;
|
package com.cf.imes.module.executor.service.plate;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
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.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import com.cf.imes.framework.common.enums.*;
|
import com.cf.imes.framework.common.enums.*;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
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.pojo.PageResult;
|
||||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
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.MPJLambdaWrapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
|
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.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.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.OrderGoodsResp;
|
||||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
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.goods.GoodsDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
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.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.orderItem.OrderItemDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;
|
||||||
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
|
||||||
@@ -301,8 +305,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO) {
|
public PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO) {
|
||||||
return plateMapper.selectPage(pageReqVO);
|
return plateMapper.selectPage(pageReqVO);
|
||||||
@@ -317,8 +319,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO pageReqVO) {
|
public PageResult<PlateResList> getOrderPlatePage(NoPlanPlatePageReqVO pageReqVO) {
|
||||||
|
|
||||||
@@ -514,7 +514,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO) {
|
public List<InsertPlateRespVO> createNewPlate(List<OptimizationSavePlateReqVO> reqVO) {
|
||||||
@@ -724,7 +723,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static List<OrderBodyNumVO> mergeOrderBody(List<OrderBodyNumVO> dataList) {
|
public static List<OrderBodyNumVO> mergeOrderBody(List<OrderBodyNumVO> dataList) {
|
||||||
if (dataList == null || dataList.isEmpty()) {
|
if (dataList == null || dataList.isEmpty()) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
@@ -744,10 +742,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
|
private List<OrderModelDO> buildRespByPlateIds(Collection<Long> plateIds, String index) {
|
||||||
|
|
||||||
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
|
List<FieldValue> fieldValues = plateIds.stream().map(FieldValue::of).toList();
|
||||||
@@ -776,7 +770,6 @@ public class PlateServiceImpl implements PlateService {
|
|||||||
QueryWrapperX<OrderDO> queryWrapperX) {
|
QueryWrapperX<OrderDO> queryWrapperX) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
if (Boolean.TRUE.equals(pageReqVO.getIsMixed())) {
|
||||||
throw new ServiceException(PLAN_IS_MIXED_ERROR);
|
throw new ServiceException(PLAN_IS_MIXED_ERROR);
|
||||||
}
|
}
|
||||||
@@ -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
|
and plate_id !=0
|
||||||
|
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
+3
-2
@@ -18,6 +18,9 @@ public class WebCadDataReqVO {
|
|||||||
@JsonProperty(value = "OrderNo")
|
@JsonProperty(value = "OrderNo")
|
||||||
private String orderNo;
|
private String orderNo;
|
||||||
|
|
||||||
|
@JsonProperty(value = "CadViewFileId")
|
||||||
|
private Long cadViewFileId;
|
||||||
|
|
||||||
@JsonProperty(value = "Materials")
|
@JsonProperty(value = "Materials")
|
||||||
private List<WebCadDataMaterialReqVO> Materials;
|
private List<WebCadDataMaterialReqVO> Materials;
|
||||||
|
|
||||||
@@ -33,6 +36,4 @@ public class WebCadDataReqVO {
|
|||||||
|
|
||||||
@JsonProperty(value = "Blocks")
|
@JsonProperty(value = "Blocks")
|
||||||
private List<WebCadDataDoubleRoomTreeReqVO> blocks;
|
private List<WebCadDataDoubleRoomTreeReqVO> blocks;
|
||||||
|
|
||||||
private String cadViewPath;
|
|
||||||
}
|
}
|
||||||
|
|||||||
-5
@@ -157,9 +157,4 @@ public class OrderDO extends BaseDO {
|
|||||||
* 版本号:乐观锁用
|
* 版本号:乐观锁用
|
||||||
*/
|
*/
|
||||||
private int version;
|
private int version;
|
||||||
|
|
||||||
/**
|
|
||||||
* cad图纸路径
|
|
||||||
*/
|
|
||||||
private String cadViewPath;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -301,4 +301,9 @@ public class PlateDO extends BaseDO {
|
|||||||
* cad图纸数据
|
* cad图纸数据
|
||||||
*/
|
*/
|
||||||
private String cadData;
|
private String cadData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cad自定义板编号
|
||||||
|
*/
|
||||||
|
private String cadPlateNo;
|
||||||
}
|
}
|
||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package com.cf.imes.module.plan.framework.rpc.config;
|
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.customplateno.CustomPlateNoSeqApi;
|
||||||
import com.cf.imes.module.system.api.dict.DictDataApi;
|
import com.cf.imes.module.system.api.dict.DictDataApi;
|
||||||
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
|
import com.cf.imes.module.system.api.systemconfig.SystemConfigApi;
|
||||||
@@ -11,6 +12,6 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
* @author there
|
* @author there
|
||||||
*/
|
*/
|
||||||
@Configuration(proxyBeanMethods = false)
|
@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 {
|
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.OrderImportTaskStatusEnum;
|
||||||
import com.cf.imes.module.executor.enums.OrderImportTypeEnum;
|
import com.cf.imes.module.executor.enums.OrderImportTypeEnum;
|
||||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
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.controller.admin.orderimport.webcad.vo.WebCadDataReqVO;
|
||||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
||||||
@@ -118,6 +119,9 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
|||||||
@Resource
|
@Resource
|
||||||
private RabbitTemplate rabbitTemplate;
|
private RabbitTemplate rabbitTemplate;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FileApi fileApi;
|
||||||
|
|
||||||
private static final String REDIS_UNIQUEKEY = "webcad";
|
private static final String REDIS_UNIQUEKEY = "webcad";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@@ -134,6 +138,8 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
|||||||
Long taskId = null;
|
Long taskId = null;
|
||||||
OrderDO orderDO = null;
|
OrderDO orderDO = null;
|
||||||
JsonFactory factory = new JsonFactory();
|
JsonFactory factory = new JsonFactory();
|
||||||
|
|
||||||
|
Long cadViewFileId = null;
|
||||||
try (GZIPInputStream gzipInputStream = new GZIPInputStream(file.getInputStream());
|
try (GZIPInputStream gzipInputStream = new GZIPInputStream(file.getInputStream());
|
||||||
JsonParser parser = factory.createParser(gzipInputStream)) {
|
JsonParser parser = factory.createParser(gzipInputStream)) {
|
||||||
factory.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
|
factory.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
|
||||||
@@ -165,6 +171,9 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
|||||||
WebCadDataReqVO webCadDataReqVO = mapper.readValue(parser, WebCadDataReqVO.class);
|
WebCadDataReqVO webCadDataReqVO = mapper.readValue(parser, WebCadDataReqVO.class);
|
||||||
WebCadOrderImportFactory webCadOrderImportFactory = new WebCadOrderImportFactory(organId, orderDO, snowFlakeGenerator, orderMapper, orderBodyMapper, plateMapper,
|
WebCadOrderImportFactory webCadOrderImportFactory = new WebCadOrderImportFactory(organId, orderDO, snowFlakeGenerator, orderMapper, orderBodyMapper, plateMapper,
|
||||||
idWorker, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, webCadImportProperties.getCadImportPlateNumThreshold(), jdbcTemplate);
|
idWorker, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, webCadImportProperties.getCadImportPlateNumThreshold(), jdbcTemplate);
|
||||||
|
|
||||||
|
// cad图纸文件id
|
||||||
|
cadViewFileId = webCadDataReqVO.getCadViewFileId();
|
||||||
webCadOrderImportFactory.analyzeTempData(webCadDataReqVO);
|
webCadOrderImportFactory.analyzeTempData(webCadDataReqVO);
|
||||||
} else {
|
} else {
|
||||||
sync = false;
|
sync = false;
|
||||||
@@ -190,11 +199,15 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (ServiceException se) {
|
} catch (ServiceException se) {
|
||||||
|
// 删除cad图纸数据
|
||||||
|
removeCadFileWhenException(cadViewFileId);
|
||||||
// 移除临时文件
|
// 移除临时文件
|
||||||
removeCacheFileWhenException(sync, taskId);
|
removeCacheFileWhenException(sync, taskId);
|
||||||
|
|
||||||
throw se;
|
throw se;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
// 删除cad图纸数据
|
||||||
|
removeCadFileWhenException(cadViewFileId);
|
||||||
// 移除临时文件
|
// 移除临时文件
|
||||||
removeCacheFileWhenException(sync, taskId);
|
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.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||||
import com.cf.imes.framework.common.exception.ServiceException;
|
import com.cf.imes.framework.common.exception.ServiceException;
|
||||||
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
|
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.mybatis.core.generator.SnowFlakeGenerator;
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||||
import com.cf.imes.framework.redis.config.ChenfengCacheProperties;
|
import com.cf.imes.framework.redis.config.ChenfengCacheProperties;
|
||||||
import com.cf.imes.framework.redis.constants.RedisKeyConstants;
|
import com.cf.imes.framework.redis.constants.RedisKeyConstants;
|
||||||
import com.cf.imes.framework.redis.util.RedisLockUtil;
|
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.dataobject.orderImport.OrderImportTaskDO;
|
||||||
import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper;
|
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.order.OrderMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.orderBody.OrderBodyMapper;
|
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.orderImport.OrderImportTaskMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
||||||
@@ -65,9 +64,6 @@ public class WebCadOrderImportConsumer {
|
|||||||
@Resource
|
@Resource
|
||||||
private PlateMapper plateMapper;
|
private PlateMapper plateMapper;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private OrderGroupMapper orderGroupMapper;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SnowflakeIdWorker3rd idWorker;
|
private SnowflakeIdWorker3rd idWorker;
|
||||||
|
|
||||||
@@ -107,6 +103,9 @@ public class WebCadOrderImportConsumer {
|
|||||||
@Resource
|
@Resource
|
||||||
private ChenfengCacheProperties chenfengCacheProperties;
|
private ChenfengCacheProperties chenfengCacheProperties;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FileApi fileApi;
|
||||||
|
|
||||||
@RabbitListener(queues = "#{@orderImportWebCadQueueName}")
|
@RabbitListener(queues = "#{@orderImportWebCadQueueName}")
|
||||||
@DS("imes_prod")
|
@DS("imes_prod")
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -150,8 +149,9 @@ public class WebCadOrderImportConsumer {
|
|||||||
|
|
||||||
log.info("====================【webcad异步拆单处理临时数据开始】====================");
|
log.info("====================【webcad异步拆单处理临时数据开始】====================");
|
||||||
WebCadOrderImportAsyncFactory webCadOrderImportAsyncFactory =
|
WebCadOrderImportAsyncFactory webCadOrderImportAsyncFactory =
|
||||||
new WebCadOrderImportAsyncFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, orderGroupMapper, idWorker,
|
new WebCadOrderImportAsyncFactory(organId, orderMapper, snowFlakeGenerator, orderBodyMapper, plateMapper, idWorker,
|
||||||
orderImportTaskMapper, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, orderImportTaskDO.getCreator(), cadImportPlateNumThreshold, jdbcTemplate);
|
orderImportTaskMapper, orderInputProcessor, goodsMapper, rawGoodsMapper, customPlateNoGenerateService, systemConfigApi, orderImportTaskDO.getCreator(),
|
||||||
|
cadImportPlateNumThreshold, jdbcTemplate, fileApi);
|
||||||
webCadOrderImportAsyncFactory.analyzeTempData(taskId, webCadImportProperties.getTempFilePath());
|
webCadOrderImportAsyncFactory.analyzeTempData(taskId, webCadImportProperties.getTempFilePath());
|
||||||
log.info("====================【webcad异步拆单处理临时数据结束】====================");
|
log.info("====================【webcad异步拆单处理临时数据结束】====================");
|
||||||
|
|
||||||
|
|||||||
+34
-17
@@ -1,6 +1,7 @@
|
|||||||
package com.cf.imes.module.plan.service.orderImport.factory;
|
package com.cf.imes.module.plan.service.orderImport.factory;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.io.IORuntimeException;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
import cn.hutool.core.util.BooleanUtil;
|
import cn.hutool.core.util.BooleanUtil;
|
||||||
import cn.hutool.core.util.NumberUtil;
|
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.OrderImportStatusEnum;
|
||||||
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
||||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
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.WebCadDataBlockRemarkVO;
|
||||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataBlockReqVO;
|
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataBlockReqVO;
|
||||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataDoubleRoomTreeReqVO;
|
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.goods.GoodsMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.order.OrderMapper;
|
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.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.orderImport.OrderImportTaskMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
import com.cf.imes.module.plan.dal.mysql.plate.PlateMapper;
|
||||||
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
import com.cf.imes.module.plan.dal.mysql.rawgoods.RawGoodsMapper;
|
||||||
@@ -113,8 +114,6 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
|
|
||||||
private PlateMapper plateMapper;
|
private PlateMapper plateMapper;
|
||||||
|
|
||||||
private OrderGroupMapper orderGroupMapper;
|
|
||||||
|
|
||||||
private SnowflakeIdWorker3rd idWorker;
|
private SnowflakeIdWorker3rd idWorker;
|
||||||
|
|
||||||
private OrderImportTaskMapper orderImportTaskMapper;
|
private OrderImportTaskMapper orderImportTaskMapper;
|
||||||
@@ -131,6 +130,8 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
|
|
||||||
private JdbcTemplate jdbcTemplate;
|
private JdbcTemplate jdbcTemplate;
|
||||||
|
|
||||||
|
private FileApi fileApi;
|
||||||
|
|
||||||
private Long organId;
|
private Long organId;
|
||||||
|
|
||||||
// 批次id
|
// 批次id
|
||||||
@@ -202,15 +203,14 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
|
|
||||||
private String tempFilePath;
|
private String tempFilePath;
|
||||||
|
|
||||||
// cad图纸路径
|
// cad图纸文件id
|
||||||
private String cadViewPath;
|
private Long cadViewFileId;
|
||||||
|
|
||||||
public WebCadOrderImportAsyncFactory(Long organId,
|
public WebCadOrderImportAsyncFactory(Long organId,
|
||||||
OrderMapper orderMapper,
|
OrderMapper orderMapper,
|
||||||
SnowFlakeGenerator snowFlakeGenerator,
|
SnowFlakeGenerator snowFlakeGenerator,
|
||||||
OrderBodyMapper orderBodyMapper,
|
OrderBodyMapper orderBodyMapper,
|
||||||
PlateMapper plateMapper,
|
PlateMapper plateMapper,
|
||||||
OrderGroupMapper orderGroupMapper,
|
|
||||||
SnowflakeIdWorker3rd idWorker,
|
SnowflakeIdWorker3rd idWorker,
|
||||||
OrderImportTaskMapper orderImportTaskMapper,
|
OrderImportTaskMapper orderImportTaskMapper,
|
||||||
OrderInputProcessor orderInputProcessor,
|
OrderInputProcessor orderInputProcessor,
|
||||||
@@ -220,13 +220,13 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
SystemConfigApi systemConfigApi,
|
SystemConfigApi systemConfigApi,
|
||||||
String operatorName,
|
String operatorName,
|
||||||
int cadImportPlateNumThreshold,
|
int cadImportPlateNumThreshold,
|
||||||
JdbcTemplate jdbcTemplate) {
|
JdbcTemplate jdbcTemplate,
|
||||||
|
FileApi fileApi) {
|
||||||
this.organId = organId;
|
this.organId = organId;
|
||||||
this.orderMapper = orderMapper;
|
this.orderMapper = orderMapper;
|
||||||
this.snowFlakeGenerator = snowFlakeGenerator;
|
this.snowFlakeGenerator = snowFlakeGenerator;
|
||||||
this.orderBodyMapper = orderBodyMapper;
|
this.orderBodyMapper = orderBodyMapper;
|
||||||
this.plateMapper = plateMapper;
|
this.plateMapper = plateMapper;
|
||||||
this.orderGroupMapper = orderGroupMapper;
|
|
||||||
this.idWorker = idWorker;
|
this.idWorker = idWorker;
|
||||||
this.orderImportTaskMapper = orderImportTaskMapper;
|
this.orderImportTaskMapper = orderImportTaskMapper;
|
||||||
this.orderInputProcessor = orderInputProcessor;
|
this.orderInputProcessor = orderInputProcessor;
|
||||||
@@ -240,6 +240,7 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
sealEdgeConfigList = new ArrayList<>();
|
sealEdgeConfigList = new ArrayList<>();
|
||||||
this.cadImportPlateNumThreshold = cadImportPlateNumThreshold;
|
this.cadImportPlateNumThreshold = cadImportPlateNumThreshold;
|
||||||
this.jdbcTemplate = jdbcTemplate;
|
this.jdbcTemplate = jdbcTemplate;
|
||||||
|
this.fileApi = fileApi;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void analyzeTempData(Long taskId, String webcadJsonCachePath) throws FileNotFoundException {
|
public void analyzeTempData(Long taskId, String webcadJsonCachePath) throws FileNotFoundException {
|
||||||
@@ -254,6 +255,9 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
|
|
||||||
performPostProcessing(taskId);
|
performPostProcessing(taskId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
// 删除cad图纸数据
|
||||||
|
removeCadFileWhenException(cadViewFileId);
|
||||||
|
|
||||||
handleProcessingException(e);
|
handleProcessingException(e);
|
||||||
throw e;
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
@@ -272,9 +276,6 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
analyzeOrder(reader.readString());
|
analyzeOrder(reader.readString());
|
||||||
log.debug("====================【cad拆单解析生产单结束】====================");
|
log.debug("====================【cad拆单解析生产单结束】====================");
|
||||||
break;
|
break;
|
||||||
case "cadViewPath":
|
|
||||||
cadViewPath = reader.readString();
|
|
||||||
break;
|
|
||||||
case "Materials":
|
case "Materials":
|
||||||
log.debug("====================【cad拆单解析板材开始】====================");
|
log.debug("====================【cad拆单解析板材开始】====================");
|
||||||
analyzeMaterials(reader);
|
analyzeMaterials(reader);
|
||||||
@@ -296,6 +297,9 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
case "Parts":
|
case "Parts":
|
||||||
processParts(reader);
|
processParts(reader);
|
||||||
break;
|
break;
|
||||||
|
case "CadViewFileId":
|
||||||
|
cadViewFileId = reader.readLong();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
// 跳过未知字段
|
// 跳过未知字段
|
||||||
reader.readObject();
|
reader.readObject();
|
||||||
@@ -1390,11 +1394,10 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
// 配置不为空时,生成自定义板编号
|
// 配置不为空时,生成自定义板编号
|
||||||
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
||||||
customPlateNoGenerateService.generateCustomPlateNo(orderId, plateDO, plateNoGenerateConfigVO, isFirstPlate);
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1849,7 +1852,7 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
private void orderPlateBatchInsertWithinThreshold(List<PlateDO> list, boolean isLast) {
|
private void orderPlateBatchInsertWithinThreshold(List<PlateDO> list, boolean isLast) {
|
||||||
// 达到批量的阈值就做一次插入
|
// 达到批量的阈值就做一次插入
|
||||||
if (CollUtil.isNotEmpty(list) && (list.size() >= BATCH_THRESHOLD_NUMBER || 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() {
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||||
@Override
|
@Override
|
||||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||||
@@ -2215,7 +2218,6 @@ public class WebCadOrderImportAsyncFactory {
|
|||||||
.eq(OrderDO::getVersion, version)
|
.eq(OrderDO::getVersion, version)
|
||||||
.set(OrderDO::getPlateNum, currentPlateNum)
|
.set(OrderDO::getPlateNum, currentPlateNum)
|
||||||
.set(OrderDO::getArea, currentPlateArea)
|
.set(OrderDO::getArea, currentPlateArea)
|
||||||
.set(OrderDO::getCadViewPath, cadViewPath)
|
|
||||||
.set(OrderDO::getVersion, version + 1));
|
.set(OrderDO::getVersion, version + 1));
|
||||||
if (updated == 0) {
|
if (updated == 0) {
|
||||||
throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR, orderId);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-9
@@ -189,6 +189,9 @@ public class WebCadOrderImportFactory {
|
|||||||
// 板件数量是否已达到阈值
|
// 板件数量是否已达到阈值
|
||||||
private boolean plateNumReachThreshold = false;
|
private boolean plateNumReachThreshold = false;
|
||||||
|
|
||||||
|
// cad图纸文件id
|
||||||
|
private Long cadViewFileId;
|
||||||
|
|
||||||
public WebCadOrderImportFactory(Long organId,
|
public WebCadOrderImportFactory(Long organId,
|
||||||
OrderDO orderDO,
|
OrderDO orderDO,
|
||||||
SnowFlakeGenerator snowFlakeGenerator,
|
SnowFlakeGenerator snowFlakeGenerator,
|
||||||
@@ -258,7 +261,9 @@ public class WebCadOrderImportFactory {
|
|||||||
|
|
||||||
orderItemBatchInsertWithinThreshold(orderItemDOS, true);
|
orderItemBatchInsertWithinThreshold(orderItemDOS, true);
|
||||||
log.debug("====================【cad拆单全局保存开始】====================");
|
log.debug("====================【cad拆单全局保存开始】====================");
|
||||||
|
|
||||||
// 保存数据柜体、加工组
|
// 保存数据柜体、加工组
|
||||||
|
cadViewFileId = webCadDataReqVO.getCadViewFileId();
|
||||||
saveData();
|
saveData();
|
||||||
log.debug("====================【cad拆单全局保存结束】====================");
|
log.debug("====================【cad拆单全局保存结束】====================");
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ public class WebCadOrderImportFactory {
|
|||||||
insertOrUpdatePlateNumGoods();
|
insertOrUpdatePlateNumGoods();
|
||||||
|
|
||||||
// 更新生产单板件数量
|
// 更新生产单板件数量
|
||||||
updateOrderPlateNum(webCadDataReqVO.getCadViewPath());
|
updateOrderPlateNum();
|
||||||
|
|
||||||
// 所有自定义板编号生成完成后更新配置到生产单
|
// 所有自定义板编号生成完成后更新配置到生产单
|
||||||
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
|
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
|
||||||
@@ -1158,11 +1163,10 @@ public class WebCadOrderImportFactory {
|
|||||||
// 配置不为空时,生成自定义板编号
|
// 配置不为空时,生成自定义板编号
|
||||||
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
if (ObjectUtil.isNotNull(plateNoGenerateConfigVO)) {
|
||||||
customPlateNoGenerateService.generateCustomPlateNo(orderId, plateDO, plateNoGenerateConfigVO, isFirstPlate);
|
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) {
|
private void orderPlateBatchInsertWithinThreshold(List<PlateDO> list, boolean isLast) {
|
||||||
// 达到批量的阈值就做一次插入
|
// 达到批量的阈值就做一次插入
|
||||||
if (CollUtil.isNotEmpty(list) && (list.size() >= BATCH_THRESHOLD_NUMBER || 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() {
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||||
@Override
|
@Override
|
||||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||||
@@ -1757,6 +1761,7 @@ public class WebCadOrderImportFactory {
|
|||||||
ps.setString(50, item.getUpdater());
|
ps.setString(50, item.getUpdater());
|
||||||
ps.setInt(51, item.getCadViewId());
|
ps.setInt(51, item.getCadViewId());
|
||||||
ps.setString(52, item.getCadData());
|
ps.setString(52, item.getCadData());
|
||||||
|
ps.setString(53, item.getCadPlateNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1914,7 +1919,7 @@ public class WebCadOrderImportFactory {
|
|||||||
*/
|
*/
|
||||||
private void saveBody(List<List<OrderBodyDO>> bodyList) {
|
private void saveBody(List<List<OrderBodyDO>> bodyList) {
|
||||||
for (List<OrderBodyDO> bodys : 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() {
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
||||||
@Override
|
@Override
|
||||||
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
public void setValues(PreparedStatement ps, int index) throws SQLException {
|
||||||
@@ -1938,6 +1943,7 @@ public class WebCadOrderImportFactory {
|
|||||||
ps.setTimestamp(17, Timestamp.valueOf(orderBodyDO.getUpdateTime()));
|
ps.setTimestamp(17, Timestamp.valueOf(orderBodyDO.getUpdateTime()));
|
||||||
ps.setString(18, orderBodyDO.getCreator());
|
ps.setString(18, orderBodyDO.getCreator());
|
||||||
ps.setString(19, orderBodyDO.getUpdater());
|
ps.setString(19, orderBodyDO.getUpdater());
|
||||||
|
ps.setLong(20, cadViewFileId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2016,7 +2022,7 @@ public class WebCadOrderImportFactory {
|
|||||||
/**
|
/**
|
||||||
* 更新生产单的板件总数
|
* 更新生产单的板件总数
|
||||||
*/
|
*/
|
||||||
private void updateOrderPlateNum(String cadViewPath) {
|
private void updateOrderPlateNum() {
|
||||||
int version = orderDO.getVersion();
|
int version = orderDO.getVersion();
|
||||||
Long orderId = orderDO.getId();
|
Long orderId = orderDO.getId();
|
||||||
int updated = orderMapper.update(new LambdaUpdateWrapper<OrderDO>()
|
int updated = orderMapper.update(new LambdaUpdateWrapper<OrderDO>()
|
||||||
@@ -2025,7 +2031,6 @@ public class WebCadOrderImportFactory {
|
|||||||
.eq(OrderDO::getVersion, version)
|
.eq(OrderDO::getVersion, version)
|
||||||
.set(OrderDO::getPlateNum, currentPlateNum)
|
.set(OrderDO::getPlateNum, currentPlateNum)
|
||||||
.set(OrderDO::getArea, currentPlateArea)
|
.set(OrderDO::getArea, currentPlateArea)
|
||||||
.set(OrderDO::getCadViewPath, cadViewPath)
|
|
||||||
.set(OrderDO::getVersion, version + 1));
|
.set(OrderDO::getVersion, version + 1));
|
||||||
if (updated == 0) {
|
if (updated == 0) {
|
||||||
throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR, orderId);
|
throw new ServiceException(ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR, orderId);
|
||||||
|
|||||||
Reference in New Issue
Block a user