mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1、webcad异步导入恢复nfs读写方式;2、orderImport路径全小写修正;
This commit is contained in:
+4
-13
@@ -7,7 +7,6 @@ import org.springframework.amqp.core.DirectExchange;
|
||||
import org.springframework.amqp.core.FanoutExchange;
|
||||
import org.springframework.amqp.core.Queue;
|
||||
import org.springframework.amqp.core.QueueBuilder;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -17,7 +16,6 @@ import java.util.Map;
|
||||
import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.ORDER_IMPORT_DEAD_LETTER_EXCHANGE;
|
||||
import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.ORDER_IMPORT_DEAD_LETTER_QUEUE;
|
||||
import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.ORDER_IMPORT_DEAD_LETTER_ROUTING_KEY;
|
||||
import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.ORDER_IMPORT_WEBCAD_QUEUE;
|
||||
|
||||
/**
|
||||
* @author Gqr
|
||||
@@ -25,8 +23,6 @@ import static com.cf.imes.framework.mq.rabbitmq.constant.RabbitMqConstants.ORDER
|
||||
*/
|
||||
@Configuration
|
||||
public class ChenfengRabbitMQPlanConfiguration {
|
||||
@Value("${chenfeng.plan.webcad.import.node:1}")
|
||||
private String instanceId;
|
||||
|
||||
private static final String X_DEAD_LETTER_EXCHANGE_KEY = "x-dead-letter-exchange";
|
||||
private static final String X_DEAD_LETTER_ROUTING_KEY = "x-dead-letter-routing-key";
|
||||
@@ -37,13 +33,8 @@ public class ChenfengRabbitMQPlanConfiguration {
|
||||
* @return
|
||||
*/
|
||||
@Bean
|
||||
public DirectExchange orderImportWebCadFanoutExchange() {
|
||||
return new DirectExchange(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE);
|
||||
}
|
||||
|
||||
@Bean("orderImportWebCadQueueName")
|
||||
public String dynamicOrderImportWebCadQueueName() {
|
||||
return String.format(ORDER_IMPORT_WEBCAD_QUEUE, instanceId);
|
||||
public FanoutExchange orderImportWebCadFanoutExchange() {
|
||||
return new FanoutExchange(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -58,7 +49,7 @@ public class ChenfengRabbitMQPlanConfiguration {
|
||||
args.put(X_DEAD_LETTER_EXCHANGE_KEY, ORDER_IMPORT_DEAD_LETTER_EXCHANGE);
|
||||
// 设置死信路由键
|
||||
args.put(X_DEAD_LETTER_ROUTING_KEY, ORDER_IMPORT_DEAD_LETTER_ROUTING_KEY);
|
||||
return QueueBuilder.durable(dynamicOrderImportWebCadQueueName()).withArguments(args).build();
|
||||
return QueueBuilder.durable(RabbitMqConstants.ORDER_IMPORT_WEBCAD_QUEUE).withArguments(args).build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,7 +59,7 @@ public class ChenfengRabbitMQPlanConfiguration {
|
||||
*/
|
||||
@Bean
|
||||
public Binding orderImportWebCadBinding() {
|
||||
return BindingBuilder.bind(orderImportWebCadQueue()).to(orderImportWebCadFanoutExchange()).with(instanceId);
|
||||
return BindingBuilder.bind(orderImportWebCadQueue()).to(orderImportWebCadFanoutExchange());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+10
-1
@@ -1,7 +1,10 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.module.plan.service.orderImport.WebCadOrderImportService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -14,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.IMPORT;
|
||||
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR;
|
||||
|
||||
/**
|
||||
* @author Gqr
|
||||
@@ -30,6 +34,11 @@ public class OrderImportController {
|
||||
@Operation(summary = "webcad拆单导入生产单")
|
||||
@OperateLog(type = IMPORT)
|
||||
public CommonResult<Boolean> webCadOrderImport(@RequestParam("file") MultipartFile file) {
|
||||
Long organId = OrganContextHolder.getOrganId();
|
||||
|
||||
if (ObjectUtil.isNull(organId)) {
|
||||
throw new ServiceException(WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR);
|
||||
}
|
||||
webCadOrderImportService.webCadOrderImport(file);
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Builder;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -7,7 +7,7 @@ import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.cf.imes.module.plan.controller.admin.orderImport.xml.vo;
|
||||
package com.cf.imes.module.plan.controller.admin.orderimport.xml.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
-5
@@ -70,9 +70,4 @@ public class OrderImportTaskDO extends BaseDO {
|
||||
* 导入文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
private int retryCount;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package com.cf.imes.module.plan.dal.mysql.orderImport;
|
||||
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTempDataDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTempDataGoodsGroupDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTempDataGoodsIdGroupDO;
|
||||
|
||||
+8
@@ -15,4 +15,12 @@ public interface OrderImportTaskService {
|
||||
* @return
|
||||
*/
|
||||
OrderImportTaskDO confirmOrderImport(Long taskId);
|
||||
|
||||
/**
|
||||
* 更新导入任务为失败
|
||||
*
|
||||
* @param orderImportTaskDO
|
||||
* @param ex
|
||||
*/
|
||||
void updateImportTaskFail(OrderImportTaskDO orderImportTaskDO, Exception ex);
|
||||
}
|
||||
|
||||
+29
-1
@@ -2,6 +2,7 @@ package com.cf.imes.module.plan.service.orderImport;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTaskStatusEnum;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
||||
@@ -13,6 +14,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.ORDER_IMPORT_FAIL;
|
||||
|
||||
/**
|
||||
* @author Gqr
|
||||
* @since 2025/5/13 16:41
|
||||
@@ -39,10 +42,35 @@ public class OrderImportTaskServiceImpl implements OrderImportTaskService {
|
||||
.set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CREATE_RECEIVE.getStatus())
|
||||
.set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus())
|
||||
.set(OrderImportTaskDO::getResult, taskNotExistNotify)
|
||||
.set(OrderImportTaskDO::getRetryCount, orderImportTaskDO.getRetryCount() + 1)
|
||||
);
|
||||
log.error(String.format("====================【%s】====================", taskNotExistNotify));
|
||||
}
|
||||
return orderImportTaskDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新导入任务为失败
|
||||
*
|
||||
* @param orderImportTaskDO
|
||||
* @param ex
|
||||
*/
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
|
||||
public void updateImportTaskFail(OrderImportTaskDO orderImportTaskDO, Exception ex) {
|
||||
if (orderImportTaskDO == null) {
|
||||
return;
|
||||
}
|
||||
String msg;
|
||||
if (ex instanceof ServiceException) {
|
||||
msg = ex.getMessage();
|
||||
} else {
|
||||
msg = ORDER_IMPORT_FAIL.getMsg();
|
||||
}
|
||||
orderImportTaskMapper.update(
|
||||
new LambdaUpdateWrapper<OrderImportTaskDO>()
|
||||
.eq(OrderImportTaskDO::getId, orderImportTaskDO.getId())
|
||||
.set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CREATE_RECEIVE.getStatus())
|
||||
.set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus())
|
||||
.set(OrderImportTaskDO::getResult, msg)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+24
-12
@@ -1,6 +1,5 @@
|
||||
package com.cf.imes.module.plan.service.orderImport;
|
||||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.nacos.common.utils.StringUtils;
|
||||
@@ -20,7 +19,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.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.orderImport.OrderImportTaskDO;
|
||||
import com.cf.imes.module.plan.dal.mysql.goods.GoodsMapper;
|
||||
@@ -56,6 +55,10 @@ import jakarta.annotation.Resource;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_IMPORT_ORGAN_LOCK_ERROR;
|
||||
@@ -128,10 +131,6 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
public boolean webCadOrderImport(MultipartFile file) {
|
||||
Long organId = OrganContextHolder.getOrganId();
|
||||
|
||||
if (ObjectUtil.isNull(organId)) {
|
||||
throw new ServiceException(WEBCAD_ORDER_IMPORT_ORGANID_EMPTY_ERROR);
|
||||
}
|
||||
|
||||
// 是否同步处理
|
||||
boolean sync = true;
|
||||
|
||||
@@ -264,11 +263,18 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
.organId(organId)
|
||||
.build();
|
||||
orderImportTaskMapper.insert(orderImportTaskDO);
|
||||
// 缓存请求到本地磁盘
|
||||
// 缓存到nfs目录
|
||||
Path targetFile = Path.of(webCadImportProperties.getTempFilePath(), File.separator + taskId + ".json");
|
||||
Path tmpFile = Path.of(webCadImportProperties.getTempFilePath(), File.separator + taskId + ".json.tmp");
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
File file = new File(webCadImportProperties.getTempFilePath() + File.separator + taskId + ".json");
|
||||
objectMapper.writeValue(file, node);
|
||||
|
||||
// 原子写入:先写临时文件,再 move
|
||||
try (OutputStream out = Files.newOutputStream(tmpFile)) {
|
||||
objectMapper.writeValue(out, node);
|
||||
out.flush();
|
||||
}
|
||||
|
||||
Files.move(tmpFile, targetFile, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
@@ -289,12 +295,12 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
@Override
|
||||
public void afterCommit() {
|
||||
// 数据库操作全部完成发送消息
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE, webCadImportProperties.getNode(), message);
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE, null, message);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 数据库操作全部完成发送消息
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE, webCadImportProperties.getNode(), message);
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_IMPORT_WEBCAD_EXCHANGE, null, message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +334,13 @@ public class WebCadOrderImportServiceImpl implements WebCadOrderImportService {
|
||||
*/
|
||||
private void removeCacheFileWhenException(boolean sync, Long taskId) {
|
||||
if (!sync && ObjectUtil.isNotNull(taskId)) {
|
||||
FileUtil.del(webCadImportProperties.getTempFilePath() + File.separator + taskId + ".json");
|
||||
Path file = Path.of(webCadImportProperties.getTempFilePath(), taskId + ".json");
|
||||
try {
|
||||
Files.deleteIfExists(file); // 文件不存在也不会抛异常
|
||||
} catch (IOException e) {
|
||||
// 可以记录日志
|
||||
log.warn("删除任务缓存文件失败: {}", file, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-29
@@ -22,8 +22,6 @@ import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.framework.redis.constants.RedisKeyConstants;
|
||||
import com.cf.imes.framework.redis.util.RedisLockUtil;
|
||||
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTaskStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderImport.OrderImportTaskDO;
|
||||
@@ -170,7 +168,7 @@ public class DefaultExcelOrderImportConsumer {
|
||||
log.info("====================【生产单默认excel导入处理临时数据结束】====================");
|
||||
} catch (Exception e) {
|
||||
log.error(ORDER_IMPORT_FAIL.getMsg(), e);
|
||||
updateImportTaskFail(orderImportTaskDO, e);
|
||||
orderImportTaskService.updateImportTaskFail(orderImportTaskDO, e);
|
||||
throw e;
|
||||
} finally {
|
||||
if (lockResult) {
|
||||
@@ -180,32 +178,6 @@ public class DefaultExcelOrderImportConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新导入任务为失败
|
||||
*
|
||||
* @param orderImportTaskDO
|
||||
* @param ex
|
||||
*/
|
||||
public void updateImportTaskFail(OrderImportTaskDO orderImportTaskDO, Exception ex) {
|
||||
if (orderImportTaskDO == null) {
|
||||
return;
|
||||
}
|
||||
String msg;
|
||||
if (ex instanceof ServiceException) {
|
||||
msg = ex.getMessage();
|
||||
} else {
|
||||
msg = ORDER_IMPORT_FAIL.getMsg();
|
||||
}
|
||||
orderImportTaskMapper.update(
|
||||
new LambdaUpdateWrapper<OrderImportTaskDO>()
|
||||
.eq(OrderImportTaskDO::getId, orderImportTaskDO.getId())
|
||||
.set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CREATE_RECEIVE.getStatus())
|
||||
.set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus())
|
||||
.set(OrderImportTaskDO::getResult, msg)
|
||||
.set(OrderImportTaskDO::getRetryCount, orderImportTaskDO.getRetryCount() + 1)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建生产单
|
||||
*
|
||||
|
||||
+1
-29
@@ -15,8 +15,6 @@ 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.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTaskStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderStatusEnum;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
@@ -167,7 +165,7 @@ public class DefaultXmlOrderImportConsumer {
|
||||
log.info("====================【生产单默认xml导入处理临时数据结束】====================");
|
||||
} catch (Exception e) {
|
||||
log.error( ORDER_IMPORT_FAIL.getMsg(), e);
|
||||
updateImportTaskFail(orderImportTaskDO, e);
|
||||
orderImportTaskService.updateImportTaskFail(orderImportTaskDO, e);
|
||||
throw e;
|
||||
} finally {
|
||||
if (lockResult) {
|
||||
@@ -177,32 +175,6 @@ public class DefaultXmlOrderImportConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新导入任务为失败
|
||||
*
|
||||
* @param orderImportTaskDO
|
||||
* @param ex
|
||||
*/
|
||||
public void updateImportTaskFail(OrderImportTaskDO orderImportTaskDO, Exception ex) {
|
||||
if (orderImportTaskDO == null) {
|
||||
return;
|
||||
}
|
||||
String msg;
|
||||
if (ex instanceof ServiceException) {
|
||||
msg = ex.getMessage();
|
||||
} else {
|
||||
msg = ORDER_IMPORT_FAIL.getMsg();
|
||||
}
|
||||
orderImportTaskMapper.update(
|
||||
new LambdaUpdateWrapper<OrderImportTaskDO>()
|
||||
.eq(OrderImportTaskDO::getId, orderImportTaskDO.getId())
|
||||
.set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CREATE_RECEIVE.getStatus())
|
||||
.set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus())
|
||||
.set(OrderImportTaskDO::getResult, msg)
|
||||
.set(OrderImportTaskDO::getRetryCount, orderImportTaskDO.getRetryCount() + 1)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建生产单
|
||||
*
|
||||
|
||||
+8
-30
@@ -1,17 +1,16 @@
|
||||
package com.cf.imes.module.plan.service.orderImport.consumer;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
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.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTaskStatusEnum;
|
||||
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;
|
||||
@@ -34,6 +33,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.messaging.handler.annotation.Header;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.thymeleaf.util.StringUtils;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -107,7 +107,9 @@ public class WebCadOrderImportConsumer {
|
||||
@Resource
|
||||
private ChenfengCacheProperties chenfengCacheProperties;
|
||||
|
||||
@RabbitListener(queues = "#{@orderImportWebCadQueueName}")
|
||||
@RabbitListener(queues = RabbitMqConstants.ORDER_IMPORT_WEBCAD_QUEUE)
|
||||
@DS("imes_prod")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void orderImport(String message,
|
||||
Channel channel,
|
||||
@Header(value = "peek", required = false) String peek,
|
||||
@@ -155,7 +157,7 @@ public class WebCadOrderImportConsumer {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(ORDER_IMPORT_FAIL.getMsg(), e);
|
||||
updateImportTaskFail(orderImportTaskDO, e);
|
||||
orderImportTaskService.updateImportTaskFail(orderImportTaskDO, e);
|
||||
throw e;
|
||||
} finally {
|
||||
if (lockResult) {
|
||||
@@ -165,30 +167,6 @@ public class WebCadOrderImportConsumer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新导入任务为失败
|
||||
*
|
||||
* @param orderImportTaskDO
|
||||
* @param ex
|
||||
*/
|
||||
public void updateImportTaskFail(OrderImportTaskDO orderImportTaskDO, Exception ex) {
|
||||
if (orderImportTaskDO == null) {
|
||||
return;
|
||||
}
|
||||
String msg;
|
||||
if (ex instanceof ServiceException) {
|
||||
msg = ex.getMessage();
|
||||
} else {
|
||||
msg = ORDER_IMPORT_FAIL.getMsg();
|
||||
}
|
||||
orderImportTaskMapper.update(
|
||||
new LambdaUpdateWrapper<OrderImportTaskDO>()
|
||||
.eq(OrderImportTaskDO::getId, orderImportTaskDO.getId())
|
||||
.set(OrderImportTaskDO::getStatus, OrderImportTaskStatusEnum.CREATE_RECEIVE.getStatus())
|
||||
.set(OrderImportTaskDO::getImportStatus, OrderImportStatusEnum.IMPORT_FAIL.getStatus())
|
||||
.set(OrderImportTaskDO::getResult, msg)
|
||||
.set(OrderImportTaskDO::getRetryCount, orderImportTaskDO.getRetryCount() + 1)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+2
-3
@@ -24,8 +24,8 @@ import com.cf.imes.module.executor.enums.OrderImportConstants;
|
||||
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.vo.OrderPlateImportExcelVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderPlateImportExcelVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderBody.OrderBodyDO;
|
||||
@@ -64,7 +64,6 @@ import org.apache.ibatis.session.ResultContext;
|
||||
import org.apache.ibatis.session.ResultHandler;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
+26
-26
@@ -22,32 +22,32 @@ import com.cf.imes.module.executor.enums.DictTypeConstants;
|
||||
import com.cf.imes.module.executor.enums.OrderImportStatusEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderImportTmpDataTypeEnum;
|
||||
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.AssemblyXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.BlockXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.CorrelationXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.CorrelationXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.CuttingOutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.EdgingXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.ExtraVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.GrooveXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.GrooveXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.GroupXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.HardwareXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.HoleXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.HoleXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.IsletXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.IsletXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.OffsetLineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.OffsetLineXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.OutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.PlateXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.PointXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.PointXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.RawOutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.RectSealVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.RemarkXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.xml.vo.RoomBoxXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.vo.OrderImportTempDataReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.AssemblyXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.BlockXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.CorrelationXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.CorrelationXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.CuttingOutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.EdgingXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.ExtraVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.GrooveXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.GrooveXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.GroupXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.HardwareXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.HoleXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.HoleXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.IsletXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.IsletXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.OffsetLineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.OffsetLineXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.OutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.PlateXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.PointXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.PointXmlVOS;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.RawOutlineXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.RectSealVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.RemarkXmlVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.xml.vo.RoomBoxXmlVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderBody.OrderBodyDO;
|
||||
|
||||
+213
-160
@@ -1,7 +1,6 @@
|
||||
package com.cf.imes.module.plan.service.orderImport.factory;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
@@ -24,13 +23,13 @@ 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.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;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataGroupInfoReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataMaterialReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataPartsReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataProcessGroupReqVO;
|
||||
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;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataGroupInfoReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataMaterialReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataPartsReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataProcessGroupReqVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderBody.OrderBodyDO;
|
||||
@@ -71,7 +70,10 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
@@ -82,7 +84,6 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_GET_ORG_SEALEDGE_ERROR;
|
||||
import static com.cf.imes.module.plan.enums.ErrorCodeConstants.WEBCAD_ORDER_IMPORT_ORDER_PLATENUM_CHECK_ERROR;
|
||||
@@ -184,6 +185,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
private static final String PART_CATEGORY_ONE = "封边条";
|
||||
private static final String PART_CATEGORY_TWO = "五金";
|
||||
private static final String PART_CATEGORY_THREE = "组件";
|
||||
private static final String CHILDREN_FIELD = "children";
|
||||
private static final String EMPTY_STRING = new String();
|
||||
|
||||
// 当前拆单导入的板件数量(初始包含前n次导入的板件总数)
|
||||
@@ -241,76 +243,14 @@ public class WebCadOrderImportAsyncFactory {
|
||||
try (JSONReader reader = new JSONReader(new FileReader(tempFilePath))) {
|
||||
reader.startObject();
|
||||
while (reader.hasNext()) {
|
||||
|
||||
String name = reader.readString();
|
||||
if ("OrderNo".equals(name)) {
|
||||
log.debug("====================【cad拆单解析生产单开始】====================");
|
||||
analyzeOrder(reader.readString());
|
||||
log.debug("====================【cad拆单解析生产单结束】====================");
|
||||
}
|
||||
if ("Materials".equals(name)) {
|
||||
log.debug("====================【cad拆单解析板材开始】====================");
|
||||
// 解析板材对应
|
||||
analyzeMaterials(reader);
|
||||
log.debug("====================【cad拆单解析板材结束】====================");
|
||||
}
|
||||
if ("ProcessGroup".equals(name)) {
|
||||
log.debug("====================【cad拆单解析加工组开始】====================");
|
||||
// 解析加工组类型
|
||||
analyzeGroups(reader);
|
||||
log.debug("====================【cad拆单解析加工组结束】====================");
|
||||
}
|
||||
if ("douleRoomTree".equals(name)) {
|
||||
log.debug("====================【cad拆单解析成倍柜体开始】====================");
|
||||
// 缓存柜体成倍信息
|
||||
analyzeRoomBody(reader);
|
||||
log.debug("====================【cad拆单解析成倍柜体结束】====================");
|
||||
}
|
||||
if ("Blocks".equals(name)) {
|
||||
// 获取自定义板编号配置
|
||||
plateNoGenerateConfigVO = customPlateNoGenerateService.getPlateNoGenerateConfig(orderId);
|
||||
|
||||
log.debug("====================【cad拆单解析板件开始】====================");
|
||||
analyzeBlockRoomList(reader);
|
||||
log.debug("====================【cad拆单解析板件结束】====================");
|
||||
}
|
||||
if ("Parts".equals(name)) {
|
||||
log.debug("====================【cad拆单获取封边配置开始】====================");
|
||||
// 获取系统配置-封边对应配置
|
||||
getOrgSealEdgeConfig();
|
||||
log.debug("====================【cad拆单获取封边配置结束】====================");
|
||||
|
||||
log.debug("====================【cad拆单解析配件开始】====================");
|
||||
analyzePartsRoomList(reader);
|
||||
log.debug("====================【cad拆单解析配件结束】====================");
|
||||
}
|
||||
String fieldName = reader.readString();
|
||||
processFieldData(fieldName, reader);
|
||||
}
|
||||
reader.endObject();
|
||||
|
||||
orderItemBatchInsertWithinThreshold(orderItemDOS, true);
|
||||
log.debug("====================【cad拆单全局保存开始】====================");
|
||||
// 保存数据柜体、加工组
|
||||
saveData();
|
||||
log.debug("====================【cad拆单全局保存结束】====================");
|
||||
|
||||
// 新增/更新order_goods
|
||||
insertOrUpdatePlateNumGoods();
|
||||
|
||||
// 更新生产单板件数量
|
||||
updateOrderPlateNum();
|
||||
|
||||
// 更新导入任务为成功
|
||||
updateTaskSuccess(taskId);
|
||||
|
||||
// 所有自定义板编号生成完成后更新配置到生产单
|
||||
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
|
||||
performPostProcessing(taskId);
|
||||
} catch (Exception e) {
|
||||
if (esInsert) {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
// 数据库数据回滚,同步删除 ES 里当前批次的数据
|
||||
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
|
||||
});
|
||||
}
|
||||
handleProcessingException(e);
|
||||
throw e;
|
||||
} finally {
|
||||
clearAll();
|
||||
@@ -318,6 +258,93 @@ public class WebCadOrderImportAsyncFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理JSON字段数据
|
||||
*/
|
||||
private void processFieldData(String fieldName, JSONReader reader) {
|
||||
switch (fieldName) {
|
||||
case "OrderNo":
|
||||
log.debug("====================【cad拆单解析生产单开始】====================");
|
||||
analyzeOrder(reader.readString());
|
||||
log.debug("====================【cad拆单解析生产单结束】====================");
|
||||
break;
|
||||
case "Materials":
|
||||
log.debug("====================【cad拆单解析板材开始】====================");
|
||||
analyzeMaterials(reader);
|
||||
log.debug("====================【cad拆单解析板材结束】====================");
|
||||
break;
|
||||
case "ProcessGroup":
|
||||
log.debug("====================【cad拆单解析加工组开始】====================");
|
||||
analyzeGroups(reader);
|
||||
log.debug("====================【cad拆单解析加工组结束】====================");
|
||||
break;
|
||||
case "douleRoomTree":
|
||||
log.debug("====================【cad拆单解析成倍柜体开始】====================");
|
||||
analyzeRoomBody(reader);
|
||||
log.debug("====================【cad拆单解析成倍柜体结束】====================");
|
||||
break;
|
||||
case "Blocks":
|
||||
processBlocks(reader);
|
||||
break;
|
||||
case "Parts":
|
||||
processParts(reader);
|
||||
break;
|
||||
default:
|
||||
// 跳过未知字段
|
||||
reader.readObject();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理板件数据
|
||||
*/
|
||||
private void processBlocks(JSONReader reader) {
|
||||
plateNoGenerateConfigVO = customPlateNoGenerateService.getPlateNoGenerateConfig(orderId);
|
||||
log.debug("====================【cad拆单解析板件开始】====================");
|
||||
analyzeBlockRoomList(reader);
|
||||
log.debug("====================【cad拆单解析板件结束】====================");
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理配件数据
|
||||
*/
|
||||
private void processParts(JSONReader reader) {
|
||||
log.debug("====================【cad拆单获取封边配置开始】====================");
|
||||
getOrgSealEdgeConfig();
|
||||
log.debug("====================【cad拆单获取封边配置结束】====================");
|
||||
|
||||
log.debug("====================【cad拆单解析配件开始】====================");
|
||||
analyzePartsRoomList(reader);
|
||||
log.debug("====================【cad拆单解析配件结束】====================");
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行后处理逻辑
|
||||
*/
|
||||
private void performPostProcessing(Long taskId) {
|
||||
orderItemBatchInsertWithinThreshold(orderItemDOS, true);
|
||||
log.debug("====================【cad拆单全局保存开始】====================");
|
||||
saveData();
|
||||
log.debug("====================【cad拆单全局保存结束】====================");
|
||||
|
||||
insertOrUpdatePlateNumGoods();
|
||||
updateOrderPlateNum();
|
||||
updateTaskSuccess(taskId);
|
||||
customPlateNoGenerateService.updateCustomPlateNoGenerateConfig(plateNoGenerateConfigVO, orderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理异常情况
|
||||
*/
|
||||
private void handleProcessingException(Exception e) {
|
||||
if (esInsert) {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
orderInputProcessor.deleteByOrderIdBatch(orderId, batchId, ORDER_PLATE_MODEL);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取组织封边条对应配置
|
||||
*/
|
||||
@@ -428,8 +455,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
.eq(GoodsDO::getGoodsId, plateGoodsGoodsId)
|
||||
.eq(GoodsDO::getOrderId, orderId)
|
||||
.eq(GoodsDO::getOrganId, organId)
|
||||
.eq(GoodsDO::getDeleted, false)
|
||||
.select(GoodsDO::getId, GoodsDO::getVersion, GoodsDO::getPlateNum, GoodsDO::getPlannedPlateNum));
|
||||
.eq(GoodsDO::getDeleted, false));
|
||||
|
||||
if (CollUtil.isNotEmpty(existOrderGoodIds)) {
|
||||
// 缓存goodCode和orderGoodsId的对应关系
|
||||
@@ -553,7 +579,7 @@ public class WebCadOrderImportAsyncFactory {
|
||||
} else if ("count".equals(key)) {
|
||||
// 无用count
|
||||
reader.readObject();
|
||||
} else if ("children".equals(key)) {
|
||||
} else if (CHILDREN_FIELD.equals(key)) {
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
WebCadDataDoubleRoomTreeReqVO.ChildrenDTO childrenDTO = reader.readObject(WebCadDataDoubleRoomTreeReqVO.ChildrenDTO.class);
|
||||
@@ -574,55 +600,82 @@ public class WebCadOrderImportAsyncFactory {
|
||||
* @param reader
|
||||
*/
|
||||
private void analyzeBlockRoomList(JSONReader reader) {
|
||||
// 开始Blocks
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
reader.startObject();
|
||||
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
roomName = reader.readString();
|
||||
|
||||
// 生产单下已有房间名直接使用roomId
|
||||
Long existRoomId = existRoomIdMap.get(roomName);
|
||||
if (ObjectUtil.isNotNull(existRoomId)) {
|
||||
roomId = existRoomId;
|
||||
} else {
|
||||
// 查询生产单下是否已有同名房间
|
||||
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)).stream().map(OrderBodyDO::getRoomId).toList();
|
||||
if (CollUtil.isNotEmpty(existRoomIds)) {
|
||||
roomId = existRoomIds.get(0);
|
||||
existRoomIdMap.put(roomName, roomId);
|
||||
} else {
|
||||
roomId = (Long) snowFlakeGenerator.nextId(null);
|
||||
existRoomIdMap.put(roomName, roomId);
|
||||
}
|
||||
}
|
||||
} else if ("children".equals(key)) {
|
||||
// 开始Blocks.children
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
analyzeBlockBodyList(reader, roomName, roomId);
|
||||
}
|
||||
reader.endArray();
|
||||
}
|
||||
}
|
||||
reader.endObject();
|
||||
processBlockRoom(reader);
|
||||
}
|
||||
reader.endArray();
|
||||
orderPlateBatchInsertWithinThreshold(plateDOS, true);
|
||||
// 批量插入造型数据
|
||||
orderModelsBatchInsertWithinThreshold(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理单个房间的板件数据
|
||||
*/
|
||||
private void processBlockRoom(JSONReader reader) {
|
||||
reader.startObject();
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
roomName = reader.readString();
|
||||
roomId = getOrCreateRoomId(roomName);
|
||||
} else if (CHILDREN_FIELD.equals(key)) {
|
||||
processBlockChildren(reader, roomName, roomId);
|
||||
} else {
|
||||
reader.readObject();
|
||||
}
|
||||
}
|
||||
reader.endObject();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取或创建房间ID
|
||||
*/
|
||||
private Long getOrCreateRoomId(String roomName) {
|
||||
Long existRoomId = existRoomIdMap.get(roomName);
|
||||
if (existRoomId != null) {
|
||||
return existRoomId;
|
||||
}
|
||||
|
||||
Long roomId = queryExistingRoomId(roomName);
|
||||
if (roomId == null) {
|
||||
roomId = (Long) snowFlakeGenerator.nextId(null);
|
||||
}
|
||||
existRoomIdMap.put(roomName, roomId);
|
||||
return roomId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已存在的房间ID
|
||||
*/
|
||||
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))
|
||||
.stream()
|
||||
.map(OrderBodyDO::getRoomId)
|
||||
.toList();
|
||||
|
||||
return CollUtil.isNotEmpty(existRoomIds) ? existRoomIds.get(0) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理房间下的柜体列表
|
||||
*/
|
||||
private void processBlockChildren(JSONReader reader, String roomName, Long roomId) {
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
analyzeBlockBodyList(reader, roomName, roomId);
|
||||
}
|
||||
reader.endArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析柜体下板件列表
|
||||
*
|
||||
@@ -1341,51 +1394,45 @@ public class WebCadOrderImportAsyncFactory {
|
||||
private void analyzePartsRoomList(JSONReader reader) {
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
reader.startObject();
|
||||
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
roomName = reader.readString();
|
||||
|
||||
// 生产单下已有房间名直接使用roomId
|
||||
Long existRoomId = existRoomIdMap.get(roomName);
|
||||
if (ObjectUtil.isNotNull(existRoomId)) {
|
||||
roomId = existRoomId;
|
||||
} else {
|
||||
// 查询生产单下是否已有同名房间
|
||||
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)).stream().map(OrderBodyDO::getRoomId).toList();
|
||||
if (CollUtil.isNotEmpty(existRoomIds)) {
|
||||
roomId = existRoomIds.get(0);
|
||||
existRoomIdMap.put(roomName, roomId);
|
||||
} else {
|
||||
roomId = (Long) snowFlakeGenerator.nextId(null);
|
||||
existRoomIdMap.put(roomName, roomId);
|
||||
}
|
||||
}
|
||||
} else if ("children".equals(key)) {
|
||||
// 开始Parts.children
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
analyzePartsBodyList(reader, roomName, roomId);
|
||||
}
|
||||
reader.endArray();
|
||||
}
|
||||
}
|
||||
reader.endObject();
|
||||
processPartsRoom(reader);
|
||||
}
|
||||
reader.endArray();
|
||||
|
||||
orderPartBatchInsertWithinThreshold(orderPartsDOS, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理单个房间的配件数据
|
||||
*/
|
||||
private void processPartsRoom(JSONReader reader) {
|
||||
reader.startObject();
|
||||
String roomName = null;
|
||||
Long roomId = null;
|
||||
|
||||
while (reader.hasNext()) {
|
||||
String key = reader.readString();
|
||||
if ("name".equals(key)) {
|
||||
roomName = reader.readString();
|
||||
roomId = getOrCreateRoomId(roomName);
|
||||
} else if (CHILDREN_FIELD.equals(key)) {
|
||||
processPartsChildren(reader, roomName, roomId);
|
||||
} else {
|
||||
reader.readObject();
|
||||
}
|
||||
}
|
||||
reader.endObject();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理房间下的配件列表
|
||||
*/
|
||||
private void processPartsChildren(JSONReader reader, String roomName, Long roomId) {
|
||||
reader.startArray();
|
||||
while (reader.hasNext()) {
|
||||
analyzePartsBodyList(reader, roomName, roomId);
|
||||
}
|
||||
reader.endArray();
|
||||
}
|
||||
|
||||
|
||||
private void analyzePartsBodyList(JSONReader reader, String roomName, Long roomId) {
|
||||
reader.startObject();
|
||||
@@ -2126,7 +2173,13 @@ public class WebCadOrderImportAsyncFactory {
|
||||
* 移除缓存的临时文件
|
||||
*/
|
||||
private void deleteTempFile() {
|
||||
FileUtil.del(tempFilePath);
|
||||
Path file = Path.of(tempFilePath);
|
||||
try {
|
||||
Files.deleteIfExists(file); // 文件不存在也不会抛异常
|
||||
} catch (IOException e) {
|
||||
// 可以记录日志
|
||||
log.warn("删除任务缓存文件失败: {}", file, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+30
-26
@@ -20,14 +20,14 @@ import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.framework.mybatis.core.injector.BaseBatchMapper;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
|
||||
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;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataGroupInfoReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataMaterialReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataPartsReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataProcessGroupReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderImport.webcad.vo.WebCadDataReqVO;
|
||||
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;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataGroupInfoReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataMaterialReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataPartsReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataProcessGroupReqVO;
|
||||
import com.cf.imes.module.plan.controller.admin.orderimport.webcad.vo.WebCadDataReqVO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.goods.GoodsDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.plan.dal.dataobject.orderBody.OrderBodyDO;
|
||||
@@ -171,6 +171,10 @@ public class WebCadOrderImportFactory {
|
||||
private static final String PART_CATEGORY_ONE = "封边条";
|
||||
private static final String PART_CATEGORY_TWO = "五金";
|
||||
private static final String PART_CATEGORY_THREE = "组件";
|
||||
private static final String DELETED_FIELD = "deleted";
|
||||
private static final String ORGAN_ID_FIELD = "organ_id";
|
||||
private static final String ORDER_ID_FIELD = "order_id";
|
||||
private static final String ROOM_NAME_FIELD = "room_name";
|
||||
private static final String EMPTY_STRING = new String();
|
||||
|
||||
// 当前拆单导入的板件数量(初始包含前n次导入的板件总数)
|
||||
@@ -340,9 +344,9 @@ public class WebCadOrderImportFactory {
|
||||
// 统计当前板件总面积
|
||||
List<Map<String, Object>> orderPlateSumResult = plateMapper.selectMaps(new QueryWrapper<PlateDO>()
|
||||
.select("sum(area) as area")
|
||||
.eq("organ_id", organId)
|
||||
.eq("order_id", orderId)
|
||||
.eq("deleted", false));
|
||||
.eq(ORGAN_ID_FIELD, organId)
|
||||
.eq(ORDER_ID_FIELD, orderId)
|
||||
.eq(DELETED_FIELD, false));
|
||||
if (CollUtil.isNotEmpty(orderPlateSumResult)) {
|
||||
Map<String, Object> resultMap = orderPlateSumResult.get(0);
|
||||
if(ObjectUtil.isNotNull(resultMap)) {
|
||||
@@ -366,9 +370,9 @@ public class WebCadOrderImportFactory {
|
||||
materialMap = goodsMapper.selectMaps(
|
||||
new QueryWrapper<GoodsDO>()
|
||||
.select("goods_id ,MIN(id) as id, plate_num, planned_plate_num, area, planned_plate_area, version")
|
||||
.eq("order_id", orderId)
|
||||
.eq("organ_id", organId)
|
||||
.eq("deleted", false)
|
||||
.eq(ORDER_ID_FIELD, orderId)
|
||||
.eq(ORGAN_ID_FIELD, organId)
|
||||
.eq(DELETED_FIELD, false)
|
||||
.in("goods_id", materialReqVOS.stream().map(WebCadDataMaterialReqVO::getGoodsId).collect(Collectors.toList()))
|
||||
.groupBy("goods_id, plate_num, planned_plate_num, area, planned_plate_area, version")).stream()
|
||||
.collect(Collectors.toMap(
|
||||
@@ -517,13 +521,13 @@ public class WebCadOrderImportFactory {
|
||||
existRoomIdMap = orderBodyMapper.selectMaps(
|
||||
new QueryWrapper<OrderBodyDO>()
|
||||
.select("room_name,MIN(room_id) as room_id")
|
||||
.eq("order_id", orderId)
|
||||
.eq("organ_id", organId)
|
||||
.eq("deleted", false)
|
||||
.in("room_name", roomNames)
|
||||
.groupBy("room_name")).stream()
|
||||
.eq(ORDER_ID_FIELD, orderId)
|
||||
.eq(ORGAN_ID_FIELD, organId)
|
||||
.eq(DELETED_FIELD, false)
|
||||
.in(ROOM_NAME_FIELD, roomNames)
|
||||
.groupBy(ROOM_NAME_FIELD)).stream()
|
||||
.collect(Collectors.toMap(
|
||||
m -> String.valueOf(m.get("room_name")),
|
||||
m -> String.valueOf(m.get(ROOM_NAME_FIELD)),
|
||||
m -> ((Number) m.get("room_id")).longValue()
|
||||
));
|
||||
|
||||
@@ -1276,13 +1280,13 @@ public class WebCadOrderImportFactory {
|
||||
Map<String, Long> existPartsRoomIdMap = orderBodyMapper.selectMaps(
|
||||
new QueryWrapper<OrderBodyDO>()
|
||||
.select("room_name,MIN(room_id) as room_id")
|
||||
.eq("order_id", orderId)
|
||||
.eq("organ_id", organId)
|
||||
.eq("deleted", false)
|
||||
.in("room_name", roomNames)
|
||||
.groupBy("room_name")).stream()
|
||||
.eq(ORDER_ID_FIELD, orderId)
|
||||
.eq(ORGAN_ID_FIELD, organId)
|
||||
.eq(DELETED_FIELD, false)
|
||||
.in(ROOM_NAME_FIELD, roomNames)
|
||||
.groupBy(ROOM_NAME_FIELD)).stream()
|
||||
.collect(Collectors.toMap(
|
||||
m -> String.valueOf(m.get("room_name")),
|
||||
m -> String.valueOf(m.get(ROOM_NAME_FIELD)),
|
||||
m -> ((Number) m.get("room_id")).longValue()
|
||||
));
|
||||
Long existPartRoomId = existPartsRoomIdMap.get(roomName);
|
||||
|
||||
-13
@@ -23,11 +23,6 @@ public class WebCadImportProperties {
|
||||
*/
|
||||
private int asyncPlateThreshold;
|
||||
|
||||
/**
|
||||
* 当前拆单的节点,异步用
|
||||
*/
|
||||
private String node;
|
||||
|
||||
/**
|
||||
* 异步拆单请求json缓存地址
|
||||
*/
|
||||
@@ -41,14 +36,6 @@ public class WebCadImportProperties {
|
||||
this.tempFilePath = tempFilePath;
|
||||
}
|
||||
|
||||
public String getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
public void setNode(String node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
public int getAsyncPlateThreshold() {
|
||||
return asyncPlateThreshold;
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ spring:
|
||||
xxl:
|
||||
job:
|
||||
admin:
|
||||
addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
|
||||
addresses: http://192.168.1.205:28080/xxl-job-admin # 调度中心部署跟地址
|
||||
|
||||
--- #################### 服务保障相关配置 ####################
|
||||
|
||||
@@ -166,10 +166,9 @@ chenfeng:
|
||||
plan:
|
||||
webcad:
|
||||
import:
|
||||
node: 1
|
||||
async-plate-threshold: 5000
|
||||
cadImportPlateNumThreshold: 20000
|
||||
temp-file-path: /data/imes-server/cf-prod-plan/local
|
||||
temp-file-path: /data/imes-server/nfs
|
||||
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
|
||||
+2
-3
@@ -194,10 +194,9 @@ chenfeng:
|
||||
plan:
|
||||
webcad:
|
||||
import:
|
||||
node: 1
|
||||
async-plate-threshold: 5000
|
||||
async-plate-threshold: 1000
|
||||
cadImportPlateNumThreshold: 20000
|
||||
temp-file-path: /data/imes-server/cf-prod-plan/local
|
||||
temp-file-path: Z:/
|
||||
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
|
||||
Reference in New Issue
Block a user