mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
生产单新增
This commit is contained in:
+1
-1
@@ -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, "生产单导入错误");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
@@ -10,28 +7,24 @@
|
||||
</parent>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>cf-module-prod-executor-biz</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- Spring Cloud 基础 -->
|
||||
<!-- Spring Cloud 基础 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 依赖服务 -->
|
||||
<!-- 依赖服务 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-module-prod-executor-api</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 业务组件 -->
|
||||
<!-- 业务组件 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-banner</artifactId>
|
||||
@@ -48,92 +41,92 @@
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-biz-error-code</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Web 相关 -->
|
||||
<!-- Web 相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- DB 相关 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.apache.shardingsphere</groupId>
|
||||
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
|
||||
<version>4.1.0</version>
|
||||
</dependency>
|
||||
-->
|
||||
<!-- DB 相关 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.apache.shardingsphere</groupId>
|
||||
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
|
||||
<version>4.1.0</version>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-mybatis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RPC 远程调用相关 -->
|
||||
<!-- RPC 远程调用相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-rpc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Registry 注册中心相关 -->
|
||||
<!-- Registry 注册中心相关 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Config 配置中心相关 -->
|
||||
<!-- Config 配置中心相关 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Test 测试相关 -->
|
||||
<!-- Test 测试相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- 工具类相关 -->
|
||||
<!-- 工具类相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-excel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.smallbun.screw</groupId>
|
||||
<artifactId>screw-core</artifactId> <!-- 实现数据库文档 -->
|
||||
<artifactId>screw-core</artifactId>
|
||||
<!-- 实现数据库文档 -->
|
||||
</dependency>
|
||||
|
||||
<!-- 监控相关 -->
|
||||
<!-- 监控相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-monitor</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>de.codecentric</groupId>
|
||||
<artifactId>spring-boot-admin-starter-server</artifactId> <!-- 实现 Spring Boot Admin Server 服务端 -->
|
||||
<artifactId>spring-boot-admin-starter-server</artifactId>
|
||||
<!-- 实现 Spring Boot Admin Server 服务端 -->
|
||||
</dependency>
|
||||
|
||||
<!-- 三方云服务相关 -->
|
||||
<!-- 三方云服务相关 -->
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-file</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.vavr</groupId>
|
||||
<artifactId>vavr</artifactId>
|
||||
<version>0.10.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.groovy</groupId>
|
||||
<artifactId>groovy</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-biz-data-permission</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<!-- 设置构建的 jar 包名 -->
|
||||
<!-- 设置构建的 jar 包名 -->
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<!-- 打包 -->
|
||||
<!-- 打包 -->
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
@@ -141,12 +134,12 @@
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
|
||||
<goal>repackage</goal>
|
||||
<!-- 将引入的 jar 打入其中 -->
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
+20
-17
@@ -1,9 +1,7 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.module.executor.util.OrderExcelUtil;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@@ -18,7 +16,6 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
|
||||
@@ -39,7 +36,6 @@ import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.service.order.OrderService;
|
||||
|
||||
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -155,24 +151,31 @@ public class OrderController {
|
||||
}
|
||||
|
||||
@PostMapping("/import")
|
||||
@Operation(summary = "导入生产单")
|
||||
@Operation(summary = "导入生产单新增")
|
||||
@Parameters({
|
||||
@Parameter(name = "file", description = "Excel 文件", required = true),
|
||||
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true"),
|
||||
@Parameter(name = "upload", description = "是否上传表头、表体(1,只上传表头;2,包含板材信息", required = true)
|
||||
@Parameter(name = "upload", description = "是否只上传表头,默认为只上传表头", example = "true")
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('system:user:import')")
|
||||
public void importExcel(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
|
||||
@RequestParam(value = "upload") int upload,
|
||||
@Valid @RequestBody OrderSaveReqVO createReqVO) throws Exception {
|
||||
success(orderService.createOrder(createReqVO));
|
||||
// 有板材,返回包含金额,出现错误进行上传
|
||||
if (upload == 2) {
|
||||
// BigDecimal money = orderService.importOrderList(file, updateSupport , updateSupport);
|
||||
}
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:import')")
|
||||
public CommonResult<OrderImportRespVO> importExcel(@RequestPart("file") MultipartFile file,
|
||||
@RequestParam(value = "upload", required = false, defaultValue = "true") Boolean upload,
|
||||
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
|
||||
|
||||
return;
|
||||
OrderImportRespVO orderImportRespVO = orderService.importOrderList(upload , file, createReqVO);
|
||||
return success(orderImportRespVO);
|
||||
}
|
||||
|
||||
//生产单信息修改
|
||||
@PostMapping("/addPlates")
|
||||
@Operation(summary = "生产单添加板材")
|
||||
@Parameters({
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:update')")
|
||||
public CommonResult updateOrder(@RequestParam("id") Long id,
|
||||
@RequestPart("file") MultipartFile file){
|
||||
// orderService.updateOrder(updateReq);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order.vo.order;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.cf.imes.framework.excel.core.annotations.DictFormat;
|
||||
import com.cf.imes.module.system.enums.DictTypeConstants;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生产单 Excel 导入 VO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
|
||||
public class OrderImportExcelVO {
|
||||
@ExcelProperty("自定义单号")
|
||||
private String customOrderNo;
|
||||
|
||||
@ExcelProperty("客户")
|
||||
private String customer;
|
||||
|
||||
@ExcelProperty("经销商")
|
||||
private String dealer;
|
||||
|
||||
@ExcelProperty(value = "客户地址")
|
||||
private String address;
|
||||
|
||||
@ExcelProperty(value = "经销商电话")
|
||||
private String dealerPhoneNumber;
|
||||
|
||||
@ExcelProperty(value = "客户电话")
|
||||
private String phoneNumber;
|
||||
|
||||
@ExcelProperty(value = "业务员")
|
||||
private String salesman;
|
||||
|
||||
@ExcelProperty(value = "交付日期")
|
||||
private LocalDateTime deliveryDate;
|
||||
|
||||
@ExcelProperty(value = "拆单员")
|
||||
private String splitter;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
private List<String> remarkLists;
|
||||
}
|
||||
+3
-3
@@ -17,11 +17,11 @@ import java.util.Map;
|
||||
@Builder
|
||||
public class OrderImportRespVO {
|
||||
@Schema(description = "创建成功的生产单名数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> createUsernames;
|
||||
private List<String> createOrder;
|
||||
|
||||
@Schema(description = "更新成功的生产单名数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> updateUsernames;
|
||||
private List<String> updateOrder;
|
||||
|
||||
@Schema(description = "导入失败的生产单集合,key 为生产单名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Map<String, String> failureUsernames;
|
||||
private Map<String, String> failureOrder;
|
||||
}
|
||||
|
||||
+2
-2
@@ -31,10 +31,10 @@ public class OrderPageReqVO extends PageParam {
|
||||
private Integer sort;
|
||||
|
||||
@Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel", example = "1")
|
||||
private Boolean dataType;
|
||||
private Integer dataType;
|
||||
|
||||
@Schema(description = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成", example = "1")
|
||||
private Boolean status;
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "自定义单号")
|
||||
private String customOrderNo;
|
||||
|
||||
+110
-22
@@ -1,8 +1,8 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order.vo.order;
|
||||
|
||||
import com.cf.imes.framework.excel.core.annotations.DictFormat;
|
||||
import com.cf.imes.module.system.enums.DictTypeConstants;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@@ -21,95 +21,124 @@ import java.math.BigDecimal;
|
||||
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
|
||||
public class OrderPlateImportExcelVO {
|
||||
@ExcelProperty(value = "序号")
|
||||
@JsonIgnore
|
||||
private int ordinal;
|
||||
|
||||
@ExcelProperty(value = "类型")
|
||||
private String type;
|
||||
@JsonIgnore
|
||||
private String goodType;
|
||||
|
||||
@ExcelProperty(value = "物料编码")
|
||||
private String rawGoodsId;
|
||||
@JsonIgnore
|
||||
private String goodsId;
|
||||
|
||||
@ExcelProperty(value = "商品名称")
|
||||
@JsonIgnore
|
||||
private String goodsName;
|
||||
|
||||
@ExcelProperty(value = "材质")
|
||||
@JsonIgnore
|
||||
private String material;
|
||||
|
||||
@ExcelProperty(value = "颜色")
|
||||
@JsonIgnore
|
||||
private String color;
|
||||
|
||||
@ExcelProperty(value = "厂家")
|
||||
@JsonIgnore
|
||||
private String factory;
|
||||
|
||||
@ExcelProperty(value = "品牌")
|
||||
@JsonIgnore
|
||||
private String brand;
|
||||
|
||||
@ExcelProperty(value = "规格")
|
||||
private String goodsModel;
|
||||
|
||||
@ExcelProperty(value = "型号")
|
||||
private String goodsSpecs;
|
||||
@JsonIgnore
|
||||
private String model;
|
||||
|
||||
@ExcelProperty(value = "规格")
|
||||
@JsonIgnore
|
||||
private String spec;
|
||||
|
||||
@ExcelProperty(value = "单位")
|
||||
private String goodsUnit;
|
||||
@JsonIgnore
|
||||
private String unit;
|
||||
|
||||
@ExcelProperty(value = "数量")
|
||||
private BigDecimal goodsNumber;
|
||||
@JsonIgnore
|
||||
private Double goodsNumber;
|
||||
|
||||
@ExcelProperty(value = "房间")
|
||||
@JsonIgnore
|
||||
private String roomsName;
|
||||
|
||||
@ExcelProperty(value = "柜体")
|
||||
@JsonIgnore
|
||||
private String cabinetsName;
|
||||
|
||||
@ExcelProperty(value = "板名称")
|
||||
private String platesName;
|
||||
@JsonIgnore
|
||||
private String name;
|
||||
|
||||
@ExcelProperty(value = "板号")
|
||||
private String platesNumber;
|
||||
@JsonIgnore
|
||||
private String plateNo;
|
||||
|
||||
@ExcelProperty(value = "成品长")
|
||||
private BigDecimal productLength;
|
||||
@JsonIgnore
|
||||
private BigDecimal height;
|
||||
|
||||
@ExcelProperty(value = "成品宽")
|
||||
private BigDecimal productWidth;
|
||||
@JsonIgnore
|
||||
private BigDecimal width;
|
||||
|
||||
@ExcelProperty(value = "开料长")
|
||||
private BigDecimal actualLength;
|
||||
@JsonIgnore
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
@ExcelProperty(value = "开料宽")
|
||||
private BigDecimal actualWidth;
|
||||
@JsonIgnore
|
||||
private BigDecimal splitWidth;
|
||||
|
||||
@ExcelProperty(value = "厚")
|
||||
private BigDecimal thickness;
|
||||
@JsonIgnore
|
||||
private BigDecimal splitThickness;
|
||||
|
||||
@ExcelProperty(value = "左封边")
|
||||
@JsonIgnore
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
@ExcelProperty(value = "右封边")
|
||||
@JsonIgnore
|
||||
private BigDecimal sealRight;
|
||||
|
||||
@ExcelProperty(value = "上封边")
|
||||
private BigDecimal sealAbove;
|
||||
@JsonIgnore
|
||||
private BigDecimal sealUp;
|
||||
|
||||
@ExcelProperty(value = "下封边")
|
||||
private BigDecimal sealUnder;
|
||||
@JsonIgnore
|
||||
private BigDecimal sealDown;
|
||||
|
||||
@ExcelProperty(value = "组合类型")
|
||||
@JsonIgnore
|
||||
private String synthesis;
|
||||
|
||||
@ExcelProperty(value = "组合名称")
|
||||
@JsonIgnore
|
||||
private String combinationName;
|
||||
|
||||
@ExcelProperty(value = "排版面")
|
||||
@JsonIgnore
|
||||
private int typographicFace;
|
||||
|
||||
@ExcelProperty(value = "纹路")
|
||||
private int grain;
|
||||
@JsonIgnore
|
||||
private int texture;
|
||||
|
||||
@ExcelProperty(value = "开门方向")
|
||||
@DictFormat(DictTypeConstants.USER_SEX)
|
||||
private int openingDirections;
|
||||
@JsonIgnore
|
||||
private int openDoorType;
|
||||
|
||||
@ExcelProperty(value = "备注1")
|
||||
private String remark1;
|
||||
@@ -141,4 +170,63 @@ public class OrderPlateImportExcelVO {
|
||||
@ExcelProperty(value = "备注10")
|
||||
private String remark10;
|
||||
|
||||
@ExcelProperty(value = "备注")
|
||||
@JsonIgnore
|
||||
private String remark = remarkJSON();
|
||||
|
||||
@JsonIgnore
|
||||
private Long id;
|
||||
|
||||
@JsonIgnore
|
||||
public boolean isValidParts() {
|
||||
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) ||
|
||||
(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 ;
|
||||
}
|
||||
|
||||
private boolean isNonEmpty(String value) {
|
||||
return value != null && !value.trim().isEmpty();
|
||||
}
|
||||
|
||||
private String isSynthesis(String value) {
|
||||
if (value == null || value.trim().isEmpty()) {
|
||||
return "柜体";
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
//使用字典
|
||||
//判断类型,首先存在 板材、配件、组件、生产耗材、其他;
|
||||
|
||||
//排版面判断 0正面,1反面,2随意面;
|
||||
|
||||
//纹路判断 0正纹,1可翻转(无纹),2反纹;
|
||||
|
||||
//开门方向判断 0柜体板(非门板),1左开,2右开,3上翻,4下翻;
|
||||
|
||||
//备注转json数据
|
||||
public String remarkJSON(){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
// 设置实体类字段的值
|
||||
|
||||
try {
|
||||
String json = objectMapper.writeValueAsString(this);
|
||||
return json;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return "{}";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -37,11 +37,11 @@ public class OrderRespVO {
|
||||
|
||||
@Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("CAD数据类型,1CAD 2WebCAD 3Excel")
|
||||
private Boolean dataType;
|
||||
private Integer dataType;
|
||||
|
||||
@Schema(description = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成")
|
||||
private Boolean status;
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "自定义单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("自定义单号")
|
||||
|
||||
+2
-2
@@ -34,11 +34,11 @@ public class OrderSaveReqVO {
|
||||
|
||||
@Schema(description = "CAD数据类型,1CAD 2WebCAD 3Excel", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "CAD数据类型,1CAD 2WebCAD 3Excel不能为空")
|
||||
private Boolean dataType;
|
||||
private Integer dataType;
|
||||
|
||||
@Schema(description = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成不能为空")
|
||||
private Boolean status;
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "自定义单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "自定义单号不能为空")
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.cf.imes.module.executor.controller.admin.orderParts.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Schema(description = "管理后台 - 生产配件导入 Response VO")
|
||||
@Data
|
||||
@Builder
|
||||
public class OrderPartsImportRespVO {
|
||||
@Schema(description = "创建成功的生产配件数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List< OrderPartsSaveReqVO> createOrderParts;
|
||||
|
||||
@Schema(description = "更新成功的生产配件数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> updateOrderParts;
|
||||
|
||||
@Schema(description = "导入失败的生产配件集合,key 为生产单名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Map<String, String> failureOrderParts;
|
||||
}
|
||||
+1
-1
@@ -16,7 +16,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
|
||||
public class OrderPartsPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "生产单号")
|
||||
private Long orderNo;
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "商品ID", example = "1195")
|
||||
private String goodsId;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ public class OrderPartsRespVO {
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("生产单号")
|
||||
private Long orderNo;
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1195")
|
||||
@ExcelProperty("商品ID")
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ public class OrderPartsSaveReqVO {
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "生产单号不能为空")
|
||||
private Long orderNo;
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1195")
|
||||
@NotNull(message = "商品ID不能为空")
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.cf.imes.module.executor.controller.admin.plate.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Schema(description = "管理后台 - 生产小板导入 Response VO")
|
||||
@Data
|
||||
@Builder
|
||||
public class PlateImportRespVO {
|
||||
@Schema(description = "创建成功的生产小板数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<PlateSaveReqVO> createPlates;
|
||||
|
||||
@Schema(description = "更新成功的生产小板数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> updatePlates;
|
||||
|
||||
@Schema(description = "导入失败的生产小板集合,key 为生产单名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Map<String, String> failurePlates;
|
||||
}
|
||||
+31
-24
@@ -4,6 +4,7 @@ import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
import java.math.BigDecimal;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@@ -15,50 +16,53 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
|
||||
@ToString(callSuper = true)
|
||||
public class PlatePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "生产单号", example = "17851")
|
||||
@Schema(description = "生产单号", example = "11087")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "板名称", example = "李四")
|
||||
@Schema(description = "板名称", example = "晨丰")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", example = "2")
|
||||
@Schema(description = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成")
|
||||
private String plateNo;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", example = "1")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "商品 ID", example = "28756")
|
||||
@Schema(description = "商品 ID", example = "14195")
|
||||
private String goodsId;
|
||||
|
||||
@Schema(description = "宽度")
|
||||
private Double width;
|
||||
private BigDecimal width;
|
||||
|
||||
@Schema(description = "高度")
|
||||
private Double height;
|
||||
private BigDecimal height;
|
||||
|
||||
@Schema(description = "厚度")
|
||||
private Double thickness;
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "拆单宽度")
|
||||
private Double splitWidth;
|
||||
private BigDecimal splitWidth;
|
||||
|
||||
@Schema(description = "拆单高度")
|
||||
private Double splitHeight;
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
@Schema(description = "拆单厚度")
|
||||
private Double splitThickness;
|
||||
private BigDecimal splitThickness;
|
||||
|
||||
@Schema(description = "左封边厚度")
|
||||
private Double sealLeft;
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
@Schema(description = "右封边厚度")
|
||||
private Double sealRight;
|
||||
private BigDecimal sealRight;
|
||||
|
||||
@Schema(description = "上封边厚度")
|
||||
private Double sealUp;
|
||||
private BigDecimal sealUp;
|
||||
|
||||
@Schema(description = "下封边厚度")
|
||||
private Double sealDown;
|
||||
private BigDecimal sealDown;
|
||||
|
||||
@Schema(description = "面积")
|
||||
private Double area;
|
||||
private BigDecimal area;
|
||||
|
||||
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹")
|
||||
private Integer texture;
|
||||
@@ -69,29 +73,29 @@ public class PlatePageReqVO extends PageParam {
|
||||
@Schema(description = "排孔类型,0 正纹 1 反面 2 随意面")
|
||||
private Integer holeArrange;
|
||||
|
||||
@Schema(description = "异型孔数量", example = "32490")
|
||||
@Schema(description = "异型孔数量", example = "28477")
|
||||
private Short unregularPointCount;
|
||||
|
||||
@Schema(description = "正面孔数量", example = "4077")
|
||||
@Schema(description = "正面孔数量", example = "20823")
|
||||
private Short frontHoleCount;
|
||||
|
||||
@Schema(description = "背面孔数量", example = "2405")
|
||||
@Schema(description = "背面孔数量", example = "3441")
|
||||
private Short backHoleCount;
|
||||
|
||||
@Schema(description = "侧面孔数量", example = "1493")
|
||||
@Schema(description = "侧面孔数量", example = "25509")
|
||||
private Short sideHoleCount;
|
||||
|
||||
@Schema(description = "正面造型量", example = "23489")
|
||||
@Schema(description = "正面造型量", example = "31547")
|
||||
private Short frontModelCount;
|
||||
|
||||
@Schema(description = "背面造型量", example = "5176")
|
||||
@Schema(description = "背面造型量", example = "26725")
|
||||
private Short backModelCount;
|
||||
|
||||
@Schema(description = "是否门板")
|
||||
private Boolean isDoor;
|
||||
|
||||
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", example = "2")
|
||||
private Boolean openDoorType;
|
||||
private Integer openDoorType;
|
||||
|
||||
@Schema(description = "异型偏移 x")
|
||||
private Double offsetX;
|
||||
@@ -102,15 +106,18 @@ public class PlatePageReqVO extends PageParam {
|
||||
@Schema(description = "是否孤形对角")
|
||||
private Boolean isArcAcross;
|
||||
|
||||
@Schema(description = "模块类型 ID", example = "15992")
|
||||
@Schema(description = "模块类型 ID", example = "12800")
|
||||
private Long moduleTypeId;
|
||||
|
||||
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", example = "1")
|
||||
private Boolean filterType;
|
||||
private Integer filterType;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "是否作废")
|
||||
private Boolean isCancel;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
+36
-27
@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.util.*;
|
||||
import java.math.BigDecimal;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
@@ -13,69 +14,73 @@ import com.alibaba.excel.annotation.*;
|
||||
@ExcelIgnoreUnannotated
|
||||
public class PlateRespVO {
|
||||
|
||||
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5782")
|
||||
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32523")
|
||||
@ExcelProperty("板件 ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17851")
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11087")
|
||||
@ExcelProperty("生产单号")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
|
||||
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
|
||||
@ExcelProperty("板名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@Schema(description = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成")
|
||||
private String plateNo;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("板类型,0 层板 1 立板 2 背板")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28756")
|
||||
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14195")
|
||||
@ExcelProperty("商品 ID")
|
||||
private String goodsId;
|
||||
|
||||
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("宽度")
|
||||
private Double width;
|
||||
private BigDecimal width;
|
||||
|
||||
@Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("高度")
|
||||
private Double height;
|
||||
private BigDecimal height;
|
||||
|
||||
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("厚度")
|
||||
private Double thickness;
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("拆单宽度")
|
||||
private Double splitWidth;
|
||||
private BigDecimal splitWidth;
|
||||
|
||||
@Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("拆单高度")
|
||||
private Double splitHeight;
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
@Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("拆单厚度")
|
||||
private Double splitThickness;
|
||||
private BigDecimal splitThickness;
|
||||
|
||||
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("左封边厚度")
|
||||
private Double sealLeft;
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("右封边厚度")
|
||||
private Double sealRight;
|
||||
private BigDecimal sealRight;
|
||||
|
||||
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("上封边厚度")
|
||||
private Double sealUp;
|
||||
private BigDecimal sealUp;
|
||||
|
||||
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("下封边厚度")
|
||||
private Double sealDown;
|
||||
private BigDecimal sealDown;
|
||||
|
||||
@Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("面积")
|
||||
private Double area;
|
||||
private BigDecimal area;
|
||||
|
||||
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("纹路类型,0 正纹 1 可翻转 2 反纹")
|
||||
@@ -89,27 +94,27 @@ public class PlateRespVO {
|
||||
@ExcelProperty("排孔类型,0 正纹 1 反面 2 随意面")
|
||||
private Integer holeArrange;
|
||||
|
||||
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "32490")
|
||||
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28477")
|
||||
@ExcelProperty("异型孔数量")
|
||||
private Short unregularPointCount;
|
||||
|
||||
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "4077")
|
||||
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20823")
|
||||
@ExcelProperty("正面孔数量")
|
||||
private Short frontHoleCount;
|
||||
|
||||
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "2405")
|
||||
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3441")
|
||||
@ExcelProperty("背面孔数量")
|
||||
private Short backHoleCount;
|
||||
|
||||
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1493")
|
||||
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "25509")
|
||||
@ExcelProperty("侧面孔数量")
|
||||
private Short sideHoleCount;
|
||||
|
||||
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "23489")
|
||||
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "31547")
|
||||
@ExcelProperty("正面造型量")
|
||||
private Short frontModelCount;
|
||||
|
||||
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5176")
|
||||
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "26725")
|
||||
@ExcelProperty("背面造型量")
|
||||
private Short backModelCount;
|
||||
|
||||
@@ -119,7 +124,7 @@ public class PlateRespVO {
|
||||
|
||||
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@ExcelProperty("开门类型,0 无 1 左 2 右 3 上 4 下")
|
||||
private Boolean openDoorType;
|
||||
private Integer openDoorType;
|
||||
|
||||
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("异型偏移 x")
|
||||
@@ -133,19 +138,23 @@ public class PlateRespVO {
|
||||
@ExcelProperty("是否孤形对角")
|
||||
private Boolean isArcAcross;
|
||||
|
||||
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15992")
|
||||
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12800")
|
||||
@ExcelProperty("模块类型 ID")
|
||||
private Long moduleTypeId;
|
||||
|
||||
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠")
|
||||
private Boolean filterType;
|
||||
private Integer filterType;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@Schema(description = "是否作废", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("是否作废")
|
||||
private Boolean isCancel;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
|
||||
+37
-27
@@ -4,73 +4,78 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - 生产单板件新增/修改 Request VO")
|
||||
@Data
|
||||
public class PlateSaveReqVO {
|
||||
|
||||
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5782")
|
||||
@Schema(description = "板件 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32523")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17851")
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11087")
|
||||
@NotNull(message = "生产单号不能为空")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
|
||||
@Schema(description = "板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
|
||||
@NotEmpty(message = "板名称不能为空")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@Schema(description = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "自定义板编号,设计有板编号,则保留设计板编号;设计没有且在机台设置中设置了自定义板编号规则,则按规则自动生成不能为空")
|
||||
private String plateNo;
|
||||
|
||||
@Schema(description = "板类型,0 层板 1 立板 2 背板", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "板类型,0 层板 1 立板 2 背板不能为空")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28756")
|
||||
@NotNull(message = "商品 ID不能为空")
|
||||
@Schema(description = "商品 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14195")
|
||||
@NotEmpty(message = "商品 ID不能为空")
|
||||
private String goodsId;
|
||||
|
||||
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "宽度不能为空")
|
||||
private Double width;
|
||||
private BigDecimal width;
|
||||
|
||||
@Schema(description = "高度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "高度不能为空")
|
||||
private Double height;
|
||||
private BigDecimal height;
|
||||
|
||||
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "厚度不能为空")
|
||||
private Double thickness;
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "拆单宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "拆单宽度不能为空")
|
||||
private Double splitWidth;
|
||||
private BigDecimal splitWidth;
|
||||
|
||||
@Schema(description = "拆单高度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "拆单高度不能为空")
|
||||
private Double splitHeight;
|
||||
private BigDecimal splitHeight;
|
||||
|
||||
@Schema(description = "拆单厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "拆单厚度不能为空")
|
||||
private Double splitThickness;
|
||||
private BigDecimal splitThickness;
|
||||
|
||||
@Schema(description = "左封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "左封边厚度不能为空")
|
||||
private Double sealLeft;
|
||||
private BigDecimal sealLeft;
|
||||
|
||||
@Schema(description = "右封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "右封边厚度不能为空")
|
||||
private Double sealRight;
|
||||
private BigDecimal sealRight;
|
||||
|
||||
@Schema(description = "上封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "上封边厚度不能为空")
|
||||
private Double sealUp;
|
||||
private BigDecimal sealUp;
|
||||
|
||||
@Schema(description = "下封边厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "下封边厚度不能为空")
|
||||
private Double sealDown;
|
||||
private BigDecimal sealDown;
|
||||
|
||||
@Schema(description = "面积", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "面积不能为空")
|
||||
private Double area;
|
||||
private BigDecimal area;
|
||||
|
||||
@Schema(description = "纹路类型,0 正纹 1 可翻转 2 反纹", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "纹路类型,0 正纹 1 可翻转 2 反纹不能为空")
|
||||
@@ -84,27 +89,27 @@ public class PlateSaveReqVO {
|
||||
@NotNull(message = "排孔类型,0 正纹 1 反面 2 随意面不能为空")
|
||||
private Integer holeArrange;
|
||||
|
||||
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "32490")
|
||||
@Schema(description = "异型孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28477")
|
||||
@NotNull(message = "异型孔数量不能为空")
|
||||
private Short unregularPointCount;
|
||||
|
||||
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "4077")
|
||||
@Schema(description = "正面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20823")
|
||||
@NotNull(message = "正面孔数量不能为空")
|
||||
private Short frontHoleCount;
|
||||
|
||||
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "2405")
|
||||
@Schema(description = "背面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "3441")
|
||||
@NotNull(message = "背面孔数量不能为空")
|
||||
private Short backHoleCount;
|
||||
|
||||
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1493")
|
||||
@Schema(description = "侧面孔数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "25509")
|
||||
@NotNull(message = "侧面孔数量不能为空")
|
||||
private Short sideHoleCount;
|
||||
|
||||
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "23489")
|
||||
@Schema(description = "正面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "31547")
|
||||
@NotNull(message = "正面造型量不能为空")
|
||||
private Short frontModelCount;
|
||||
|
||||
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5176")
|
||||
@Schema(description = "背面造型量", requiredMode = Schema.RequiredMode.REQUIRED, example = "26725")
|
||||
@NotNull(message = "背面造型量不能为空")
|
||||
private Short backModelCount;
|
||||
|
||||
@@ -114,7 +119,7 @@ public class PlateSaveReqVO {
|
||||
|
||||
@Schema(description = "开门类型,0 无 1 左 2 右 3 上 4 下", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@NotNull(message = "开门类型,0 无 1 左 2 右 3 上 4 下不能为空")
|
||||
private Boolean openDoorType;
|
||||
private Integer openDoorType;
|
||||
|
||||
@Schema(description = "异型偏移 x", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "异型偏移 x不能为空")
|
||||
@@ -128,15 +133,20 @@ public class PlateSaveReqVO {
|
||||
@NotNull(message = "是否孤形对角不能为空")
|
||||
private Boolean isArcAcross;
|
||||
|
||||
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15992")
|
||||
@Schema(description = "模块类型 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12800")
|
||||
@NotNull(message = "模块类型 ID不能为空")
|
||||
private Long moduleTypeId;
|
||||
|
||||
@Schema(description = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠不能为空")
|
||||
private Boolean filterType;
|
||||
private Integer filterType;
|
||||
|
||||
@Schema(description = "备注", example = "你说的对")
|
||||
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
|
||||
@NotEmpty(message = "备注不能为空")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "是否作废", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "是否作废不能为空")
|
||||
private Boolean isCancel;
|
||||
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
package com.cf.imes.module.executor.controller.admin.rawgoods;
|
||||
|
||||
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.rawgoods.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import com.cf.imes.module.executor.service.rawgoods.RawGoodsService;
|
||||
|
||||
@Tag(name = "管理后台 - 生产单设计商品表 order_raw_goods_{N}")
|
||||
@RestController
|
||||
@RequestMapping("/executor/raw-goods")
|
||||
@Validated
|
||||
public class RawGoodsController {
|
||||
|
||||
@Resource
|
||||
private RawGoodsService rawGoodsService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建生产单设计商品表 order_raw_goods_{N}")
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:create')")
|
||||
public CommonResult<Long> createRawGoods(@Valid @RequestBody RawGoodsSaveReqVO createReqVO) {
|
||||
return success(rawGoodsService.createRawGoods(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新生产单设计商品表 order_raw_goods_{N}")
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:update')")
|
||||
public CommonResult<Boolean> updateRawGoods(@Valid @RequestBody RawGoodsSaveReqVO updateReqVO) {
|
||||
rawGoodsService.updateRawGoods(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产单设计商品表 order_raw_goods_{N}")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:delete')")
|
||||
public CommonResult<Boolean> deleteRawGoods(@RequestParam("id") Long id) {
|
||||
rawGoodsService.deleteRawGoods(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得生产单设计商品表 order_raw_goods_{N}")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:query')")
|
||||
public CommonResult<RawGoodsRespVO> getRawGoods(@RequestParam("id") Long id) {
|
||||
RawGoodsDO rawGoods = rawGoodsService.getRawGoods(id);
|
||||
return success(BeanUtils.toBean(rawGoods, RawGoodsRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得生产单设计商品表 order_raw_goods_{N}分页")
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:query')")
|
||||
public CommonResult<PageResult<RawGoodsRespVO>> getRawGoodsPage(@Valid RawGoodsPageReqVO pageReqVO) {
|
||||
PageResult<RawGoodsDO> pageResult = rawGoodsService.getRawGoodsPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, RawGoodsRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出生产单设计商品表 order_raw_goods_{N} Excel")
|
||||
@PreAuthorize("@ss.hasPermission('executor:raw-goods:export')")
|
||||
@OperateLog(type = EXPORT)
|
||||
public void exportRawGoodsExcel(@Valid RawGoodsPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<RawGoodsDO> list = rawGoodsService.getRawGoodsPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "生产单设计商品表 order_raw_goods_{N}.xls", "数据", RawGoodsRespVO.class,
|
||||
BeanUtils.toBean(list, RawGoodsRespVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.cf.imes.module.executor.controller.admin.rawgoods.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Schema(description = "管理后台 - 生产板材导入 Response VO")
|
||||
@Data
|
||||
@Builder
|
||||
public class RawGoodsImportRespVO {
|
||||
@Schema(description = "创建成功的生产板材数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> createRawGoods;
|
||||
|
||||
@Schema(description = "更新成功的生产板材数组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private List<String> updateRawGoods;
|
||||
|
||||
@Schema(description = "导入失败的生产板材集合,key 为生产单名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private Map<String, String> failureRawGoods;
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.cf.imes.module.executor.controller.admin.rawgoods.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 = "管理后台 - 生产单设计商品表 order_raw_goods_{N}分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class RawGoodsPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "生产单号", example = "8905")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "设计端商品编码", example = "28930")
|
||||
private String rawGoodsId;
|
||||
|
||||
@Schema(description = "设计端商品名称", example = "赵六")
|
||||
private String goodsName;
|
||||
|
||||
@Schema(description = "材质")
|
||||
private String material;
|
||||
|
||||
@Schema(description = "颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "厚度")
|
||||
private Double thickness;
|
||||
|
||||
@Schema(description = "价格", example = "3872")
|
||||
private Double price;
|
||||
|
||||
@Schema(description = "品牌")
|
||||
private String brand;
|
||||
|
||||
@Schema(description = "规格")
|
||||
private String spec;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package com.cf.imes.module.executor.controller.admin.rawgoods.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 = "管理后台 - 生产单设计商品表 order_raw_goods_{N} Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class RawGoodsRespVO {
|
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3090")
|
||||
@ExcelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8905")
|
||||
@ExcelProperty("生产单号")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "设计端商品编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "28930")
|
||||
@ExcelProperty("设计端商品编码")
|
||||
private String rawGoodsId;
|
||||
|
||||
@Schema(description = "设计端商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
|
||||
@ExcelProperty("设计端商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("材质")
|
||||
private String material;
|
||||
|
||||
@Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("厚度")
|
||||
private Double thickness;
|
||||
|
||||
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3872")
|
||||
@ExcelProperty("价格")
|
||||
private Double price;
|
||||
|
||||
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("品牌")
|
||||
private String brand;
|
||||
|
||||
@Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("规格")
|
||||
private String spec;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.cf.imes.module.executor.controller.admin.rawgoods.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 生产单设计商品表 order_raw_goods_{N}新增/修改 Request VO")
|
||||
@Data
|
||||
public class RawGoodsSaveReqVO {
|
||||
|
||||
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3090")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8905")
|
||||
@NotNull(message = "生产单号不能为空")
|
||||
private Long orderId;
|
||||
|
||||
@Schema(description = "设计端商品编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "28930")
|
||||
@NotEmpty(message = "设计端商品编码不能为空")
|
||||
private String rawGoodsId;
|
||||
|
||||
@Schema(description = "设计端商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
|
||||
@NotEmpty(message = "设计端商品名称不能为空")
|
||||
private String goodsName;
|
||||
|
||||
@Schema(description = "材质", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "材质不能为空")
|
||||
private String material;
|
||||
|
||||
@Schema(description = "颜色", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "颜色不能为空")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "厚度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "厚度不能为空")
|
||||
private Double thickness;
|
||||
|
||||
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3872")
|
||||
@NotNull(message = "价格不能为空")
|
||||
private Double price;
|
||||
|
||||
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "品牌不能为空")
|
||||
private String brand;
|
||||
|
||||
@Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "规格不能为空")
|
||||
private String spec;
|
||||
|
||||
}
|
||||
+2
-2
@@ -48,11 +48,11 @@ public class OrderDO extends OrganBaseDO {
|
||||
/**
|
||||
* CAD数据类型,1CAD 2WebCAD 3Excel
|
||||
*/
|
||||
private Boolean dataType;
|
||||
private Integer dataType;
|
||||
/**
|
||||
* 订单状态,0未排单1已排单2生产中3加工完成4打包完成5入库完成6出库完成
|
||||
*/
|
||||
private Boolean status;
|
||||
private Integer status;
|
||||
/**
|
||||
* 自定义单号
|
||||
*/
|
||||
|
||||
+3
-2
@@ -59,11 +59,12 @@ public class OrderBodyDO extends BaseDO {
|
||||
/**
|
||||
* 板材数量
|
||||
*/
|
||||
private Short plateNum;
|
||||
private Double plateNum;
|
||||
/**
|
||||
* 异型数量
|
||||
*/
|
||||
private Short unregularNum;
|
||||
private Double unregularNum;
|
||||
|
||||
/**
|
||||
* 文件名
|
||||
*/
|
||||
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.orderGroup;
|
||||
|
||||
import lombok.*;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 生产单加工组 DO
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@TableName("order_group")
|
||||
@KeySequence("order_group_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrderGroupDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 模块 ID
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 生产单号
|
||||
*/
|
||||
private Long orderId;
|
||||
/**
|
||||
* 柜体ID,上表中ID
|
||||
*/
|
||||
private Long bodyId;
|
||||
/**
|
||||
* 加工组类型id,依据同一生产单的同一房间的同一柜体的相同加工组类型,由服务端生成
|
||||
*/
|
||||
private Long groupId;
|
||||
/**
|
||||
* 加工组类型
|
||||
*/
|
||||
private String groupType;
|
||||
/**
|
||||
* 模块名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 模块宽度
|
||||
*/
|
||||
private Double width;
|
||||
/**
|
||||
* 模块高度
|
||||
*/
|
||||
private Double height;
|
||||
/**
|
||||
* 模块深度
|
||||
*/
|
||||
private Double depth;
|
||||
/**
|
||||
* 模块复制数量
|
||||
*/
|
||||
private Short multiNum;
|
||||
/**
|
||||
* 板材数量
|
||||
*/
|
||||
private Double plateNum;
|
||||
/**
|
||||
* 异型数量
|
||||
*/
|
||||
private Short unregularNum;
|
||||
/**
|
||||
* 文件名
|
||||
*/
|
||||
private String filename;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+4
-4
@@ -1,5 +1,6 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.orderParts;
|
||||
|
||||
import com.cf.imes.framework.mybatis.core.type.JsonLongSetTypeHandler;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -12,11 +13,10 @@ import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@TableName("order_parts_n")
|
||||
@KeySequence("order_parts_n_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@TableName("order_parts")
|
||||
@KeySequence("order_parts_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@@ -30,7 +30,7 @@ public class OrderPartsDO extends BaseDO {
|
||||
/**
|
||||
* 生产单号
|
||||
*/
|
||||
private Long orderNo;
|
||||
private Long orderId;
|
||||
/**
|
||||
* 商品ID
|
||||
*/
|
||||
|
||||
+2
-2
@@ -145,7 +145,7 @@ public class PlateDO extends BaseDO {
|
||||
/**
|
||||
* 开门类型,0 无 1 左 2 右 3 上 4 下
|
||||
*/
|
||||
private Boolean openDoorType;
|
||||
private Integer openDoorType;
|
||||
/**
|
||||
* 异型偏移 x
|
||||
*/
|
||||
@@ -165,7 +165,7 @@ public class PlateDO extends BaseDO {
|
||||
/**
|
||||
* 排单过滤类型,1 有挖穿造型 2 有挖穿孔 4 有二维刀路 8 可叠
|
||||
*/
|
||||
private Boolean filterType;
|
||||
private Integer filterType;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.cf.imes.module.executor.dal.dataobject.rawgoods;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* 生产单设计商品表 order_raw_goods_{N} DO
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@TableName("order_raw_goods")
|
||||
@KeySequence("order_raw_goods_n_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RawGoodsDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 生产单号
|
||||
*/
|
||||
private Long orderId;
|
||||
/**
|
||||
* 设计端商品编码
|
||||
*/
|
||||
private String rawGoodsId;
|
||||
/**
|
||||
* 设计端商品名称
|
||||
*/
|
||||
private String goodsName;
|
||||
/**
|
||||
* 材质
|
||||
*/
|
||||
private String material;
|
||||
/**
|
||||
* 颜色
|
||||
*/
|
||||
private String color;
|
||||
/**
|
||||
* 厚度
|
||||
*/
|
||||
private Double thickness;
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
private Double price;
|
||||
/**
|
||||
* 品牌
|
||||
*/
|
||||
private String brand;
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
private String spec;
|
||||
|
||||
}
|
||||
+2
-1
@@ -3,6 +3,7 @@ package com.cf.imes.module.executor.dal.mysql.orderBody;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 生产单柜体 Mapper
|
||||
@@ -12,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
|
||||
|
||||
|
||||
int updatePlateNumById(@Param("orderId") Long orderId, @Param("plateNum") Double plateNum);
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.cf.imes.module.executor.dal.mysql.orderGroup;
|
||||
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 生产单加工组 Mapper
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
|
||||
|
||||
int updatePlateNumById(@Param("orderId") Long orderId, @Param("plateNum") Double plateNum);
|
||||
|
||||
}
|
||||
+20
-1
@@ -2,12 +2,15 @@ package com.cf.imes.module.executor.dal.mysql.orderParts;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.*;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
|
||||
/**
|
||||
* 生产单配件表 order_parts_{N} Mapper
|
||||
@@ -19,7 +22,7 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
|
||||
|
||||
default PageResult<OrderPartsDO> selectPage(OrderPartsPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<OrderPartsDO>()
|
||||
.eqIfPresent(OrderPartsDO::getOrderNo, reqVO.getOrderNo())
|
||||
.eqIfPresent(OrderPartsDO::getOrderId, reqVO.getOrderId())
|
||||
.eqIfPresent(OrderPartsDO::getGoodsId, reqVO.getGoodsId())
|
||||
.likeIfPresent(OrderPartsDO::getName, reqVO.getName())
|
||||
.eqIfPresent(OrderPartsDO::getMaterial, reqVO.getMaterial())
|
||||
@@ -36,4 +39,20 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
|
||||
.orderByDesc(OrderPartsDO::getId));
|
||||
}
|
||||
|
||||
default OrderPartsImportRespVO importOrderPartsList(List<OrderPartsSaveReqVO> importOrderParts) {
|
||||
OrderPartsImportRespVO respVO = OrderPartsImportRespVO.builder().createOrderParts(new ArrayList<OrderPartsSaveReqVO>())
|
||||
.updateOrderParts(new ArrayList<>()).failureOrderParts(new LinkedHashMap<>()).build();
|
||||
importOrderParts.forEach(orderParts -> {
|
||||
try{
|
||||
OrderPartsDO orderPartsDO = BeanUtils.toBean(orderParts, OrderPartsDO.class);
|
||||
insert(orderPartsDO);
|
||||
orderParts.setId(orderPartsDO.getId());
|
||||
respVO.getCreateOrderParts().add(orderParts);
|
||||
}catch (ServiceException ex){
|
||||
respVO.getFailureOrderParts().put(orderParts.getName(), ex.getMessage());
|
||||
}
|
||||
});
|
||||
System.err.println("OrderPartsImportRespVO " + respVO);
|
||||
return respVO;
|
||||
}
|
||||
}
|
||||
+25
-1
@@ -5,18 +5,24 @@ import java.util.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OptimizeParamResVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlatePage;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateParam;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.PlateResList;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
|
||||
/**
|
||||
* 生产单板件 Mapper
|
||||
@@ -69,4 +75,22 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
List<PlateResList> selectPlateByPlanId(@Param(Constants.WRAPPER) Wrapper<PlateDO> wrapper);
|
||||
|
||||
List<PlateParam> selectPlateList(Long planId);
|
||||
|
||||
default PlateImportRespVO importPlateList(List<PlateSaveReqVO> importPlates , Long orderId) {
|
||||
PlateImportRespVO respVO = PlateImportRespVO.builder().createPlates(new ArrayList<PlateSaveReqVO>())
|
||||
.updatePlates(new ArrayList<>()).failurePlates(new LinkedHashMap<>()).build();
|
||||
importPlates.forEach(plateSaveReqVO -> {
|
||||
try {
|
||||
PlateDO plateDO = BeanUtils.toBean(plateSaveReqVO, PlateDO.class).setOrderId(orderId);
|
||||
insert(plateDO);
|
||||
plateSaveReqVO.setId(plateDO.getId());
|
||||
respVO.getCreatePlates().add(plateSaveReqVO);
|
||||
} catch (ServiceException ex) {
|
||||
respVO.getFailurePlates().put(plateSaveReqVO.getName(), ex.getMessage());
|
||||
}
|
||||
});
|
||||
System.err.println("PlateImportRespVO " + respVO);
|
||||
return respVO;
|
||||
}
|
||||
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.cf.imes.module.executor.dal.mysql.rawgoods;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsSaveReqVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.*;
|
||||
|
||||
/**
|
||||
* 生产单设计商品表 order_raw_goods_{N} Mapper
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@Mapper
|
||||
public interface RawGoodsMapper extends BaseMapperX<RawGoodsDO> {
|
||||
|
||||
default PageResult<RawGoodsDO> selectPage(RawGoodsPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<RawGoodsDO>()
|
||||
.eqIfPresent(RawGoodsDO::getOrderId, reqVO.getOrderId())
|
||||
.eqIfPresent(RawGoodsDO::getRawGoodsId, reqVO.getRawGoodsId())
|
||||
.likeIfPresent(RawGoodsDO::getGoodsName, reqVO.getGoodsName())
|
||||
.eqIfPresent(RawGoodsDO::getMaterial, reqVO.getMaterial())
|
||||
.eqIfPresent(RawGoodsDO::getColor, reqVO.getColor())
|
||||
.eqIfPresent(RawGoodsDO::getThickness, reqVO.getThickness())
|
||||
.eqIfPresent(RawGoodsDO::getPrice, reqVO.getPrice())
|
||||
.eqIfPresent(RawGoodsDO::getBrand, reqVO.getBrand())
|
||||
.eqIfPresent(RawGoodsDO::getSpec, reqVO.getSpec())
|
||||
.betweenIfPresent(RawGoodsDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(RawGoodsDO::getId));
|
||||
}
|
||||
|
||||
default RawGoodsImportRespVO importRawGoodsList(List<RawGoodsSaveReqVO> importRawGoods) {
|
||||
RawGoodsImportRespVO respVO = RawGoodsImportRespVO.builder().createRawGoods(new ArrayList<>())
|
||||
.updateRawGoods(new ArrayList<>()).failureRawGoods(new LinkedHashMap<>()).build();
|
||||
importRawGoods.forEach(rawGoodsSaveReqVO -> {
|
||||
try{
|
||||
insert(BeanUtils.toBean(rawGoodsSaveReqVO, RawGoodsDO.class));
|
||||
respVO.getCreateRawGoods().add(rawGoodsSaveReqVO.getGoodsName());
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
respVO.getFailureRawGoods().put(rawGoodsSaveReqVO.getGoodsName(), e.getMessage());
|
||||
}
|
||||
|
||||
});
|
||||
System.err.println("RawGoodsImportRespVO " + respVO);
|
||||
return respVO;
|
||||
}
|
||||
}
|
||||
+7
-6
@@ -5,8 +5,9 @@ import javax.validation.*;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 生产单表 order_{N} Service 接口
|
||||
@@ -55,10 +56,10 @@ public interface OrderService {
|
||||
|
||||
/**
|
||||
* 批量导入生产单
|
||||
*
|
||||
* @param importOrders 导入生产单列表
|
||||
* @param isUpdateSupport 是否支持更新
|
||||
* @return 导入结果
|
||||
* @param upload 是否只上传表头,默认为只上传表头
|
||||
* @param file 文件内容
|
||||
* @param createReqVO 生产单信息
|
||||
* @return OrderImportRespVO
|
||||
*/
|
||||
OrderImportRespVO importOrderList(List<OrderPlateImportExcelVO> importOrders, Boolean isUpdateSupport);
|
||||
OrderImportRespVO importOrderList(Boolean upload , MultipartFile file , OrderSaveReqVO createReqVO) throws IOException;
|
||||
}
|
||||
+221
-16
@@ -1,10 +1,28 @@
|
||||
package com.cf.imes.module.executor.service.order;
|
||||
|
||||
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
|
||||
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.system.api.user.AdminUserApi;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
@@ -12,19 +30,23 @@ 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.order.OrderMapper;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
|
||||
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
/**
|
||||
* 生产单表 order_{N} Service 实现类
|
||||
*
|
||||
@@ -37,17 +59,41 @@ public class OrderServiceImpl implements OrderService {
|
||||
@Resource
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Resource
|
||||
private RawGoodsMapper rawGoodsMapper;
|
||||
|
||||
@Resource
|
||||
private OrderPartsMapper orderPartsMapper;
|
||||
|
||||
@Resource
|
||||
private PlateMapper plateMapper;
|
||||
|
||||
@Resource
|
||||
private OrderBodyMapper orderBodyMapper;
|
||||
|
||||
@Resource
|
||||
private OrderGroupMapper orderGroupMapper;
|
||||
|
||||
@Resource
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
@Resource
|
||||
private SnowFlakeGenerator snowFlakeGenerator;
|
||||
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
|
||||
private static final int DEFAULT_DAYS_TO_ADD = 30;
|
||||
|
||||
// private Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
|
||||
|
||||
@Override
|
||||
public Long createOrder(OrderSaveReqVO createReqVO) {
|
||||
//校验手机号是否合法
|
||||
validatePhoneNumber(createReqVO.getPhoneNumber());
|
||||
validatePhoneNumber(createReqVO.getDealerPhoneNumber());
|
||||
//验证自定义单号是否存在,业务员、拆单员是否存在
|
||||
validateCustomOrderNoExists(createReqVO.getCustomOrderNo());
|
||||
validateSalesmanOrderNoExists(createReqVO.getSalesman());
|
||||
validateSplitterOrderNoExists(createReqVO.getSplitter());
|
||||
validateOrderImportForCreateOrUpdate(createReqVO.getCustomOrderNo(), createReqVO.getSalesman(), createReqVO.getSplitter());
|
||||
|
||||
LocalDateTime time = getAfterDate(createReqVO.getDeliveryDate());
|
||||
createReqVO.setDeliveryDate(time);
|
||||
@@ -92,9 +138,158 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderImportRespVO importOrderList(List<OrderPlateImportExcelVO> importOrders, Boolean isUpdateSupport) {
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public OrderImportRespVO importOrderList(Boolean upload, MultipartFile file, OrderSaveReqVO createReqVO) throws IOException {
|
||||
OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
|
||||
.updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
|
||||
// 上传文件类型判断,抽出文件中的板件信息
|
||||
List<OrderPlateImportExcelVO> 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);
|
||||
if (list == null || list.size() == 0) {
|
||||
orderImportRespVO.getFailureOrder().put("生产单导入错误", String.valueOf(OrderExcelUtil.getValue()));
|
||||
return orderImportRespVO;
|
||||
}
|
||||
}
|
||||
// 判断是否只新建生产单
|
||||
Long id = createOrder(createReqVO);
|
||||
if (upload) {
|
||||
orderImportRespVO.getCreateOrder().add(String.valueOf(id));
|
||||
return orderImportRespVO;
|
||||
}
|
||||
// 根据字段筛选出重复数据
|
||||
List<OrderPlateImportExcelVO> duplicateOrder = list.stream()
|
||||
.collect(
|
||||
Collectors.toMap(
|
||||
p -> Arrays.asList(p.getGoodsId(), p.getGoodsName(), p.getMaterial(), p.getColor(), p.getSpec()),
|
||||
p -> p,
|
||||
(existing, replacement) -> existing
|
||||
)
|
||||
)
|
||||
.values().stream()
|
||||
.collect(Collectors.toList());
|
||||
// 数据分类
|
||||
HashMap<String, List<OrderPlateImportExcelVO>> map = classifyGoods(duplicateOrder);
|
||||
// 板材信息合集,添加生产单id,板材信息写入order_raw_goods
|
||||
List<RawGoodsSaveReqVO> rawGoodsSaveReqVOList = collectImportRawPlate(map.get("plate"), id);
|
||||
RawGoodsImportRespVO respRawGoods = rawGoodsMapper.importRawGoodsList(rawGoodsSaveReqVOList);
|
||||
orderImportRespVO.getFailureOrder().putAll(respRawGoods.getFailureRawGoods());
|
||||
|
||||
return null;
|
||||
// 小板信息写入 、配件信息写入
|
||||
Map<String, List<OrderPlateImportExcelVO>> groupedRooms = list.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
order -> order.getRoomsName() != null ? order.getRoomsName() : " ",
|
||||
Collectors.toList()
|
||||
));
|
||||
groupedRooms.forEach((roomName, listRoom) -> {
|
||||
System.out.println("OrderPlateImportExcelVO with roomName " + roomName + ":");
|
||||
Long roomId = (Long) snowFlakeGenerator.nextId(null);
|
||||
Map<String, List<OrderPlateImportExcelVO>> groupedCabinetsName = listRoom.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
order -> order.getCabinetsName() != null ? order.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<String, List<OrderPlateImportExcelVO>> groupedSynthesis = listCabinet.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
order -> order.getSynthesis() != null ? order.getSynthesis() : " ",
|
||||
Collectors.toList()
|
||||
));
|
||||
groupedSynthesis.forEach((synthesis, listSynthesis) -> {
|
||||
System.out.println("OrderPlateImportExcelVO with synthesis " + synthesis + ":");
|
||||
Long synthesisId = (Long) snowFlakeGenerator.nextId(null);
|
||||
Map<String, List<OrderPlateImportExcelVO>> groupedCombinationName = listSynthesis.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
order -> order.getCombinationName() != null ? order.getCombinationName() : " ",
|
||||
Collectors.toList()
|
||||
));
|
||||
groupedCombinationName.forEach((combinationName, listCombination) -> {//组合名称
|
||||
// 板数量
|
||||
final Double[] plateCountByCombination = {0.0};
|
||||
OrderGroupDO orderGroupDO = OrderGroupDO.builder().orderId(id).bodyId(bodyId)
|
||||
.groupId(synthesisId).groupType(synthesis).name(combinationName).build();
|
||||
// 插入group表
|
||||
orderGroupMapper.insert(orderGroupDO);
|
||||
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++) {
|
||||
PlateDO plateDO = BeanUtils.toBean(plateOrParts, PlateDO.class);
|
||||
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();
|
||||
orderItemMapper.insert(orderItemDO);
|
||||
}
|
||||
} else {
|
||||
//配件
|
||||
OrderPartsDO orderPartsDO = BeanUtils.toBean(plateOrParts, OrderPartsDO.class).setName(plateOrParts.getGoodsName()).setOrderId(id);
|
||||
orderPartsMapper.insert(orderPartsDO);
|
||||
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(2)
|
||||
.roomId(roomId).bodyId(bodyId).dataId(orderPartsDO.getId()).partsId(orderPartsDO.getId())
|
||||
.num(Double.valueOf(plateOrParts.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]);
|
||||
});
|
||||
});
|
||||
return orderImportRespVO;
|
||||
}
|
||||
|
||||
// 板材信息收集
|
||||
private List<RawGoodsSaveReqVO> collectImportRawPlate(List<OrderPlateImportExcelVO> list, Long id) {
|
||||
List<RawGoodsSaveReqVO> rawGoodsDOList = new ArrayList<>();
|
||||
for (OrderPlateImportExcelVO orderPlateImportExcelVO : list) {
|
||||
RawGoodsSaveReqVO rawGoodsSaveReqVO = BeanUtils.toBean(orderPlateImportExcelVO, RawGoodsSaveReqVO.class);
|
||||
rawGoodsSaveReqVO.setOrderId(id);
|
||||
rawGoodsDOList.add(rawGoodsSaveReqVO);
|
||||
}
|
||||
return rawGoodsDOList;
|
||||
}
|
||||
|
||||
//对数据进行分类
|
||||
private HashMap<String, List<OrderPlateImportExcelVO>> classifyGoods(List<OrderPlateImportExcelVO> list) {
|
||||
HashMap<String, List<OrderPlateImportExcelVO>> map = new HashMap<>();
|
||||
List<OrderPlateImportExcelVO> plateLists = new ArrayList<>();
|
||||
List<OrderPlateImportExcelVO> partsLists = new ArrayList<>();
|
||||
for (OrderPlateImportExcelVO orderPlateImportExcelVO : list) {
|
||||
//判断是板材还是配件
|
||||
if (orderPlateImportExcelVO.getGoodType().replaceAll(" ", "").equals("板材") || orderPlateImportExcelVO.getGoodType().replaceAll(" ", "").equals("1")) {
|
||||
plateLists.add(orderPlateImportExcelVO);
|
||||
} else {
|
||||
partsLists.add(orderPlateImportExcelVO);
|
||||
}
|
||||
orderPlateImportExcelVO.setRemark(orderPlateImportExcelVO.remarkJSON());
|
||||
}
|
||||
map.put("plate", plateLists);
|
||||
map.put("parts", partsLists);
|
||||
return map;
|
||||
}
|
||||
|
||||
private LocalDateTime getAfterDate(LocalDateTime date) {
|
||||
@@ -118,29 +313,29 @@ public class OrderServiceImpl implements OrderService {
|
||||
return date;
|
||||
}
|
||||
|
||||
// 验证自定义单号是否存在
|
||||
private void validateCustomOrderNoExists(String customOrderNo){
|
||||
// 验证自定义单号是否存在
|
||||
private void validateCustomOrderNoExists(String customOrderNo) {
|
||||
if (orderMapper.selectOne("custom_order_no", customOrderNo) != null) {
|
||||
throw exception(CUSTOM_ORDER_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
// 业务员是否存在
|
||||
private void validateSalesmanOrderNoExists(String salesman){
|
||||
if (orderMapper.selectOne("salesman", salesman) == null) {
|
||||
// 业务员是否存在
|
||||
private void validateSalesmanOrderNoExists(String salesman , Long organId) {
|
||||
if (adminUserApi.validateUser(salesman,organId) == null) {
|
||||
throw exception(SALESMAN_ORDER_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
// 拆单员是否存在
|
||||
private void validateSplitterOrderNoExists(String splitter){
|
||||
if (orderMapper.selectOne("splitter", splitter) == null) {
|
||||
// 拆单员是否存在
|
||||
private void validateSplitterOrderNoExists(String splitter , Long organId) {
|
||||
if (adminUserApi.validateUser(splitter,organId) == null) {
|
||||
throw exception(SPLITTER_ORDER_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
// 校验手机号是否合法
|
||||
private void validatePhoneNumber(String phoneNumber){
|
||||
// 校验手机号是否合法
|
||||
private void validatePhoneNumber(String phoneNumber) {
|
||||
// 定义手机号正则表达式
|
||||
String regex = "^1[3-9]\\d{9}$";
|
||||
|
||||
@@ -157,4 +352,14 @@ public class OrderServiceImpl implements OrderService {
|
||||
throw exception(PHONE_NOT_LAWFUL);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateOrderImportForCreateOrUpdate(String customOrderNo, String salesman, String splitter) {
|
||||
// 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
|
||||
Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
|
||||
DataPermissionUtils.executeIgnore(() -> {
|
||||
validateCustomOrderNoExists(customOrderNo);
|
||||
validateSalesmanOrderNoExists(salesman , organId);
|
||||
validateSplitterOrderNoExists(splitter , organId);
|
||||
});
|
||||
}
|
||||
}
|
||||
+8
@@ -52,4 +52,12 @@ public interface OrderPartsService {
|
||||
*/
|
||||
PageResult<OrderPartsDO> getOrderPartsPage(OrderPartsPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 批量导入配件
|
||||
*
|
||||
* @param importOrderParts 导入生产单配件列表
|
||||
* @param orderId 生产单号
|
||||
* @return 导入结果
|
||||
*/
|
||||
OrderPartsImportRespVO importOrderPartsList(List<OrderPartsSaveReqVO> importOrderParts, Long orderId);
|
||||
}
|
||||
+30
@@ -1,11 +1,21 @@
|
||||
package com.cf.imes.module.executor.service.orderParts;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
@@ -71,4 +81,24 @@ public class OrderPartsServiceImpl implements OrderPartsService {
|
||||
return orderPartsMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public OrderPartsImportRespVO importOrderPartsList(List<OrderPartsSaveReqVO> importOrderParts, Long orderId) {
|
||||
if (CollUtil.isEmpty(importOrderParts)) {
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.ORDER_PARTS_IMPORT_LIST_IS_EMPTY);
|
||||
}
|
||||
OrderPartsImportRespVO respVO = OrderPartsImportRespVO.builder().createOrderParts(new ArrayList<OrderPartsSaveReqVO>())
|
||||
.updateOrderParts(new ArrayList<>()).failureOrderParts(new LinkedHashMap<>()).build();
|
||||
importOrderParts.forEach(orderParts -> {
|
||||
try{
|
||||
Long id = (long) orderPartsMapper.insert(BeanUtils.toBean(orderParts, OrderPartsDO.class)
|
||||
.setOrderId(orderId));
|
||||
respVO.getCreateOrderParts().add(orderParts);
|
||||
}catch (ServiceException ex){
|
||||
respVO.getFailureOrderParts().put(orderParts.getName(), ex.getMessage());
|
||||
}
|
||||
});
|
||||
return respVO;
|
||||
}
|
||||
|
||||
}
|
||||
+11
@@ -3,6 +3,8 @@ package com.cf.imes.module.executor.service.plate;
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
@@ -52,4 +54,13 @@ public interface PlateService {
|
||||
*/
|
||||
PageResult<PlateDO> getPlatePage(PlatePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 批量导入小板
|
||||
*
|
||||
* @param importPlates 导入生产单板材列表
|
||||
* @param orderId 生产单Id
|
||||
* @return 导入结果
|
||||
*/
|
||||
PlateImportRespVO importPlatesList(List<PlateSaveReqVO> importPlates, Long orderId);
|
||||
|
||||
}
|
||||
+27
@@ -1,5 +1,12 @@
|
||||
package com.cf.imes.module.executor.service.plate;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -72,4 +79,24 @@ public class PlateServiceImpl implements PlateService {
|
||||
return plateMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public PlateImportRespVO importPlatesList(List<PlateSaveReqVO> importPlates, Long orderId) {
|
||||
if (CollUtil.isEmpty(importPlates)) {
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.RAW_GOODS_IMPORT_LIST_IS_EMPTY);
|
||||
}
|
||||
PlateImportRespVO respVO = PlateImportRespVO.builder().createPlates(new ArrayList<PlateSaveReqVO>())
|
||||
.updatePlates(new ArrayList<>()).failurePlates(new LinkedHashMap<>()).build();
|
||||
importPlates.forEach(plateSaveReqVO -> {
|
||||
try {
|
||||
Long id = (long) plateMapper.insert(BeanUtils.toBean(plateSaveReqVO, PlateDO.class)
|
||||
.setOrderId(orderId));
|
||||
respVO.getCreatePlates().add(plateSaveReqVO);
|
||||
} catch (ServiceException ex) {
|
||||
respVO.getFailurePlates().put(plateSaveReqVO.getName(), ex.getMessage());
|
||||
}
|
||||
});
|
||||
return respVO;
|
||||
}
|
||||
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.cf.imes.module.executor.service.rawgoods;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsSaveReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* 生产单设计商品表 order_raw_goods_{N} Service 接口
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
public interface RawGoodsService {
|
||||
|
||||
/**
|
||||
* 创建生产单设计商品表 order_raw_goods_{N}
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createRawGoods(@Valid RawGoodsSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新生产单设计商品表 order_raw_goods_{N}
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateRawGoods(@Valid RawGoodsSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除生产单设计商品表 order_raw_goods_{N}
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteRawGoods(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产单设计商品表 order_raw_goods_{N}
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 生产单设计商品表 order_raw_goods_{N}
|
||||
*/
|
||||
RawGoodsDO getRawGoods(Long id);
|
||||
|
||||
/**
|
||||
* 获得生产单设计商品表 order_raw_goods_{N}分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 生产单设计商品表 order_raw_goods_{N}分页
|
||||
*/
|
||||
PageResult<RawGoodsDO> getRawGoodsPage(RawGoodsPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 批量导入板材
|
||||
*
|
||||
* @param importRawGoods 导入生产单板材列表
|
||||
* @param orderId 生产单Id
|
||||
* @return 导入结果
|
||||
*/
|
||||
RawGoodsImportRespVO importRawGoodsList(List<RawGoodsSaveReqVO> importRawGoods, Long orderId);
|
||||
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.cf.imes.module.executor.service.rawgoods;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsImportRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.common.pojo.PageParam;
|
||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
|
||||
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
|
||||
|
||||
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
|
||||
import static com.cf.imes.module.system.enums.ErrorCodeConstants.RAW_GOODS_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 生产单设计商品表 order_raw_goods_{N} Service 实现类
|
||||
*
|
||||
* @author 晨丰科技
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class RawGoodsServiceImpl implements RawGoodsService {
|
||||
|
||||
@Resource
|
||||
private RawGoodsMapper rawGoodsMapper;
|
||||
|
||||
@Override
|
||||
public Long createRawGoods(RawGoodsSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
RawGoodsDO rawGoods = BeanUtils.toBean(createReqVO, RawGoodsDO.class);
|
||||
rawGoodsMapper.insert(rawGoods);
|
||||
// 返回
|
||||
return rawGoods.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRawGoods(RawGoodsSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateRawGoodsExists(updateReqVO.getId());
|
||||
// 更新
|
||||
RawGoodsDO updateObj = BeanUtils.toBean(updateReqVO, RawGoodsDO.class);
|
||||
rawGoodsMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRawGoods(Long id) {
|
||||
// 校验存在
|
||||
validateRawGoodsExists(id);
|
||||
// 删除
|
||||
rawGoodsMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateRawGoodsExists(Long id) {
|
||||
if (rawGoodsMapper.selectById(id) == null) {
|
||||
throw exception(RAW_GOODS_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RawGoodsDO getRawGoods(Long id) {
|
||||
return rawGoodsMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<RawGoodsDO> getRawGoodsPage(RawGoodsPageReqVO pageReqVO) {
|
||||
return rawGoodsMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public RawGoodsImportRespVO importRawGoodsList(List<RawGoodsSaveReqVO> importRawGoods, Long orderId) {
|
||||
if (CollUtil.isEmpty(importRawGoods)) {
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.RAW_GOODS_IMPORT_LIST_IS_EMPTY);
|
||||
}
|
||||
RawGoodsImportRespVO respVO = RawGoodsImportRespVO.builder().createRawGoods(new ArrayList<>())
|
||||
.updateRawGoods(new ArrayList<>()).failureRawGoods(new LinkedHashMap<>()).build();
|
||||
importRawGoods.forEach(rawGoodsSaveReqVO -> {
|
||||
try{
|
||||
rawGoodsMapper.insert(BeanUtils.toBean(rawGoodsSaveReqVO, RawGoodsDO.class)
|
||||
.setOrderId(orderId));
|
||||
respVO.getCreateRawGoods().add(rawGoodsSaveReqVO.getGoodsName());
|
||||
}catch (ServiceException ex){
|
||||
respVO.getFailureRawGoods().put(rawGoodsSaveReqVO.getGoodsName(), ex.getMessage());
|
||||
}
|
||||
|
||||
});
|
||||
return respVO;
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.cf.imes.module.executor.util;
|
||||
|
||||
/**
|
||||
* 生产单新增传入文件格式转换工具
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/13 17:31
|
||||
*/
|
||||
public interface FileTypeChangeUtil {
|
||||
|
||||
}
|
||||
-70
@@ -1,70 +0,0 @@
|
||||
package com.cf.imes.module.executor.util;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_back
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/5 10:55
|
||||
* 生产单id创建
|
||||
*/
|
||||
public class IdGenerator {
|
||||
private static final long START_TIMESTAMP = 1613203200000L; // 设置起始时间戳为2021-02-13 00:00:00
|
||||
private static final long WORKER_ID_BITS = 5L;
|
||||
private static final long DATABASE_ID_BITS = 5L;
|
||||
private static final long SEQUENCE_BITS = 12L;
|
||||
|
||||
private static final long MAX_WORKER_ID = -1L ^ (-1L << WORKER_ID_BITS);
|
||||
private static final long MAX_DATABASE_ID = -1L ^ (-1L << DATABASE_ID_BITS);
|
||||
|
||||
private static final long WORKER_ID_SHIFT = SEQUENCE_BITS;
|
||||
private static final long DATABASE_ID_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS;
|
||||
private static final long TIMESTAMP_LEFT_SHIFT = SEQUENCE_BITS + WORKER_ID_BITS + DATABASE_ID_BITS;
|
||||
|
||||
private long workerId;
|
||||
private long databaseId;
|
||||
private long sequence = 0L;
|
||||
private long lastTimestamp = -1L;
|
||||
|
||||
public IdGenerator(long workerId, long databaseId) {
|
||||
if (workerId > MAX_WORKER_ID || workerId < 0) {
|
||||
throw new IllegalArgumentException("Worker ID must be between 0 and " + MAX_WORKER_ID);
|
||||
}
|
||||
if (databaseId > MAX_DATABASE_ID || databaseId < 0) {
|
||||
throw new IllegalArgumentException("Database ID must be between 0 and " + MAX_DATABASE_ID);
|
||||
}
|
||||
this.workerId = workerId;
|
||||
this.databaseId = databaseId;
|
||||
}
|
||||
|
||||
public synchronized long generateId() {
|
||||
long timestamp = System.currentTimeMillis();
|
||||
|
||||
if (timestamp < lastTimestamp) {
|
||||
throw new RuntimeException("Clock moved backwards. Refusing to generate ID for " + (lastTimestamp - timestamp) + " milliseconds");
|
||||
}
|
||||
|
||||
if (timestamp == lastTimestamp) {
|
||||
sequence = (sequence + 1) & ((1 << SEQUENCE_BITS) - 1);
|
||||
if (sequence == 0) {
|
||||
timestamp = tilNextMillis(lastTimestamp);
|
||||
}
|
||||
} else {
|
||||
sequence = 0;
|
||||
}
|
||||
|
||||
lastTimestamp = timestamp;
|
||||
|
||||
return ((timestamp - START_TIMESTAMP) << TIMESTAMP_LEFT_SHIFT)
|
||||
| (workerId << WORKER_ID_SHIFT)
|
||||
| (databaseId << DATABASE_ID_SHIFT)
|
||||
| sequence;
|
||||
}
|
||||
|
||||
private long tilNextMillis(long lastTimestamp) {
|
||||
long timestamp = System.currentTimeMillis();
|
||||
while (timestamp <= lastTimestamp) {
|
||||
timestamp = System.currentTimeMillis();
|
||||
}
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
}
|
||||
-56
@@ -1,56 +0,0 @@
|
||||
package com.cf.imes.module.executor.util;
|
||||
|
||||
import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
public class OrderExcelUtil extends ExcelUtils {
|
||||
public static <T> List<T> read(MultipartFile file, Class<T> head , int upload) throws IOException {
|
||||
if (file.isEmpty()) {
|
||||
throw new IOException("文件为空");
|
||||
} else if (!file.getOriginalFilename().endsWith(".xlsx")) {
|
||||
throw new IOException("文件格式不正确");
|
||||
} else if (file.getSize() > 1024 * 1024 * 10) {
|
||||
throw new IOException("文件大小超过 10M");
|
||||
} else if (file.getSize() == 0) {
|
||||
throw new IOException("文件大小为 0");
|
||||
} else {
|
||||
//读取文件内容
|
||||
|
||||
|
||||
try {
|
||||
// 将 MultipartFile 转换为 InputStream
|
||||
InputStream inputStream = file.getInputStream();
|
||||
// 使用 WorkbookFactory 创建 Workbook 对象
|
||||
Workbook workbook = WorkbookFactory.create(inputStream);
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
extractOrderInformation(sheet, file);
|
||||
|
||||
workbook.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void extractOrderInformation(Sheet sheet, MultipartFile file) throws IOException {
|
||||
int rowNum=sheet.getLastRowNum();
|
||||
for (Row row : sheet) {
|
||||
Cell firstCell = row.getCell(0);
|
||||
if (firstCell != null && firstCell.getCellType() == CellType.STRING) {
|
||||
String cellValue = firstCell.getStringCellValue().trim();
|
||||
if (cellValue.equals("&&&")) {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package com.cf.imes.module.executor.util.excel;
|
||||
|
||||
import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.event.AnalysisEventListener;
|
||||
import com.alibaba.excel.exception.ExcelDataConvertException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
public final class ExcelListener<T> extends AnalysisEventListener<T> {
|
||||
|
||||
/**
|
||||
* 自定义用于暂时存储data
|
||||
* 可以通过实例获取该值
|
||||
*/
|
||||
private List<T> datas = new ArrayList<>();
|
||||
|
||||
private boolean flag = true;
|
||||
|
||||
private String value = null;
|
||||
|
||||
|
||||
/**
|
||||
* 每解析一行都会回调invoke()方法
|
||||
*
|
||||
* @param data 读取后的数据对象
|
||||
* @param context 内容
|
||||
*/
|
||||
@Override
|
||||
public void invoke(T data, AnalysisContext context) {
|
||||
datas.add(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取完后操作
|
||||
*
|
||||
* @param context
|
||||
*/
|
||||
@Override
|
||||
public void doAfterAllAnalysed(AnalysisContext context) {
|
||||
if (this.flag)
|
||||
log.info("所有数据读取完成");
|
||||
}
|
||||
|
||||
/**
|
||||
* 异常方法 (类型转换异常也会执行此方法) (读取一行抛出异常也会执行此方法)
|
||||
*
|
||||
* @param exception
|
||||
* @param context
|
||||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public void onException(Exception exception, AnalysisContext context) {
|
||||
log.info("有异常");
|
||||
this.flag = false;
|
||||
// 如果是某一个单元格的转换异常 能获取到具体行号
|
||||
// 如果要获取头的信息 配合invokeHeadMap使用
|
||||
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) + "列读取错误"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数据
|
||||
*
|
||||
* @return 返回读取的数据集合
|
||||
**/
|
||||
public List<T> getDatas() {
|
||||
return datas;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回读取结果
|
||||
*
|
||||
* @return 是否读取成功
|
||||
**/
|
||||
public boolean getFlag() {
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回错误信息
|
||||
*
|
||||
* @return String
|
||||
**/
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.cf.imes.module.executor.util.excel;
|
||||
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.cf.imes.framework.excel.core.util.ExcelUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class OrderExcelUtil extends ExcelUtils {
|
||||
private static String value;
|
||||
|
||||
public static <T> List<T> read(MultipartFile file, Class<T> head) throws IOException {
|
||||
ExcelListener<T> excelListener = new ExcelListener<>();
|
||||
if (file.isEmpty()) {
|
||||
value = "文件为空";
|
||||
throw new IOException("文件为空");
|
||||
} else if (!file.getOriginalFilename().endsWith(".xlsx")) {
|
||||
value = "文件格式不正确";
|
||||
throw new IOException("文件格式不正确");
|
||||
} else if (file.getSize() > 1024 * 1024 * 10) {
|
||||
value = "文件大小超过 10M";
|
||||
throw new IOException("文件大小超过 10M");
|
||||
} else if (file.getSize() == 0) {
|
||||
value = "文件大小为 0";
|
||||
throw new IOException("文件大小为 0");
|
||||
} else {
|
||||
//读取文件内容
|
||||
EasyExcel.read(file.getInputStream(), head, excelListener).headRowNumber(7).sheet(0).doRead();
|
||||
//获取读取的数据
|
||||
List<T> list = excelListener.getDatas();
|
||||
|
||||
if (excelListener.getFlag())
|
||||
return list;
|
||||
value = excelListener.getValue();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> Map<String, String> getValue() {
|
||||
Map<String, String> err = new HashMap<>();
|
||||
err.put("err", value);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
+2
-13
@@ -1,15 +1,4 @@
|
||||
{
|
||||
"OrderNo" : "$OrderNo$ 订单号",
|
||||
"CustomOrderNo" : "$CustomOrderNo$ 自定义单号",
|
||||
"CustomNo": "$CustomNo$ 客户代码(经销商)",
|
||||
"CustomName": "$CustomName$ 客户名称(经销商)",
|
||||
"SalePerson": "$SalePerson$ 业务员",
|
||||
"SaleDate": "$SaleDate$ 销售日期",
|
||||
"DeliveryDate": "$DeliveryDate$ 送货日期",
|
||||
"Consignee": "$Consignee$ 收货人(终端客户)",
|
||||
"ConsigneePhone": "$ConsigneePhone$ 收货电话(终端客户电话)",
|
||||
"ConsigneeAddress": "$ConsigneeAddress$ 地址",
|
||||
"OrderRemark": "$Remark$ 备注",
|
||||
"IOriginModelingData //造型数据": {
|
||||
"outline": "IContourData 轮郭",
|
||||
"holes //孔轮廓": {
|
||||
@@ -118,8 +107,8 @@
|
||||
"PointY2": "number y2",
|
||||
"Angle": "number 角度"
|
||||
},
|
||||
"PlateRemark //备注": {
|
||||
"remark": "string 备注",
|
||||
"remark //备注": {
|
||||
"remark1": "string 备注",
|
||||
"remark2": "string 备注2"
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper">
|
||||
|
||||
<update id="updatePlateNumById" >
|
||||
update `order_body` set plate_num = #{plateNum} where id = #{orderId}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper">
|
||||
|
||||
<update id="updatePlateNumById" >
|
||||
update `order_group` set plate_num = #{plateNum} where id = #{orderId}
|
||||
</update>
|
||||
</mapper>
|
||||
+6
-4
@@ -102,9 +102,9 @@ public class PlateController {
|
||||
// 手动创建导出 demo
|
||||
List<PlateImportExcelVO> list = Arrays.asList(
|
||||
PlateImportExcelVO.builder().goodsId("SP1123456").goodsName("xixih").material("颗粒板").width(BigDecimal.valueOf(1212.3)).height(BigDecimal.valueOf(12131.6))
|
||||
.thickness(BigDecimal.valueOf(0.2)).price(33333.2).brand("SexEnum.MALE.getSex()").spec("大厂").remark("测试").build(),
|
||||
.thickness(BigDecimal.valueOf(0.2)).brand("SexEnum.MALE.getSex()").spec("大厂").remark("测试").build(),//.price(33333.2)
|
||||
PlateImportExcelVO.builder().goodsId("SP1123457").goodsName("2L").material("yuanma@cf.com").width(BigDecimal.valueOf(21.6)).height(BigDecimal.valueOf(123231.6))
|
||||
.thickness(BigDecimal.valueOf(5.3)).price(333.555).brand("kkkkkk").spec("大厂").remark("测试").build()
|
||||
.thickness(BigDecimal.valueOf(5.3)).brand("kkkkkk").spec("大厂").remark("测试").build()//.price(333.555)
|
||||
);
|
||||
// 输出
|
||||
ExcelUtils.write(response, "板材导入模板.xls", "板材列表", PlateImportExcelVO.class, list);
|
||||
@@ -114,11 +114,13 @@ public class PlateController {
|
||||
@Operation(summary = "导入板材")
|
||||
@Parameters({
|
||||
@Parameter(name = "file", description = "Excel 文件", required = true),
|
||||
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
|
||||
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true"),
|
||||
@Parameter(name = "organId", description = "板材所属组织ID")
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('manage:plate:import')")
|
||||
public CommonResult<PlateImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
|
||||
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
|
||||
@RequestParam(value = "organId") Long organId) throws Exception {
|
||||
List<PlateImportExcelVO> list = ExcelUtils.read(file, PlateImportExcelVO.class);
|
||||
return success(plateService.importPlateList(list, updateSupport));
|
||||
// return null;
|
||||
|
||||
+2
-2
@@ -45,8 +45,8 @@ public class PlateImportExcelVO {
|
||||
@ExcelProperty("厚度")
|
||||
private BigDecimal thickness;
|
||||
|
||||
@ExcelProperty("价格")
|
||||
private Double price;
|
||||
// @ExcelProperty("价格")
|
||||
// private Double price;
|
||||
|
||||
@ExcelProperty("品牌")
|
||||
private String brand;
|
||||
|
||||
+3
-2
@@ -38,8 +38,8 @@ public class PlatePageReqVO extends PageParam {
|
||||
@Schema(description = "厚度")
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "价格", example = "3380")
|
||||
private Double price;
|
||||
// @Schema(description = "价格", example = "3380")
|
||||
// private Double price;
|
||||
|
||||
@Schema(description = "品牌")
|
||||
private String brand;
|
||||
@@ -54,4 +54,5 @@ public class PlatePageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
private Long organId;
|
||||
}
|
||||
+4
-3
@@ -47,9 +47,9 @@ public class PlateRespVO {
|
||||
@ExcelProperty("厚度")
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3380")
|
||||
@ExcelProperty("价格")
|
||||
private Double price;
|
||||
// @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3380")
|
||||
// @ExcelProperty("价格")
|
||||
// private Double price;
|
||||
|
||||
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("品牌")
|
||||
@@ -67,4 +67,5 @@ public class PlateRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private Long organId;
|
||||
}
|
||||
+4
-3
@@ -41,9 +41,9 @@ public class PlateSaveReqVO {
|
||||
@NotNull(message = "厚度不能为空")
|
||||
private BigDecimal thickness;
|
||||
|
||||
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3380")
|
||||
@NotNull(message = "价格不能为空")
|
||||
private Double price;
|
||||
// @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "3380")
|
||||
// @NotNull(message = "价格不能为空")
|
||||
// private Double price;
|
||||
|
||||
@Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "品牌不能为空")
|
||||
@@ -57,4 +57,5 @@ public class PlateSaveReqVO {
|
||||
@NotEmpty(message = "备注不能为空")
|
||||
private String remark;
|
||||
|
||||
private Long organId;
|
||||
}
|
||||
+1
-1
@@ -60,7 +60,7 @@ public class PlateDO extends BaseDO {
|
||||
/**
|
||||
* 价格
|
||||
*/
|
||||
private Double price;
|
||||
// private Double price;
|
||||
/**
|
||||
* 品牌
|
||||
*/
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
.eqIfPresent(PlateDO::getWidth, reqVO.getWidth())
|
||||
.eqIfPresent(PlateDO::getHeight, reqVO.getHeight())
|
||||
.eqIfPresent(PlateDO::getThickness, reqVO.getThickness())
|
||||
.eqIfPresent(PlateDO::getPrice, reqVO.getPrice())
|
||||
// .eqIfPresent(PlateDO::getPrice, reqVO.getPrice())
|
||||
.eqIfPresent(PlateDO::getBrand, reqVO.getBrand())
|
||||
.eqIfPresent(PlateDO::getSpec, reqVO.getSpec())
|
||||
.eqIfPresent(PlateDO::getRemark, reqVO.getRemark())
|
||||
|
||||
+9
@@ -4,6 +4,7 @@ import com.cf.imes.framework.common.pojo.CommonResult;
|
||||
import com.cf.imes.framework.common.util.collection.CollectionUtils;
|
||||
import com.cf.imes.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import com.cf.imes.module.system.enums.ApiConstants;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -58,4 +59,12 @@ public interface AdminUserApi {
|
||||
@Parameter(name = "ids", description = "用户编号数组", example = "3,5", required = true)
|
||||
CommonResult<Boolean> validateUserList(@RequestParam("ids") Set<Long> ids);
|
||||
|
||||
@GetMapping(PREFIX + "/valid")
|
||||
@Operation(summary = "通过用户名称获取用户信息")
|
||||
@Parameters({
|
||||
@Parameter(name = "name", description = "用户名称", example = "1", required = true),
|
||||
@Parameter(name = "organId", description = "组织编号", example = "晨丰科技", required = true)
|
||||
})
|
||||
CommonResult<AdminUserRespDTO> validateUser(@RequestParam("name") String name, @RequestParam("organId") Long organId);
|
||||
|
||||
}
|
||||
|
||||
+14
@@ -206,4 +206,18 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_032_002, "工序用户不存在");
|
||||
ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_032_002, "工序用户存在");
|
||||
|
||||
//=========== 板材信息 1-002-035-000 ============
|
||||
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_001, "设计板材不存再");
|
||||
ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_002, "生产板材导入数据不可以为空");
|
||||
|
||||
//=========== 配件信息 1-002-035-000 ============
|
||||
ErrorCode ORDER_PARTS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_034_001, "生产配件导入数据不可以为空");
|
||||
|
||||
//=========== 柜体信息 1-002-035-000 ============
|
||||
ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_035_001, "柜体信息不存在");
|
||||
|
||||
//=========== 柜体信息 1-002-035-000 ============
|
||||
ErrorCode ORDER_GROUP_NOT_EXISTS = new ErrorCode(1_002_036_001, "加工组信息不存在");
|
||||
|
||||
|
||||
}
|
||||
|
||||
+7
@@ -52,4 +52,11 @@ public class AdminUserApiImpl implements AdminUserApi {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<AdminUserRespDTO> validateUser(String name, Long organId) {
|
||||
AdminUserDO user = userService.getUserByUsername(name, organId);
|
||||
return success(BeanUtils.toBean(user, AdminUserRespDTO.class));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -5,6 +5,7 @@ import javax.validation.Valid;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -78,8 +79,8 @@ public class ProcessController {
|
||||
@Operation(summary = "获得工序信息分页")
|
||||
@PreAuthorize("@ss.hasPermission('system:process:query')")
|
||||
public CommonResult<PageResult<ProcessRespVO>> getProcessPage(@Valid ProcessPageReqVO pageReqVO) {
|
||||
PageResult<ProcessDO> pageResult = processService.getProcessPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, ProcessRespVO.class));
|
||||
PageResult<ProcessRespVO> pageResult = processService.getProcessPageAll(pageReqVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
|
||||
+6
@@ -55,4 +55,10 @@ public class ProcessPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "用户id查询")
|
||||
private String userId;
|
||||
|
||||
@Schema(description = "组织id")
|
||||
private Long organId;
|
||||
|
||||
}
|
||||
+3
@@ -67,4 +67,7 @@ public class ProcessRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "工序中的用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12,13")
|
||||
private String users;
|
||||
|
||||
}
|
||||
+18
@@ -35,6 +35,24 @@ public interface ProcessMapper extends BaseMapperX<ProcessDO> {
|
||||
.orderByDesc(ProcessDO::getId));
|
||||
}
|
||||
|
||||
// default PageResult<ProcessPageReqVO> selectPage(ProcessPageReqVO reqVO) {
|
||||
// return selectPage(reqVO, new LambdaQueryWrapperX<ProcessPageReqVO>()
|
||||
// .likeIfPresent(ProcessPageReqVO::getName, reqVO.getName())
|
||||
// .eqIfPresent(ProcessPageReqVO::getPieceRate, reqVO.getPieceRate())
|
||||
// .eqIfPresent(ProcessPageReqVO::getPieceType, reqVO.getPieceType())
|
||||
// .eqIfPresent(ProcessPageReqVO::getType, reqVO.getType())
|
||||
// .eqIfPresent(ProcessPageReqVO::getIsCustom, reqVO.getIsCustom())
|
||||
// .eqIfPresent(ProcessPageReqVO::getIsDealer, reqVO.getIsDealer())
|
||||
// .eqIfPresent(ProcessPageReqVO::getSort, reqVO.getSort())
|
||||
// .eqIfPresent(ProcessPageReqVO::getHourCapacity, reqVO.getHourCapacity())
|
||||
// .eqIfPresent(ProcessPageReqVO::getUnit, reqVO.getUnit())
|
||||
// .eqIfPresent(ProcessPageReqVO::getIsEnabled, reqVO.getIsEnabled())
|
||||
// .betweenIfPresent(ProcessPageReqVO::getPrepareTime, reqVO.getPrepareTime())
|
||||
// .eqIfPresent(ProcessPageReqVO::getDescription, reqVO.getDescription())
|
||||
// .betweenIfPresent(ProcessPageReqVO::getCreateTime, reqVO.getCreateTime())
|
||||
// .orderByDesc(ProcessPageReqVO::getId));
|
||||
// }
|
||||
|
||||
default List<ProcessDO> selectAll() {
|
||||
return selectList(new LambdaQueryWrapperX<ProcessDO>()
|
||||
.orderByDesc(ProcessDO::getId));
|
||||
|
||||
+2
-3
@@ -88,10 +88,9 @@ public class ProcessGroupServiceImpl implements ProcessGroupService {
|
||||
String[] items = processGroup.getItems().split(",");
|
||||
List<ProcessRespVO> lists = new ArrayList<>();
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
lists.add(BeanUtils.toBean(processMapper.selectById(items[i]), ProcessRespVO.class));
|
||||
System.out.println("each List " + BeanUtils.toBean(processMapper.selectById(items[i]), ProcessRespVO.class));
|
||||
if (processMapper.selectById(items[i]) != null)
|
||||
lists.add(BeanUtils.toBean(processMapper.selectById(items[i]), ProcessRespVO.class));
|
||||
}
|
||||
System.out.println("processGroupSaveReqVO = " + processListSaveReqVO);
|
||||
processListSaveReqVO.setLists(lists);
|
||||
return processListSaveReqVO;
|
||||
}
|
||||
|
||||
+8
-4
@@ -1,9 +1,6 @@
|
||||
package com.cf.imes.module.system.service.process;
|
||||
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessPageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessSaveReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessUserRespVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessUserSaveReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
|
||||
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
|
||||
@@ -55,6 +52,13 @@ public interface ProcessService {
|
||||
*/
|
||||
PageResult<ProcessDO> getProcessPage(ProcessPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得工序信息表 process分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 工序信息表 process分页
|
||||
*/
|
||||
PageResult<ProcessRespVO> getProcessPageAll(ProcessPageReqVO pageReqVO);
|
||||
/**
|
||||
* 获得所有工序信息表 process
|
||||
*
|
||||
|
||||
+32
-4
@@ -1,9 +1,8 @@
|
||||
package com.cf.imes.module.system.service.process;
|
||||
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessPageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessSaveReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessUserRespVO;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessUserSaveReqVO;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.cf.imes.framework.common.util.pinyin.PinYinUtils;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
|
||||
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO;
|
||||
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
|
||||
import com.cf.imes.module.system.dal.mysql.process.ProcessUserMapper;
|
||||
@@ -141,6 +140,35 @@ public class ProcessServiceImpl implements ProcessService {
|
||||
return processMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<ProcessRespVO> getProcessPageAll(ProcessPageReqVO pageReqVO) {
|
||||
PageResult<ProcessDO> processList = processMapper.selectPage(pageReqVO);
|
||||
PageResult<ProcessRespVO> processRespVOPageResult = new PageResult<ProcessRespVO>();
|
||||
|
||||
processRespVOPageResult.setTotal(processList.getTotal());
|
||||
processList.getList().forEach(processDO -> {
|
||||
ProcessRespVO processRespVO = BeanUtils.toBean(processDO, ProcessRespVO.class);
|
||||
StringBuilder userIdBuilder = new StringBuilder();
|
||||
List<ProcessUserDO> userIdListsByProcessId = processUserService.getProcessUser(processDO.getId());
|
||||
if (userIdListsByProcessId != null) {
|
||||
for (ProcessUserDO processUser : userIdListsByProcessId) {
|
||||
if (processUser != null && processUser.getUserId() != null) {
|
||||
if (adminUserService.getUser(processUser.getUserId()) != null) {
|
||||
userIdBuilder.append(",").append(processUser.getUserId());
|
||||
}
|
||||
if (pageReqVO.getUserId() != null && pageReqVO.getUserId().equals("")) {
|
||||
if (processUser.getUserId().equals(pageReqVO.getUserId()))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
processRespVO.setUsers(userIdBuilder.length() > 0 ? userIdBuilder.substring(1) : "");
|
||||
processRespVOPageResult.getList().add(processRespVO);
|
||||
});
|
||||
return processRespVOPageResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProcessDO> getAllProcess() {
|
||||
List<ProcessDO> processDOList = processMapper.selectAll();
|
||||
|
||||
Reference in New Issue
Block a user