diff --git a/1772553077321105408.zlib b/1772553077321105408.zlib
new file mode 100644
index 000000000..ec24bc462
Binary files /dev/null and b/1772553077321105408.zlib differ
diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java
index 83d67c5ed..5bd09683c 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java
@@ -44,5 +44,5 @@ public interface ErrorCodeConstants {
ErrorCode CUSTOM_ORDER_EXISTS = new ErrorCode(1_001_117_000, "自定义生产单号存在");
ErrorCode SALESMAN_ORDER_NOT_EXISTS = new ErrorCode(1_001_118_000, "业务员不存在");
ErrorCode SPLITTER_ORDER_NOT_EXISTS = new ErrorCode(1_001_119_000, "拆单员不存在");
- ErrorCode ORDER_IMPORT_FAIL = new ErrorCode(1_001_119_000, "生产单导入错误");
+ ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_001_119_000, "工序组不存在");
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
index a0d5ae545..5af245e72 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/pom.xml
@@ -24,6 +24,10 @@
cf-module-prod-executor-api
${revision}
+
+ com.cf.imes
+ cf-spring-boot-starter-biz-dict
+
com.cf.imes
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
index 5f1980874..c8993bf24 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java
@@ -157,12 +157,12 @@ public class OrderController {
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
- @Parameter(name = "upload", description = "是否只上传表头,默认为只上传表头", example = "true")
+ @Parameter(name = "upload", description = "是否只上传表头,默认为只上传表头", example = "false")
})
@PreAuthorize("@ss.hasPermission('executor:order:import')")
public CommonResult importExcel(@RequestPart("file") MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
- @RequestParam(value = "upload", required = false, defaultValue = "true") Boolean upload,
+ @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
OrderImportRespVO orderImportRespVO = orderService.importOrderList(upload, file, createReqVO, isAddPlate);
@@ -181,13 +181,25 @@ public class OrderController {
// 获取当前条件下所有生产单信息
@GetMapping("/allOrder")
- @Operation(summary = "条件选择获得生产单表")
+ @Operation(summary = "获得所有生产单")
@PreAuthorize("@ss.hasPermission('executor:order:query')")
- public CommonResult> getAllOrder(@Valid OrderPageReqVO pageReqVO) {
- PageResult pageResult = orderService.getOrderPage(pageReqVO);
+ public CommonResult> getOrderCheck(@Valid OrderPageReqVO pageReqVO) {
+ List pageResult = orderService.getAllOrderCheck(pageReqVO);
return success(BeanUtils.toBean(pageResult, OrderRespVO.class));
}
-
+// 生产单增加工序
+ @PostMapping("/addOrderProcess")
+ @Operation(summary = "生产单增加工序")
+ @Parameters({
+ @Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"),
+ @Parameter(name = "processGroupId", description = "工序组编号", required = true, example = "1024")
+ })
+ @PreAuthorize("@ss.hasPermission('executor:order:query')")
+ public CommonResult addOrderProcess(@RequestParam("orderId")Long orderId,
+ @RequestParam("processGroupId")Long processGroupId) {
+ orderService.addOrderProcess(orderId , processGroupId);
+ return success(true);
+ }
// 获得当前生产单的工序信息
// @GetMapping("/getOrderProcess")
// @Operation(summary = "生产单获取工序信息")
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPageReqVO.java
index a005e7657..81486d9ef 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPageReqVO.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsPageReqVO.java
@@ -28,7 +28,7 @@ public class OrderPartsPageReqVO extends PageParam {
private String material;
@Schema(description = "配件类型", example = "2")
- private String type;
+ private Integer type;
@Schema(description = "型号")
private String model;
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java
index ce34787b7..4f1c3b5f8 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsRespVO.java
@@ -35,7 +35,7 @@ public class OrderPartsRespVO {
@Schema(description = "配件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("配件类型")
- private String type;
+ private Integer type;
@Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("型号")
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsSaveReqVO.java
index 12e83c790..dfef723d9 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsSaveReqVO.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/orderParts/vo/OrderPartsSaveReqVO.java
@@ -30,7 +30,7 @@ public class OrderPartsSaveReqVO {
@Schema(description = "配件类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "配件类型不能为空")
- private String type;
+ private Integer type;
@Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "型号不能为空")
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/OrderProcessController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/OrderProcessController.java
new file mode 100644
index 000000000..fe8527d37
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/OrderProcessController.java
@@ -0,0 +1,74 @@
+package com.cf.imes.module.executor.controller.admin.process;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.cf.imes.framework.common.pojo.PageParam;
+import com.cf.imes.framework.common.pojo.PageResult;
+import com.cf.imes.framework.common.pojo.CommonResult;
+import com.cf.imes.framework.common.util.object.BeanUtils;
+import static com.cf.imes.framework.common.pojo.CommonResult.success;
+
+import com.cf.imes.framework.excel.core.util.ExcelUtils;
+
+import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
+import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import com.cf.imes.module.executor.controller.admin.process.vo.*;
+import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
+import com.cf.imes.module.executor.service.process.OrderProcessService;
+
+@Tag(name = "管理后台 - 生产单工序")
+@RestController
+@RequestMapping("/executor/order-process")
+@Validated
+public class OrderProcessController {
+
+ @Resource
+ private OrderProcessService orderProcessService;
+
+ @PostMapping("/create")
+ @Operation(summary = "创建生产单工序")
+ @PreAuthorize("@ss.hasPermission('executor:order-process:create')")
+ public CommonResult createOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO createReqVO) {
+ return success(orderProcessService.createOrderProcess(createReqVO));
+ }
+
+ @PutMapping("/update")
+ @Operation(summary = "更新生产单工序")
+ @PreAuthorize("@ss.hasPermission('executor:order-process:update')")
+ public CommonResult updateOrderProcess(@Valid @RequestBody OrderProcessSaveReqVO updateReqVO) {
+ orderProcessService.updateOrderProcess(updateReqVO);
+ return success(true);
+ }
+
+ @DeleteMapping("/delete")
+ @Operation(summary = "删除生产单工序")
+ @Parameter(name = "id", description = "编号", required = true)
+ @PreAuthorize("@ss.hasPermission('executor:order-process:delete')")
+ public CommonResult deleteOrderProcess(@RequestParam("id") Long id) {
+ orderProcessService.deleteOrderProcess(id);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @Operation(summary = "获得生产单工序")
+ @Parameter(name = "id", description = "编号", required = true, example = "1024")
+ @PreAuthorize("@ss.hasPermission('executor:order-process:query')")
+ public CommonResult getOrderProcess(@RequestParam("id") Long id) {
+ OrderProcessDO orderProcess = orderProcessService.getOrderProcess(id);
+ return success(BeanUtils.toBean(orderProcess, OrderProcessRespVO.class));
+ }
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessPageReqVO.java
new file mode 100644
index 000000000..dedefbf5d
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessPageReqVO.java
@@ -0,0 +1,40 @@
+package com.cf.imes.module.executor.controller.admin.process.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.cf.imes.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 生产单工序分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class OrderProcessPageReqVO extends PageParam {
+
+ @Schema(description = "生产单号")
+ private Long orderNo;
+
+ @Schema(description = "工序名", example = "张三")
+ private String name;
+
+ @Schema(description = "工序组 ID", example = "4356")
+ private Long groupId;
+
+ @Schema(description = "工序状态,0未加工,1已加工", example = "2")
+ private Boolean status;
+
+ @Schema(description = "板材大小")
+ private Double size;
+
+ @Schema(description = "下一工序 ID", example = "24046")
+ private Long nextStepId;
+
+ @Schema(description = "创建日期")
+ @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+ private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessRespVO.java
new file mode 100644
index 000000000..7b93aac6d
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessRespVO.java
@@ -0,0 +1,48 @@
+package com.cf.imes.module.executor.controller.admin.process.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 生产单工序 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class OrderProcessRespVO {
+
+ @Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31600")
+ @ExcelProperty("工序 ID")
+ private Long id;
+
+ @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("生产单号")
+ private Long orderNo;
+
+ @Schema(description = "工序名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @ExcelProperty("工序名")
+ private String name;
+
+ @Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4356")
+ @ExcelProperty("工序组 ID")
+ private Long groupId;
+
+ @Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @ExcelProperty("工序状态,0未加工,1已加工")
+ private Boolean status;
+
+ @Schema(description = "板材大小", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("板材大小")
+ private Double size;
+
+ @Schema(description = "下一工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24046")
+ @ExcelProperty("下一工序 ID")
+ private Long nextStepId;
+
+ @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED)
+ @ExcelProperty("创建日期")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessSaveReqVO.java
new file mode 100644
index 000000000..1e9809224
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/process/vo/OrderProcessSaveReqVO.java
@@ -0,0 +1,39 @@
+package com.cf.imes.module.executor.controller.admin.process.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 生产单工序新增/修改 Request VO")
+@Data
+public class OrderProcessSaveReqVO {
+
+ @Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31600")
+ private Long id;
+
+ @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "生产单号不能为空")
+ private Long orderNo;
+
+ @Schema(description = "工序名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+ @NotEmpty(message = "工序名不能为空")
+ private String name;
+
+ @Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4356")
+ @NotNull(message = "工序组 ID不能为空")
+ private Long groupId;
+
+ @Schema(description = "工序状态,0未加工,1已加工", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+ @NotNull(message = "工序状态,0未加工,1已加工不能为空")
+ private Boolean status;
+
+ @Schema(description = "板材大小", requiredMode = Schema.RequiredMode.REQUIRED)
+ @NotNull(message = "板材大小不能为空")
+ private Double size;
+
+ @Schema(description = "下一工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24046")
+ @NotNull(message = "下一工序 ID不能为空")
+ private Long nextStepId;
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderParts/OrderPartsDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderParts/OrderPartsDO.java
index 08ddcca24..80222d1f8 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderParts/OrderPartsDO.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/orderParts/OrderPartsDO.java
@@ -46,7 +46,7 @@ public class OrderPartsDO extends BaseDO {
/**
* 配件类型
*/
- private String type;
+ private Integer type;
/**
* 型号
*/
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/process/OrderProcessDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/process/OrderProcessDO.java
new file mode 100644
index 000000000..dc0f06a35
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/process/OrderProcessDO.java
@@ -0,0 +1,55 @@
+package com.cf.imes.module.executor.dal.dataobject.process;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 生产单工序 DO
+ *
+ * @author 晨丰科技
+ */
+@TableName("order_process")
+@KeySequence("order_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class OrderProcessDO extends BaseDO {
+
+ /**
+ * 工序 ID
+ */
+ @TableId
+ private Long id;
+ /**
+ * 生产单号
+ */
+ private Long orderNo;
+ /**
+ * 工序名
+ */
+ private String name;
+ /**
+ * 工序组 ID
+ */
+ private Long groupId;
+ /**
+ * 工序状态,0未加工,1已加工
+ */
+ private Boolean status;
+ /**
+ * 板材大小
+ */
+ private Double size;
+ /**
+ * 下一工序 ID
+ */
+ private Long nextStepId;
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java
index cd1d17b4d..f700e0880 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java
@@ -13,8 +13,10 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
/**
* 生产单表 order_{N} Mapper
@@ -49,10 +51,9 @@ public interface OrderMapper extends BaseMapperX {
IPage selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper);
- default PageResult selectOrderCheck(OrderPageReqVO reqVO) {
- return selectPage(reqVO , null, new MPJLambdaWrapper()
+ default List selectOrderCheck(OrderPageReqVO reqVO) {
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
.eqIfExists(OrderDO::getParentNo, reqVO.getParentNo())
- .between(OrderDO::getDeliveryDate, reqVO.getDeliveryDate()[0],reqVO.getDeliveryDate()[1])
.eqIfExists(OrderDO::getType, reqVO.getType())
.eqIfExists(OrderDO::getSort, reqVO.getSort())
.eqIfExists(OrderDO::getDataType, reqVO.getDataType())
@@ -67,8 +68,24 @@ public interface OrderMapper extends BaseMapperX {
.eqIfExists(OrderDO::getSplitter, reqVO.getSplitter())
.eqIfExists(OrderDO::getRemark, reqVO.getRemark())
.eqIfExists(OrderDO::getDeleted, reqVO.getDeleted())
- .between(OrderDO::getDeliveryDate, reqVO.getDeliveryDate()[0],reqVO.getDeliveryDate()[1])
- .orderByDesc(OrderDO::getId));
+ .orderByDesc(OrderDO::getId);
+ if (reqVO.getDeliveryDate() != null && reqVO.getDeliveryDate().length == 2) {
+ LocalDateTime startTime = reqVO.getDeliveryDate()[0];
+ LocalDateTime endTime = reqVO.getDeliveryDate()[1];
+
+ if (startTime != null) {
+ wrapper.between(OrderDO::getDeliveryDate, startTime, endTime);
+ }
+ }
+ if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length == 2) {
+ LocalDateTime startTime = reqVO.getCreateTime()[0];
+ LocalDateTime endTime = reqVO.getCreateTime()[1];
+
+ if (startTime != null) {
+ wrapper.between(OrderDO::getCreateTime, startTime, endTime);
+ }
+ }
+ return selectList(wrapper);
}
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/process/OrderProcessMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/process/OrderProcessMapper.java
new file mode 100644
index 000000000..75fdd457f
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/process/OrderProcessMapper.java
@@ -0,0 +1,15 @@
+package com.cf.imes.module.executor.dal.mysql.process;
+
+import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
+import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 生产单工序 Mapper
+ *
+ * @author 晨丰科技
+ */
+@Mapper
+public interface OrderProcessMapper extends BaseMapperX {
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
index 9ffde8e76..532002f74 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java
@@ -80,5 +80,14 @@ public interface OrderService {
* @param pageReqVO: 查询信息
* @return List
*/
- PageResult getAllOrderCheck(OrderPageReqVO pageReqVO);
+ List getAllOrderCheck(OrderPageReqVO pageReqVO);
+
+ /**
+ * @param orderId:
+ * @param processGroupId:
+ * @return void
+ * @author Administrator
+ * @date 2024/3/26
+ */
+ void addOrderProcess(Long orderId , Long processGroupId);
}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
index ef0885da3..84a43f553 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java
@@ -18,7 +18,11 @@ import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
-import com.cf.imes.module.executor.util.excel.OrderExcelUtil;
+import com.cf.imes.module.executor.util.FileTypeChangeUtil;
+import com.cf.imes.module.executor.util.deviseData.Detail;
+import com.cf.imes.module.executor.util.deviseData.IBoardProdInfo;
+import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderExcelUtil;
+import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import com.cf.imes.module.system.api.user.AdminUserApi;
import org.springframework.stereotype.Service;
@@ -86,6 +90,9 @@ public class OrderServiceImpl implements OrderService {
@Resource
private AdminUserApi adminUserApi;
+ @Resource
+ private FileTypeChangeUtil fileTypeChangeUtil;
+
private static final int DEFAULT_DAYS_TO_ADD = 30;
@@ -145,20 +152,23 @@ public class OrderServiceImpl implements OrderService {
public OrderImportRespVO importOrderList(Boolean upload, MultipartFile file, OrderSaveReqVO createReqVO, Boolean isAddPlate) throws IOException {
OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
.updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
-// 上传文件类型判断,抽出文件中的板件信息
- List list = new ArrayList<>();
+// List list = new ArrayList<>();
+ List list = new ArrayList<>();
if (createReqVO.getDataType() == 1) {//CAD
return orderImportRespVO;
} else if (createReqVO.getDataType() == 2) {//WebCAD
return orderImportRespVO;
} else if (createReqVO.getDataType() == 3) {//Excel
- //文件数据读取
- list = OrderExcelUtil.read(file, OrderPlateImportExcelVO.class);//缺少数据转换
- System.out.println("================== " +list);
- if (list == null || list.size() == 0) {
- orderImportRespVO.getFailureOrder().put("生产单导入错误", String.valueOf(OrderExcelUtil.getValue()));
+// 文件数据读取
+ List iboardProdInfoList = fileTypeChangeUtil.fileDataChange(file);
+ if (iboardProdInfoList == null || iboardProdInfoList.size() == 0) {
+ orderImportRespVO.getFailureOrder().put("生产单导入错误", String.valueOf(fileTypeChangeUtil.getValue()));
return orderImportRespVO;
}
+ for (Detail detail : iboardProdInfoList) {
+ list.add(detail);
+// list.add(detail.getIBoardProdInfo());
+ }
}
Long id;
// 判断是否为为生产单添加板材
@@ -173,12 +183,12 @@ public class OrderServiceImpl implements OrderService {
validateOrderExists(createReqVO.getId());
id = createReqVO.getId();
}
-
// 根据字段筛选出重复数据
- List duplicateOrder = list.stream()
+ List duplicateOrder = list.stream()
.collect(
Collectors.toMap(
- p -> Arrays.asList(p.getGoodsId(), p.getGoodsName(), p.getMaterial(), p.getColor(), p.getSpec()),
+ p -> Arrays.asList(p.getIBoardProdInfo().getGoodsId(), p.getIBoardProdInfo().getGoodsName(),
+ p.getIBoardProdInfo().getMaterial(), p.getIBoardProdInfo().getColor(), p.getIBoardProdInfo().getSpec()),
p -> p,
(existing, replacement) -> existing
)
@@ -186,45 +196,44 @@ public class OrderServiceImpl implements OrderService {
.values().stream()
.collect(Collectors.toList());
// 数据分类
- HashMap> map = classifyGoods(duplicateOrder);
+ HashMap> map = classifyGoods(duplicateOrder);
// 板材信息合集,添加生产单id,板材信息写入order_raw_goods
List rawGoodsSaveReqVOList = collectImportRawPlate(map.get("plate"), id);
RawGoodsImportRespVO respRawGoods = rawGoodsMapper.importRawGoodsList(rawGoodsSaveReqVOList);
orderImportRespVO.getFailureOrder().putAll(respRawGoods.getFailureRawGoods());
-
// 小板信息写入 、配件信息写入
- Map> groupedRooms = list.stream()
+ Map> groupedRooms = list.stream()
.collect(Collectors.groupingBy(
- order -> order.getRoomsName() != null ? order.getRoomsName() : " ",
+ order -> order.getIBoardProdInfo().getRoomsName() != null ? order.getIBoardProdInfo().getRoomsName() : " ",
Collectors.toList()
));
groupedRooms.forEach((roomName, listRoom) -> {
System.out.println("OrderPlateImportExcelVO with roomName " + roomName + ":");
Long roomId = (Long) snowFlakeGenerator.nextId(null);
- Map> groupedCabinetsName = listRoom.stream()
+ Map> groupedCabinetsName = listRoom.stream()
.collect(Collectors.groupingBy(
- order -> order.getCabinetsName() != null ? order.getCabinetsName() : " ",
+ order -> order.getIBoardProdInfo().getCabinetsName() != null ? order.getIBoardProdInfo().getCabinetsName() : " ",
Collectors.toList()
));
groupedCabinetsName.forEach((cabinetName, listCabinet) -> {
System.out.println("OrderPlateImportExcelVO with cabinetName " + cabinetName + ":");
final Double[] plateCountByCabinetName = {0.0};
-// 插入柜体表数据
+ // 插入柜体表数据
OrderBodyDO orderBodyDO = OrderBodyDO.builder().orderId(id).roomId(roomId)
.roomName(roomName).name(cabinetName).build();
orderBodyMapper.insert(orderBodyDO);
Long bodyId = orderBodyDO.getId();
- Map> groupedSynthesis = listCabinet.stream()
+ Map> groupedSynthesis = listCabinet.stream()
.collect(Collectors.groupingBy(
- order -> order.getSynthesis() != null ? order.getSynthesis() : " ",
+ order -> order.getIBoardProdInfo().getSynthesis() != null ? order.getIBoardProdInfo().getSynthesis() : " ",
Collectors.toList()
));
groupedSynthesis.forEach((synthesis, listSynthesis) -> {
System.out.println("OrderPlateImportExcelVO with synthesis " + synthesis + ":");
Long synthesisId = (Long) snowFlakeGenerator.nextId(null);
- Map> groupedCombinationName = listSynthesis.stream()
+ Map> groupedCombinationName = listSynthesis.stream()
.collect(Collectors.groupingBy(
- order -> order.getCombinationName() != null ? order.getCombinationName() : " ",
+ order -> order.getIBoardProdInfo().getCombinationName() != null ? order.getIBoardProdInfo().getCombinationName() : " ",
Collectors.toList()
));
groupedCombinationName.forEach((combinationName, listCombination) -> {//组合名称
@@ -237,40 +246,40 @@ public class OrderServiceImpl implements OrderService {
Long groupId = orderGroupDO.getId();
listCombination.forEach(plateOrParts -> {
System.out.println("OrderPlateImportExcelVO with combinationName " + combinationName + ":");
- plateCountByCombination[0] = plateCountByCombination[0] + plateOrParts.getGoodsNumber();
- if (plateOrParts.getGoodType().replaceAll(" ", "").equals("板材") ||
- plateOrParts.getGoodType().replaceAll(" ", "").equals("1")) {//板材
- for (int i = 0; i < plateOrParts.getGoodsNumber(); i++) {
+ plateCountByCombination[0] = plateCountByCombination[0] + plateOrParts.getIBoardProdInfo().getGoodsNumber();
+ if (plateOrParts.getIBoardProdInfo().getGoodType()== 1) {
+ //板材
+ for (int i = 0; i < plateOrParts.getIBoardProdInfo().getGoodsNumber(); i++) {
PlateDO plateDO = BeanUtils.toBean(plateOrParts, PlateDO.class).setOrderId(id).setGoodsId("");
plateMapper.insert(plateDO);
Long plateId = plateDO.getId();
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(1)
.roomId(roomId).bodyId(bodyId).dataId(plateId).plateId(plateId)
- .num(Double.valueOf(plateOrParts.getGoodsNumber())).build();
+ .num(1.0).build();
orderItemMapper.insert(orderItemDO);
+// 写入Detail中的IBoardProdInfo
+ plateOrParts.getIBoardProdInfo().setPlateId(plateId);
}
} else {
//配件
- OrderPartsDO orderPartsDO = BeanUtils.toBean(plateOrParts, OrderPartsDO.class).setName(plateOrParts.getGoodsName()).setOrderId(id);
+ OrderPartsDO orderPartsDO = BeanUtils.toBean(plateOrParts, OrderPartsDO.class).
+ setName(plateOrParts.getIBoardProdInfo().getGoodsName()).setType(plateOrParts.getIBoardProdInfo().getGoodType()).setOrderId(id);
orderPartsMapper.insert(orderPartsDO);
- OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(2)
+ OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(Integer.valueOf(plateOrParts.getIBoardProdInfo().getGoodType()))
.roomId(roomId).bodyId(bodyId).dataId(orderPartsDO.getId()).partsId(orderPartsDO.getId())
- .num(Double.valueOf(plateOrParts.getGoodsNumber())).build();
+ .num(Double.valueOf(plateOrParts.getIBoardProdInfo().getGoodsNumber())).build();
orderItemMapper.insert(orderItemDO);
}
});
// 修改group中的板件数量
-// OrderGroupDO updateOrderGroupDO = orderGroupMapper.selectById(groupId).setPlateNum(plateCountByCombination[0]);
-// orderGroupMapper.updateById(updateOrderGroupDO);
orderGroupMapper.updatePlateNumById(groupId, plateCountByCombination[0]);
plateCountByCabinetName[0] = plateCountByCabinetName[0] + plateCountByCombination[0];
});
});
-// OrderBodyDO updateOrderBodyDO = orderBodyMapper.selectById(bodyId).setPlateNum(plateCountByCabinetName[0]);
-// orderBodyMapper.updateById(updateOrderBodyDO);
orderBodyMapper.updatePlateNumById(bodyId, plateCountByCabinetName[0]);
});
});
+ fileTypeChangeUtil.fileDataChangeToJson(list , id);
return orderImportRespVO;
}
@@ -289,22 +298,22 @@ public class OrderServiceImpl implements OrderService {
}
@Override
- public PageResult getAllOrderCheck(OrderPageReqVO pageReqVO) {
+ public List getAllOrderCheck(OrderPageReqVO pageReqVO) {
return orderMapper.selectOrderCheck(pageReqVO);
}
- // 板材信息收集
- private List collectImportRawPlate(List list, Long id) {
+// 板材信息收集
+ private List collectImportRawPlate(List list, Long id) {
List rawGoodsDOList = new ArrayList<>();
- for (OrderPlateImportExcelVO orderPlateImportExcelVO : list) {
- RawGoodsSaveReqVO rawGoodsSaveReqVO = BeanUtils.toBean(orderPlateImportExcelVO, RawGoodsSaveReqVO.class);
+ for (Detail detail : list) {
+ RawGoodsSaveReqVO rawGoodsSaveReqVO = BeanUtils.toBean(detail.getIBoardProdInfo(), RawGoodsSaveReqVO.class);
rawGoodsSaveReqVO.setOrderId(id);
- rawGoodsSaveReqVO.setRawGoodsId(orderPlateImportExcelVO.getGoodsId());
+ rawGoodsSaveReqVO.setRawGoodsId(detail.getIBoardProdInfo().getGoodsId());
// 创建 Pattern 对象
Pattern pattern = Pattern.compile(".*?[^\\d]+(\\d+).*");
- Matcher matcher = pattern.matcher(orderPlateImportExcelVO.getSpec());
+ Matcher matcher = pattern.matcher(detail.getIBoardProdInfo().getSpec());
if (matcher.matches()) {
String number = matcher.group(1);
// 去除空格
@@ -316,19 +325,19 @@ public class OrderServiceImpl implements OrderService {
return rawGoodsDOList;
}
- //对数据进行分类
- private HashMap> classifyGoods(List list) {
- HashMap> map = new HashMap<>();
- List plateLists = new ArrayList<>();
- List partsLists = new ArrayList<>();
- for (OrderPlateImportExcelVO orderPlateImportExcelVO : list) {
+//对数据进行分类
+ private HashMap> classifyGoods(List list) {
+ HashMap> map = new HashMap<>();
+ List plateLists = new ArrayList<>();
+ List partsLists = new ArrayList<>();
+ for (Detail detail : list) {
//判断是板材还是配件
- if (orderPlateImportExcelVO.getGoodType().replaceAll(" ", "").equals("板材") || orderPlateImportExcelVO.getGoodType().replaceAll(" ", "").equals("1")) {
- plateLists.add(orderPlateImportExcelVO);
+ if (detail.getIBoardProdInfo().getGoodType()== 1) {
+ plateLists.add(detail);
} else {
- partsLists.add(orderPlateImportExcelVO);
+ partsLists.add(detail);
}
- orderPlateImportExcelVO.setRemark(orderPlateImportExcelVO.remarkJSON());
+// orderPlateImportExcelVO.setRemark(orderPlateImportExcelVO.remarkJSON());
}
map.put("plate", plateLists);
map.put("parts", partsLists);
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java
new file mode 100644
index 000000000..26d7c51ed
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java
@@ -0,0 +1,47 @@
+package com.cf.imes.module.executor.service.process;
+
+import java.util.*;
+import javax.validation.*;
+import com.cf.imes.module.executor.controller.admin.process.vo.*;
+import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
+import com.cf.imes.framework.common.pojo.PageResult;
+import com.cf.imes.framework.common.pojo.PageParam;
+
+/**
+ * 生产单工序 Service 接口
+ *
+ * @author 晨丰科技
+ */
+public interface OrderProcessService {
+
+ /**
+ * 创建生产单工序
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createOrderProcess(@Valid OrderProcessSaveReqVO createReqVO);
+
+ /**
+ * 更新生产单工序
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateOrderProcess(@Valid OrderProcessSaveReqVO updateReqVO);
+
+ /**
+ * 删除生产单工序
+ *
+ * @param id 编号
+ */
+ void deleteOrderProcess(Long id);
+
+ /**
+ * 获得生产单工序
+ *
+ * @param id 编号
+ * @return 生产单工序
+ */
+ OrderProcessDO getOrderProcess(Long id);
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java
new file mode 100644
index 000000000..1e8f70ba7
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java
@@ -0,0 +1,66 @@
+package com.cf.imes.module.executor.service.process;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.cf.imes.module.executor.controller.admin.process.vo.*;
+import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO;
+import com.cf.imes.framework.common.pojo.PageResult;
+import com.cf.imes.framework.common.util.object.BeanUtils;
+
+import com.cf.imes.module.executor.dal.mysql.process.OrderProcessMapper;
+
+import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
+
+/**
+ * 生产单工序 Service 实现类
+ *
+ * @author 晨丰科技
+ */
+@Service
+@Validated
+public class OrderProcessServiceImpl implements OrderProcessService {
+
+ @Resource
+ private OrderProcessMapper orderProcessMapper;
+
+ @Override
+ public Long createOrderProcess(OrderProcessSaveReqVO createReqVO) {
+ // 插入
+ OrderProcessDO orderProcess = BeanUtils.toBean(createReqVO, OrderProcessDO.class);
+ orderProcessMapper.insert(orderProcess);
+ // 返回
+ return orderProcess.getId();
+ }
+
+ @Override
+ public void updateOrderProcess(OrderProcessSaveReqVO updateReqVO) {
+ // 校验存在
+ validateOrderProcessExists(updateReqVO.getId());
+ // 更新
+ OrderProcessDO updateObj = BeanUtils.toBean(updateReqVO, OrderProcessDO.class);
+ orderProcessMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteOrderProcess(Long id) {
+ // 校验存在
+ validateOrderProcessExists(id);
+ // 删除
+ orderProcessMapper.deleteById(id);
+ }
+
+ private void validateOrderProcessExists(Long id) {
+ if (orderProcessMapper.selectById(id) == null) {
+ throw exception(ORDER_PROCESS_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public OrderProcessDO getOrderProcess(Long id) {
+ return orderProcessMapper.selectById(id);
+ }
+
+}
\ No newline at end of file
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/FileTypeChangeUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/FileTypeChangeUtil.java
index 00c3f765f..a8c5fd232 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/FileTypeChangeUtil.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/FileTypeChangeUtil.java
@@ -1,10 +1,25 @@
package com.cf.imes.module.executor.util;
+import com.cf.imes.module.executor.util.deviseData.Detail;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
/**
* 生产单新增传入文件格式转换工具
- * @author: 晨丰科技
- * @date: 2024/3/13 17:31
*/
-public interface FileTypeChangeUtil {
+public interface FileTypeChangeUtil {
+// 文件数据格式转换
+ List fileDataChange(MultipartFile file) throws IOException;
+// List转json,并且文件压缩存储
+void fileDataChangeToJson(List detailList , Long orderId) throws JsonProcessingException;
+// Api数据格式转换
+
+// ds数据转换
+
+ Map getValue();
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/Detail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/Detail.java
new file mode 100644
index 000000000..a531f71a2
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/Detail.java
@@ -0,0 +1,28 @@
+package com.cf.imes.module.executor.util.deviseData;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * CAD板件信息详情
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
+public class Detail {
+
+ private String orderId ; //生产单id
+ private IBoardProdInfo iBoardProdInfo; //板件属性信息
+ private ModelDetail modelDetail ; //模块明细
+ private PointDetail pointDetail ; //点明细
+ private HoleDetail holeDetail ; //孔明细
+ private PointDetail orgPointDetail ; //原始点明细
+ private ModelDetail sideModelDetail ; //侧面模块明细
+ private HoleDetail sideHoleDetail;//侧面孔明细
+}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/HoleDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/HoleDetail.java
index e83317415..6cb7f27bf 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/HoleDetail.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/HoleDetail.java
@@ -1,23 +1,32 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:58
+ * 孔明细
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class HoleDetail {
- private Integer HoleID;
- private Integer HoleType;// 请定义HoleType枚举类型
- private Integer Face; // 请定义FaceType枚举类型
- private Integer PointX;
- private Integer PointY;
- private Integer PointZ;
- private Integer Radius;
- private Integer Depth;
- private Integer EndPoint;
- private Integer PointX2;
- private Integer PointY2;
- private Integer Angle;
+ private Integer holeId; //孔ID
+ private Integer holeType;// 孔类型(0大孔, 10小孔, 20木削, 21木削大孔, 30层板钉, 40通孔, 50连接杆, -10造型孔)
+ private Integer faceType; // 孔面类型(0正面, 1反面, 2侧面)
+ private Integer pointX;
+ private Integer pointY;
+ private Integer pointZ;
+ private Integer radius; //孔半径
+ private Integer depth; //孔深度
+ private Integer endPoint; //孔末端点
+ private Integer pointX2;
+ private Integer pointY2;
+ private Integer angle; //角度
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IBoardProdInfo.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IBoardProdInfo.java
new file mode 100644
index 000000000..b54e0b610
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IBoardProdInfo.java
@@ -0,0 +1,67 @@
+package com.cf.imes.module.executor.util.deviseData;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ * 板件属性信息
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
+public class IBoardProdInfo {
+
+ private String goodsId;
+ private String goodsName;
+ private int goodType;
+ private String factory;
+ private String brand;
+ private String model;
+ private String spec;
+ private String unit;
+ private Double goodsNumber;
+ private String plateNo;
+ private Long plateId; //板件Id
+ private String name; //板件名称
+ private String roomsName; //房间名称
+ private String cabinetsName; //柜体名
+ private String material; //材质
+ private String color; //颜色
+ private Integer texture; //纹路 纹路(0正纹1可翻转2反纹)
+ private int typographicFace; //排版面 排钻类型(0正面1反面2随意面)
+ private int openDoorType; //开门类型 0非门板,1左开,2右开,3上翻,4下翻
+ private Boolean isRect; //是否为矩形
+
+ private Integer splitHeight; //开料长
+ private Integer splitWidth; //开料宽
+ private Integer splitThickness; //开料厚度
+
+ private Integer decomposeHeight; //拆单长
+ private Integer decomposeWidth; //拆单宽
+ private Integer decomposeThickness; //拆单厚度
+
+ private Integer finishedHeight; //成品长
+ private Integer finishedWidth; //成品宽
+ private Integer finishedThickness; //成品厚度
+
+ private Integer edgeHeight; //外封边长
+ private Integer edgeWidth; //外封边宽
+ private Integer edgeThickness; //外封边厚度
+
+ private BigDecimal sealLeft;
+ private BigDecimal sealRight;
+ private BigDecimal sealUp;
+ private BigDecimal sealDown;
+
+ private String synthesis;
+ private String combinationName;
+
+ private String remark; //备注
+}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IContourData.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IContourData.java
index e94f16a0e..f5ccaeba2 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IContourData.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IContourData.java
@@ -1,14 +1,23 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
import java.awt.*;
import java.util.ArrayList;
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:47
+ * 轮廓数据
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class IContourData {
- private ArrayList pts;
- private Integer[] buls;
+ private ArrayList pts; //点集(二维向量(x,y))
+ private Integer[] buls; //凸度(0直线段 >0逆时针方向 <0顺时针方向)
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IOriginModelingData.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IOriginModelingData.java
index df9cdbf4c..dbe1d05d6 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IOriginModelingData.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/IOriginModelingData.java
@@ -1,20 +1,29 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
import java.util.Dictionary;
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:48
+ * 造型数据
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class IOriginModelingData {
- private IContourData outline;
- private Dictionary holes;
- private Integer thickness;
- private Integer dir; // 请定义FaceDirection枚举类型
- private Integer knifeRadius;
- private Integer addLen;
- private Integer addWidth;
- private Integer addDepth;
+ private IContourData outline; //轮郭
+ private Dictionary holes; //孔轮廓
+ private Integer thickness; //厚度
+ private Integer dir; // 0正面、1反面、2侧面
+ private Integer knifeRadius; //刀半径
+ private Integer addLen; //槽加长
+ private Integer addWidth; //槽加宽
+ private Integer addDepth; //槽加深
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/ModelDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/ModelDetail.java
index 7cbf395af..f0d8241ed 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/ModelDetail.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/ModelDetail.java
@@ -1,21 +1,30 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
import java.util.List;
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:53
+ * 模块明细
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class ModelDetail {
- private Integer ModelID;
- private Integer LineID;
- private Integer Face;
- private String KnifeName;
- private Integer KnifeRadius;
- private Integer Depth;
- private IOriginModelingData OriginModeling;
- private List PointList;
- private List OffSetList;
+ private Integer modelId; //模块ID
+ private Integer lineID; //纹路ID
+ private Integer typographicFace; //排版面 0正面, 1反面, 2侧面
+ private String knifeName; //刀具名称
+ private Integer knifeRadius; //刀半径
+ private Integer depth; //深度
+ private IOriginModelingData originModeling; //造型数据
+ private List pointList; //点列表
+ private List offSetList; //偏移量列表 //模块偏移数据
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OffSetList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OffSetList.java
index 00127979b..312b8be84 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OffSetList.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OffSetList.java
@@ -1,16 +1,25 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:51
+ * 偏移量列表 模块偏移数据
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class OffSetList {
- private String Name;
- private Integer Face;// 请定义FaceType枚举类型
- private Integer Value;
- private Integer Radius;
- private Integer Deep;
- private Integer Angle;
+ private String name; //名称
+ private Integer faceType;// 面向类型(0正面, 1反面, 2侧面)
+ private Integer value; //值
+ private Integer radius;//半径
+ private Integer deep;//深度
+ private Integer angle;//角度
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OrgPointDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OrgPointDetail.java
deleted file mode 100644
index 036f3743d..000000000
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/OrgPointDetail.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.cf.imes.module.executor.util.deviseData;
-
-/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 17:00
- */
-public class OrgPointDetail
-
-{
-}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointDetail.java
index 4aecf949c..0402bdf5e 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointDetail.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointDetail.java
@@ -1,14 +1,23 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:57
+ * 点明细
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class PointDetail {
- private Integer PointID;
- private Integer PointX;
- private Integer PointY;
- private Integer Curve;
- private Integer SealSize;
+ private Integer pointId;
+ private Integer pointX;
+ private Integer pointY;
+ private Integer curve;//曲线
+ private Integer SealSize;//封边尺寸
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointList.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointList.java
index 77bb58bbe..7c8bfc520 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointList.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/PointList.java
@@ -1,16 +1,25 @@
package com.cf.imes.module.executor.util.deviseData;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 16:49
+ * 点列表
*/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
public class PointList {
- private Integer LineID;
- private Integer PointID;
- private Integer PointX;
- private Integer PointY;
- private Integer Radius;
- private Integer Depth;
- private Integer Curve;
+ private Integer lineId;//纹路Id
+ private Integer pointId;//点Id
+ private Integer pointX;
+ private Integer pointY;
+ private Integer radius;
+ private Integer depth;
+ private Integer curve;
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideHoleDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideHoleDetail.java
deleted file mode 100644
index f714dd448..000000000
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideHoleDetail.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.cf.imes.module.executor.util.deviseData;
-
-/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 18:02
- */
-public class SideHoleDetail {
-
- private Integer HoleID;
- private Integer HoleType; // 请定义HoleType枚举类型
- private Integer Face; // 请定义FaceType枚举类型
- private Integer PointX;
- private Integer PointY;
- private Integer PointZ;
- private Integer Radius;
- private Integer Depth;
- private String EndPoint;
- private Integer PointX2;
- private Integer PointY2;
- private Integer Angle;
-}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideModelDetail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideModelDetail.java
deleted file mode 100644
index 51a3843c1..000000000
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/SideModelDetail.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.cf.imes.module.executor.util.deviseData;
-
-import java.util.List;
-
-/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/22 17:59
- */
-public class SideModelDetail {
-
- private Integer ModelID;
- private Integer LineID;
- private int Face;
- private String KnifeName;
- private Integer KnifeRadius;
- private Integer Depth;
- private IOriginModelingData OriginModeling;
- private List PointList;
- private List OffSetList;
-}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/detail.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/detail.java
deleted file mode 100644
index aadedd2d6..000000000
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/deviseData/detail.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.cf.imes.module.executor.util.deviseData;
-
-/**
- * @projectName: cf_imes_server
- * @author: 晨丰科技
- * @date: 2024/3/23 9:10
- */
-public class detail {
-
- private ModelDetail ModelDetail ;
- private PointDetail PointDetail ;
- private HoleDetail HoleDetail ;
- private OrgPointDetail OrgPointDetail ;
- private SideModelDetail SideModelDetail ;
- private SideHoleDetail SideHoleDetail;
- private String remark ;
-}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/ExcelListener.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelListener.java
similarity index 86%
rename from cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/ExcelListener.java
rename to cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelListener.java
index 0e109f7ab..ffa97bd0b 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/ExcelListener.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/ExcelListener.java
@@ -1,4 +1,4 @@
-package com.cf.imes.module.executor.util.excel;
+package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
@@ -61,10 +61,9 @@ public final class ExcelListener extends AnalysisEventListener {
if (exception instanceof ExcelDataConvertException) {
ExcelDataConvertException excelDataConvertException = (ExcelDataConvertException) exception;
log.error("第{}行,第{}列解析异常,数据为:{}", excelDataConvertException.getRowIndex() + 1,
- excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
- value = String.valueOf(new RuntimeException("第" + (excelDataConvertException.getRowIndex() + 1) + "行" +
- ",第" + (excelDataConvertException.getColumnIndex() + 1) + "列读取错误"));
- System.out.println();
+ excelDataConvertException.getColumnIndex() + 1, excelDataConvertException.getCellData());
+ value = value + String.valueOf(new RuntimeException("第" + (excelDataConvertException.getRowIndex() + 1) + "行" +
+ ",第" + (excelDataConvertException.getColumnIndex() + 1) + "列读取错误")) ;
}
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/FileTypeChangeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/FileTypeChangeRealize.java
new file mode 100644
index 000000000..18cd76b0e
--- /dev/null
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/FileTypeChangeRealize.java
@@ -0,0 +1,113 @@
+package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
+
+import com.cf.imes.framework.common.util.object.BeanUtils;
+import com.cf.imes.module.executor.util.FileTypeChangeUtil;
+import com.cf.imes.module.executor.util.ZLibUtils;
+import com.cf.imes.module.executor.util.deviseData.Detail;
+import com.cf.imes.module.executor.util.deviseData.IBoardProdInfo;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 实现数据格式转换
+ */
+@Service
+@Validated
+public class FileTypeChangeRealize implements FileTypeChangeUtil {
+
+ private String valueErr = "";
+
+ private Boolean flag = true;
+ @Override
+ public List fileDataChange(MultipartFile file) throws IOException {
+ List details = new ArrayList<>();
+ List orderPlateImportExcelVOS = OrderExcelUtil.read(file, OrderPlateImportExcelVO.class);
+
+ if (orderPlateImportExcelVOS == null || orderPlateImportExcelVOS.isEmpty()) {
+ return details;
+ }
+
+ StringBuilder value = new StringBuilder();
+
+
+ for (OrderPlateImportExcelVO orderPlateImportExcelVO : orderPlateImportExcelVOS) {
+ handleOrderPlateImportExcelVO(orderPlateImportExcelVO, value);
+ if(flag){
+ Detail detail = Detail.builder()
+ .iBoardProdInfo(BeanUtils.toBean(orderPlateImportExcelVO, IBoardProdInfo.class))
+ .build();
+ details.add(detail);
+ }else {
+ details = null;
+ System.out.println(value.toString());
+ break;
+ }
+
+ }
+ return details;
+ }
+
+ private void handleOrderPlateImportExcelVO(OrderPlateImportExcelVO orderPlateImportExcelVO, StringBuilder value) {
+ if (orderPlateImportExcelVO.getGoodType() == 0) {
+ appendError(value, " 商品类别未填写 ", orderPlateImportExcelVO);
+ flag = false;
+ } else {
+ if (!orderPlateImportExcelVO.isVail()) {
+ if (orderPlateImportExcelVO.getGoodType() == 1) {
+ if (!orderPlateImportExcelVO.isValidRawGoods()) {
+ appendError(value, " 板材信息填写有误 ", orderPlateImportExcelVO);
+ flag = false;
+ }
+ } else {
+ if (!orderPlateImportExcelVO.isValidParts()) {
+ appendError(value, " 配件信息填写有误 ", orderPlateImportExcelVO);
+ flag = false;
+ }
+ }
+ }
+ }
+ }
+
+ private void appendError(StringBuilder value, String errorMessage, OrderPlateImportExcelVO orderPlateImportExcelVO) {
+ value.append(orderPlateImportExcelVO.getOrdinal())
+ .append(orderPlateImportExcelVO.getGoodsName())
+ .append(errorMessage);
+ valueErr = valueErr + value.toString();
+ }
+
+ @Override
+ public void fileDataChangeToJson(List detailList , Long orderId) throws JsonProcessingException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String detailListJson = objectMapper.writeValueAsString(detailList);
+// List convertedDetailList = objectMapper.readValue(detailListJson, new TypeReference>() {});
+ byte[] jsonData = detailListJson.getBytes();
+
+ // 使用 Zlib 压缩算法进行压缩
+ byte[] compressedData = ZLibUtils.compress(jsonData);
+
+ // 将压缩后的数据写入文件
+ try (FileOutputStream fos = new FileOutputStream(orderId + ".zlib")) {
+ fos.write(compressedData);
+ System.out.println("Data compressed and saved to compressed_data.zlib");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public Map getValue() {
+ Map err = OrderExcelUtil.getValue();
+ err.put("readErr", valueErr);
+ return err;
+ }
+}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/OrderExcelUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderExcelUtil.java
similarity index 90%
rename from cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/OrderExcelUtil.java
rename to cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderExcelUtil.java
index 48b23097e..23839e608 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/excel/OrderExcelUtil.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderExcelUtil.java
@@ -1,4 +1,4 @@
-package com.cf.imes.module.executor.util.excel;
+package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
import com.alibaba.excel.EasyExcel;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
@@ -28,7 +28,8 @@ public class OrderExcelUtil extends ExcelUtils {
throw new IOException("文件大小为 0");
} else {
//读取文件内容
- EasyExcel.read(file.getInputStream(), head, excelListener).headRowNumber(7).sheet(0).doRead();
+ EasyExcel.read(file.getInputStream(), head, excelListener).
+ headRowNumber(7).sheet(0).doRead();
//获取读取的数据
List list = excelListener.getDatas();
@@ -41,7 +42,7 @@ public class OrderExcelUtil extends ExcelUtils {
public static Map getValue() {
Map err = new HashMap<>();
- err.put("err", value);
+ err.put("readErr", value);
return err;
}
}
diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPlateImportExcelVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java
similarity index 73%
rename from cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPlateImportExcelVO.java
rename to cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java
index fe1969692..1907b1b73 100644
--- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPlateImportExcelVO.java
+++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/files/excel/OrderPlateImportExcelVO.java
@@ -1,11 +1,8 @@
-package com.cf.imes.module.executor.controller.admin.order.vo.order;
+package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
import com.alibaba.excel.annotation.ExcelProperty;
-import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.excel.core.annotations.DictFormat;
import com.cf.imes.framework.excel.core.convert.DictConvert;
-import com.cf.imes.module.system.api.dict.DictDataApi;
-import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO;
import com.cf.imes.module.system.enums.DictTypeConstants;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -15,9 +12,11 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
-import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.validation.constraints.NotNull;
/**
* 生产单 Excel 导入 VO
@@ -33,9 +32,10 @@ public class OrderPlateImportExcelVO {
@JsonIgnore
private int ordinal;
- @ExcelProperty(value = "类型")
+ @ExcelProperty(value = "类型", converter = DictConvert.class)
@JsonIgnore
- private String goodType;
+ @DictFormat(DictTypeConstants.PRODUCT_TYPE)
+ private int goodType;
@ExcelProperty(value = "物料编码")
@JsonIgnore
@@ -75,6 +75,7 @@ public class OrderPlateImportExcelVO {
@ExcelProperty(value = "数量")
@JsonIgnore
+ @NotNull
private Double goodsNumber;
@ExcelProperty(value = "房间")
@@ -142,14 +143,14 @@ public class OrderPlateImportExcelVO {
@DictFormat(DictTypeConstants.YPOGRAPHY_TYPE)
private int typographicFace;
- @ExcelProperty(value = "纹路")
+ @ExcelProperty(value = "纹路", converter = DictConvert.class)
@JsonIgnore
-// @DictFormat(DictTypeConstants.GRAIN_TYPE)
+ @DictFormat(DictTypeConstants.GRAIN_TYPE)
private int texture;
- @ExcelProperty(value = "开门方向")
+ @ExcelProperty(value = "开门方向", converter = DictConvert.class)
@JsonIgnore
-// @DictFormat(DictTypeConstants.DOOR_OPENING_DIRECTIONS)
+ @DictFormat(DictTypeConstants.DOOR_OPENING_DIRECTIONS)
private int openDoorType;
@ExcelProperty(value = "备注1")
@@ -187,24 +188,23 @@ public class OrderPlateImportExcelVO {
private String remark = remarkJSON();
@JsonIgnore
- private Long id;
+ private Long id;//生产单Id
@JsonIgnore
public boolean isValidParts() {
- return (isNonEmpty(goodsId) || isNonEmpty(goodsName)) && (goodsNumber != null && goodsNumber> 0) && (isNonEmpty(model) || isNonEmpty(spec));
+ return (isNonEmpty(goodsId) || isNonEmpty(goodsName)) && (goodsNumber != null && goodsNumber > 0) && (isNonEmpty(model) || isNonEmpty(spec));
}
@JsonIgnore
public boolean isValidRawGoods() {
- isSynthesis(synthesis);
return (isNonEmpty(goodsId) || isNonEmpty(goodsName) || isNonEmpty(material) || isNonEmpty(color) || isNonEmpty(spec)) &&
- (goodsNumber != null && goodsNumber> 0) &&
- ((height != null && height.compareTo(BigDecimal.ZERO)> 0 && width != null && width.compareTo(BigDecimal.ZERO) > 0) ||
+ (goodsNumber != null && goodsNumber > 0) &&
+ ((height != null && height.compareTo(BigDecimal.ZERO) > 0 && width != null && width.compareTo(BigDecimal.ZERO) > 0) ||
(splitHeight != null && splitHeight.compareTo(BigDecimal.ZERO) > 0 && splitWidth != null && splitWidth.compareTo(BigDecimal.ZERO) > 0)) &&
- sealLeft != null && sealLeft .compareTo(BigDecimal.ZERO)> 0 &&
- sealRight != null && sealRight .compareTo(BigDecimal.ZERO)> 0 &&
- sealUp != null && sealUp .compareTo(BigDecimal.ZERO)> 0 &&
- sealDown != null && sealDown .compareTo(BigDecimal.ZERO)> 0 ;
+ sealLeft != null && sealLeft.compareTo(BigDecimal.ZERO) > 0 &&
+ sealRight != null && sealRight.compareTo(BigDecimal.ZERO) > 0 &&
+ sealUp != null && sealUp.compareTo(BigDecimal.ZERO) > 0 &&
+ sealDown != null && sealDown.compareTo(BigDecimal.ZERO) > 0;
}
private boolean isNonEmpty(String value) {
@@ -218,17 +218,8 @@ public class OrderPlateImportExcelVO {
return value;
}
- //使用字典
- //判断类型,首先存在 板材、配件、组件、生产耗材、其他;
-
- //排版面判断 0正面,1反面,2随意面;
-
- //纹路判断 0正纹,1可翻转(无纹),2反纹;
-
- //开门方向判断 0柜体板(非门板),1左开,2右开,3上翻,4下翻;
-
//备注转json数据
- public String remarkJSON(){
+ public String remarkJSON() {
ObjectMapper objectMapper = new ObjectMapper();
// 设置实体类字段的值
try {
@@ -240,17 +231,8 @@ public class OrderPlateImportExcelVO {
}
}
- // excel中字典转换
- private int getDictValue(String dictType, int index) {
- int value = 0;
- if(index == 1){
-// CommonResult dictDataRespDTOCommonResult = dictDataApi.getDictData(dictType, label);
- }else if(index == 2){
-
- }else if(index == 3){
-
- }
- return value;
+ public Boolean isVail(){
+ return (isValidParts() && isValidRawGoods());
}
-
}
+
diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/DictTypeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/DictTypeConstants.java
index 52d19ad45..e96be5a07 100644
--- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/DictTypeConstants.java
+++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/DictTypeConstants.java
@@ -29,4 +29,5 @@ public interface DictTypeConstants {
String YPOGRAPHY_TYPE = "ypographyType"; // 排版面
String GRAIN_TYPE = "grainType";//纹路类型
String DOOR_OPENING_DIRECTIONS = "doorOpeningDirections";//开门方向
+ String PRODUCT_TYPE = "productType";//产品类型
}