From 7b3e0d944adcff643058ecd0ac2c6000faa31e5a Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Tue, 8 Oct 2024 23:41:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E9=A1=B5=E9=9D=A2=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/util/FuncUtil.java | 16 + .../common/util/validation/AssertUtil.java | 31 + .../module/oms/enums/ErrorCodeConstants.java | 1 + .../enums/saleorder/SaleOrderTypeEnum.java | 33 + .../saleorder/SaleOrderFrontController.java | 64 ++ .../saleorder/dto/CreateSaleOrderDTO.java | 80 +- .../saleorder/dto/SaleOrderEntryItemDTO.java | 2 +- .../admin/saleorder/dto/SaleOrderSkuDTO.java | 6 +- .../saleordersku/SaleOrderSkuController.java | 95 +++ .../vo/SaleOrderSkuPageReqVO.java | 71 ++ .../saleordersku/vo/SaleOrderSkuRespVO.java | 88 +++ .../vo/SaleOrderSkuSaveReqVO.java | 64 ++ .../dal/dataobject/saleorder/SaleOrderDO.java | 45 ++ .../SaleOrderEntryDO.java | 6 +- .../saleordersku/SaleOrderSkuDO.java | 100 +++ .../saleordersku/SaleOrderSkuMapper.java | 42 ++ .../service/saleorder/SaleOrderService.java | 11 + .../saleorder/SaleOrderServiceImpl.java | 151 +++- .../saleordersku/SaleOrderSkuService.java | 55 ++ .../saleordersku/SaleOrderSkuServiceImpl.java | 74 ++ .../saleordersku/SaleOrderSkuMapper.xml | 12 + .../SaleOrderSkuServiceImplTest.java | 194 +++++ .../src/api/oms/productprocess/index.js | 53 -- .../src/views/Login/components/LoginForm.vue | 2 +- .../src/api/oms/saleorder/index.ts | 6 +- .../src/components/ProductInfoList/index.vue | 9 +- .../src/constants/EmitEventName.ts | 2 + .../OrderAddProductStep/ProductList.vue | 39 +- .../components/OrderAddProductStep/index.vue | 4 + .../src/views/oms/order/createorder/index.vue | 713 ++++++++++-------- 30 files changed, 1656 insertions(+), 413 deletions(-) create mode 100644 hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java create mode 100644 hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java rename hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/{saleorder => saleorderentry}/SaleOrderEntryDO.java (93%) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java delete mode 100644 hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js create mode 100644 hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts diff --git a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java index ed6c148..1f48451 100644 --- a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java +++ b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/FuncUtil.java @@ -3,6 +3,8 @@ package cn.hangtag.framework.common.util; import cn.hangtag.framework.common.util.json.JsonUtils; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.digest.DigestUtil; @@ -18,6 +20,7 @@ import java.math.BigDecimal; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.time.Instant; import java.time.LocalDateTime; import java.util.*; import java.util.regex.Matcher; @@ -573,4 +576,17 @@ public class FuncUtil extends StringUtils { RequestAttributes requestAttributes =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); return requestAttributes == null ? null : ((ServletRequestAttributes) requestAttributes).getRequest(); } + + public static LocalDateTime parseDate(Long timestamp) { + if(isEmpty(timestamp)){ + return null; + } + Instant instant = Instant.ofEpochMilli(timestamp); + // 将 Instant 转换为 LocalDateTime + return LocalDateTime.ofInstant(instant, java.time.ZoneId.systemDefault()); + } + private static final Snowflake snowflake = IdUtil.getSnowflake(); + public static long getNextId() { + return snowflake.nextId(); + } } diff --git a/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java new file mode 100644 index 0000000..1f5589a --- /dev/null +++ b/hangtag-framework/hangtag-common/src/main/java/cn/hangtag/framework/common/util/validation/AssertUtil.java @@ -0,0 +1,31 @@ +package cn.hangtag.framework.common.util.validation; + +import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.util.FuncUtil; +import org.springframework.util.Assert; + +/** + * 断言实用程序 + * + * @author YuanFeng + * @date 2024/09/23 + */ +public class AssertUtil { + public static void isEmpty(Object field, String errorMessage) { + if (FuncUtil.isEmpty(field)) { + throw new ServiceException(600, errorMessage); + } + } + + public static void isTrue(boolean b, String errorMessage) { + if (b) { + throw new ServiceException(600, errorMessage); + } + } + public static void isFalse(boolean b, String errorMessage) { + if (!b) { + throw new ServiceException(600, errorMessage); + } + } + +} diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index 10bd9af..1a34068 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -13,6 +13,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(3600, "OMS销售订单不存在"); ErrorCode SALE_ORDER_ENTRY_NOT_EXISTS = new ErrorCode(3700, "OMS销售订单明细不存在"); ErrorCode SALE_ORDER_ENTRY_PRICE_NOT_NULL= new ErrorCode(3701, "单价不允许为空"); + ErrorCode SALE_ORDER_SKU_NOT_EXISTS = new ErrorCode(3702, "产品单价记录不存在"); ErrorCode CUSTOMER_BRAND_NOT_EXISTS = new ErrorCode(3800, "客户和品牌关联不存在"); ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3900, "产品保养项 不存在"); ErrorCode PRODUCE_ORDER_NOT_EXISTS = new ErrorCode(4000, "生产制单不存在"); diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java new file mode 100644 index 0000000..225fce4 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/saleorder/SaleOrderTypeEnum.java @@ -0,0 +1,33 @@ +package cn.hangtag.module.oms.enums.saleorder; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum SaleOrderTypeEnum { + + // 普通 + NORMAL("NORMAL", "普通"), + // 加急 + URGENT("URGENT", "加急"), + + ; + /** + * 类型 + */ + private final String type; + /** + * 类型名 + */ + private final String remark; + + public static SaleOrderTypeEnum getByType(String type) { + for (SaleOrderTypeEnum item : values()) { + if (item.getType().equals(type)) { + return item; + } + } + return null; + } +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java new file mode 100644 index 0000000..4be26d9 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderFrontController.java @@ -0,0 +1,64 @@ +package cn.hangtag.module.oms.controller.admin.saleorder; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.number.NumberUtils; +import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.framework.excel.core.util.ExcelUtils; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRemarkReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRespVO; +import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; +import cn.hangtag.module.oms.convert.saleorder.SaleOrderConvert; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; +import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; +import cn.hangtag.module.oms.service.customer.CustomerService; +import cn.hangtag.module.oms.service.saleorder.SaleOrderService; +import cn.hangtag.module.system.api.user.AdminUserApi; +import cn.hangtag.module.system.api.user.dto.AdminUserRespDTO; +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSONObject; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +@Tag(name = "销售订单") +@RestController +@RequestMapping("/front/oms/sale-order") +@Validated +public class SaleOrderFrontController { + + @Resource + private SaleOrderService saleOrderService; + @Resource + private CustomerService customerService; + @Resource + private AdminUserApi adminUserApi; + + + @PostMapping("/placeOrder") + @Operation(summary = "下单") + public CommonResult placeOrder(@Valid @RequestBody CreateSaleOrderDTO dto) { + return success(saleOrderService.placeOrder(dto)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java index 901b4b1..2836cbb 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/CreateSaleOrderDTO.java @@ -1,52 +1,90 @@ package cn.hangtag.module.oms.controller.admin.saleorder.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + @Data public class CreateSaleOrderDTO implements Serializable { - private String name; - - private String email; - - private String contacts; - + /** + * 联系人信息 + */ + @Schema(description = "联系人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "啊三") + private String contactName; + /** + * 联系人电话 + */ + @Schema(description = "联系人电话", requiredMode = Schema.RequiredMode.REQUIRED, example = "0755-523127") private String phone; + @Schema(description = "固定电话", example = "0755-523127") + private String tel; + + @Schema(description = "传真号码", example = "0755-523127") + private String fax; + + @Schema(description = "合同编码", example = "123456") + private String contractCode; + + @Schema(description = "零售商编码", example = "123456") + private String retailerCode; + + @Schema(description = "发票代码") private String invoiceCode; + @Schema(description = "发票名称") private String invoiceName; + @Schema(description = "发票地址") private String invoiceAddress; - private Long areaId; + @Schema(description = "发票备注") + private String invoiceRemarks; - private Integer status; + /** + * 客户id + */ + private Long customerId; + /** + * 品牌id + */ + private Long brandId; - private Integer type; + /** + * 订单状态 + */ + private Integer orderStatus; + @Schema(description = "备注", example = "备注信息") private String remarks; - private String orderNo; + /** + * 订单号 + */ + private String orderCode; - - - - private String newEmail; - - private String[] newEmails; + @Schema(description = "联系邮箱") + private String emails; /** - * 订单创建日期 + * 订单创建时间戳 */ - private String bizdate; + private Long bizdate; /** - * 交货日期 + * 交货日期 时间戳 */ - private String plansenddate; + private Long plansenddate; - private SaleOrderEntryItemDTO[] saleOrderEntry; + /** + * 是否分批交货 + */ + private Boolean isBatch; + + private List saleOrderEntry; } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java index b65e531..236e4b3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderEntryItemDTO.java @@ -27,7 +27,7 @@ public class SaleOrderEntryItemDTO implements Serializable { /** * 产品id */ - private Long productId; + private Integer productId; /** * 产品编码 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java index 81d800e..6490b08 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/dto/SaleOrderSkuDTO.java @@ -14,7 +14,7 @@ import java.util.List; @Data public class SaleOrderSkuDTO implements Serializable { - private String key; + private String itemKey; /** * 产品id @@ -35,12 +35,12 @@ public class SaleOrderSkuDTO implements Serializable { /** * 设计稿内容宽度 */ - private Integer width; + private Double width; /** * 设计稿内容高度 */ - private Integer height; + private Double height; /** * 最终稿件 base64编码数据 diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java new file mode 100644 index 0000000..0206fc8 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/SaleOrderSkuController.java @@ -0,0 +1,95 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku; + +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 cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +import cn.hangtag.framework.excel.core.util.ExcelUtils; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.module.oms.service.saleordersku.SaleOrderSkuService; + +@Tag(name = "管理后台 - 销售订单产品属性表 ") +@RestController +@RequestMapping("/oms/sale-order-sku") +@Validated +public class SaleOrderSkuController { + + @Resource + private SaleOrderSkuService saleOrderSkuService; + + @PostMapping("/create") + @Operation(summary = "创建销售订单产品属性表 ") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:create')") + public CommonResult createSaleOrderSku(@Valid @RequestBody SaleOrderSkuSaveReqVO createReqVO) { + return success(saleOrderSkuService.createSaleOrderSku(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新销售订单产品属性表 ") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:update')") + public CommonResult updateSaleOrderSku(@Valid @RequestBody SaleOrderSkuSaveReqVO updateReqVO) { + saleOrderSkuService.updateSaleOrderSku(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除销售订单产品属性表 ") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:delete')") + public CommonResult deleteSaleOrderSku(@RequestParam("id") Long id) { + saleOrderSkuService.deleteSaleOrderSku(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得销售订单产品属性表 ") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:query')") + public CommonResult getSaleOrderSku(@RequestParam("id") Long id) { + SaleOrderSkuDO saleOrderSku = saleOrderSkuService.getSaleOrderSku(id); + return success(BeanUtils.toBean(saleOrderSku, SaleOrderSkuRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得销售订单产品属性表 分页") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:query')") + public CommonResult> getSaleOrderSkuPage(@Valid SaleOrderSkuPageReqVO pageReqVO) { + PageResult pageResult = saleOrderSkuService.getSaleOrderSkuPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SaleOrderSkuRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出销售订单产品属性表 Excel") + @PreAuthorize("@ss.hasPermission('oms:sale-order-sku:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSaleOrderSkuExcel(@Valid SaleOrderSkuPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = saleOrderSkuService.getSaleOrderSkuPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "销售订单产品属性表 .xls", "数据", SaleOrderSkuRespVO.class, + BeanUtils.toBean(list, SaleOrderSkuRespVO.class)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java new file mode 100644 index 0000000..96e8f40 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuPageReqVO.java @@ -0,0 +1,71 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.hangtag.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.hangtag.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 销售订单产品属性表 分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SaleOrderSkuPageReqVO extends PageParam { + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + private String entryId; + + @Schema(description = "数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + private String productId; + + @Schema(description = "数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + private String specMaterial; + + @Schema(description = "主色风格") + private String mainColor; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java new file mode 100644 index 0000000..a285833 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuRespVO.java @@ -0,0 +1,88 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 销售订单产品属性表 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SaleOrderSkuRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24887") + @ExcelProperty("id") + private Long id; + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + @ExcelProperty("销售订单分表id oms_saleorder_entry") + private String entryId; + + @Schema(description = "数据key") + @ExcelProperty("数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + @ExcelProperty("销售订单id oms_saleorder") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + @ExcelProperty("产品id oms_product_info") + private String productId; + + @Schema(description = "数量") + @ExcelProperty("数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + @ExcelProperty("设计稿id oms_draft_design_data") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + @ExcelProperty("设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + @ExcelProperty("设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + @ExcelProperty("预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + @ExcelProperty("动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + @ExcelProperty("规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + @ExcelProperty("宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + @ExcelProperty("高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + @ExcelProperty("厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + @ExcelProperty("材质") + private String specMaterial; + + @Schema(description = "主色风格") + @ExcelProperty("主色风格") + private String mainColor; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java new file mode 100644 index 0000000..0641f88 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleordersku/vo/SaleOrderSkuSaveReqVO.java @@ -0,0 +1,64 @@ +package cn.hangtag.module.oms.controller.admin.saleordersku.vo; + +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 SaleOrderSkuSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24887") + private Long id; + + @Schema(description = "销售订单分表id oms_saleorder_entry", example = "26754") + private String entryId; + + @Schema(description = "数据key") + private String itemKey; + + @Schema(description = "销售订单id oms_saleorder", example = "32307") + private String saleOrderId; + + @Schema(description = "产品id oms_product_info", example = "17865") + private String productId; + + @Schema(description = "数量") + private Integer orderQty; + + @Schema(description = "设计稿id oms_draft_design_data", example = "1282") + private Long draftDesignId; + + @Schema(description = "设计稿宽") + private BigDecimal width; + + @Schema(description = "设计稿高") + private BigDecimal height; + + @Schema(description = "预览图") + private String previewImage; + + @Schema(description = "动态属性 json动态属性") + private String propInfo; + + @Schema(description = "规格 json完整信息") + private String specInfo; + + @Schema(description = "宽(mm)") + private BigDecimal specSizeWidth; + + @Schema(description = "高(mm)") + private BigDecimal specSizeHeight; + + @Schema(description = "厚度(mm)") + private BigDecimal specSizeThk; + + @Schema(description = "材质") + private String specMaterial; + + @Schema(description = "主色风格") + private String mainColor; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java index 0ecd889..561b5f5 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderDO.java @@ -1,5 +1,8 @@ package cn.hangtag.module.oms.dal.dataobject.saleorder; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hutool.core.bean.BeanUtil; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -9,6 +12,7 @@ import java.time.LocalDateTime; import java.time.LocalDateTime; import java.time.LocalDateTime; import java.time.LocalDateTime; + import com.baomidou.mybatisplus.annotation.*; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; @@ -121,4 +125,45 @@ public class SaleOrderDO extends BaseDO { */ private LocalDateTime auditorTime; + /** + * 订单号 + */ + private String orderCode; + /** + * 联系人名称 + */ + private String contactName; + /** + * 固定电话 + */ + private String tel; + /** + * 合同编码 + */ + private String contractCode; + /** + * 零售商单号 + */ + private String retailerCode; + /** + * 发票地址 + */ + private String invoiceAddress; + + + /** + * 品牌id + */ + private Integer brandId; + + /** + * 是否分批交货 分批交货以明细表中的交货日期为准 + */ + private Boolean isBatch; + + + + public SaleOrderDO(CreateSaleOrderDTO dto) { + BeanUtil.copyProperties(dto, this,"bizdate","plansenddate"); + } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java similarity index 93% rename from hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java rename to hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java index 4a89eaf..260b4b7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorder/SaleOrderEntryDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleorderentry/SaleOrderEntryDO.java @@ -1,7 +1,8 @@ package cn.hangtag.module.oms.dal.dataobject.saleorderentry; import lombok.*; -import java.util.*; + +import java.time.LocalDateTime; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.*; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; @@ -59,4 +60,7 @@ public class SaleOrderEntryDO extends BaseDO { */ private BigDecimal amount; + // + private LocalDateTime deliveryDate; + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java new file mode 100644 index 0000000..480ac57 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/saleordersku/SaleOrderSkuDO.java @@ -0,0 +1,100 @@ +package cn.hangtag.module.oms.dal.dataobject.saleordersku; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 销售订单产品属性表 DO + * + * @author 管理员 + */ +@TableName("oms_sale_order_sku") +@KeySequence("oms_sale_order_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderSkuDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 销售订单分表id oms_saleorder_entry + */ + private Long entryId; + /** + * 数据key + */ + private String itemKey; + /** + * 销售订单id oms_saleorder + */ + private String saleOrderId; + /** + * 产品id oms_product_info + */ + private String productId; + /** + * 数量 + */ + private Integer orderQty; + /** + * 设计稿id oms_draft_design_data + */ + private Long draftDesignId; + /** + * 设计稿宽 + */ + private BigDecimal width; + /** + * 设计稿高 + */ + private BigDecimal height; + /** + * 预览图 + */ + private String previewImage; + /** + * 动态属性 json动态属性 + */ + private String propInfo; + /** + * 规格 json完整信息 + */ + private String specInfo; + /** + * 宽(mm) + */ + private BigDecimal specSizeWidth; + /** + * 高(mm) + */ + private BigDecimal specSizeHeight; + /** + * 厚度(mm) + */ + private BigDecimal specSizeThk; + /** + * 材质 + */ + private String specMaterial; + /** + * 主色风格 + */ + private String mainColor; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java new file mode 100644 index 0000000..65f6383 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/saleordersku/SaleOrderSkuMapper.java @@ -0,0 +1,42 @@ +package cn.hangtag.module.oms.dal.mysql.saleordersku; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; + +/** + * 销售订单产品属性表 Mapper + * + * @author 管理员 + */ +@Mapper +public interface SaleOrderSkuMapper extends BaseMapperX { + + default PageResult selectPage(SaleOrderSkuPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SaleOrderSkuDO::getEntryId, reqVO.getEntryId()) + .eqIfPresent(SaleOrderSkuDO::getItemKey, reqVO.getItemKey()) + .eqIfPresent(SaleOrderSkuDO::getSaleOrderId, reqVO.getSaleOrderId()) + .eqIfPresent(SaleOrderSkuDO::getProductId, reqVO.getProductId()) + .eqIfPresent(SaleOrderSkuDO::getOrderQty, reqVO.getOrderQty()) + .eqIfPresent(SaleOrderSkuDO::getDraftDesignId, reqVO.getDraftDesignId()) + .eqIfPresent(SaleOrderSkuDO::getWidth, reqVO.getWidth()) + .eqIfPresent(SaleOrderSkuDO::getHeight, reqVO.getHeight()) + .eqIfPresent(SaleOrderSkuDO::getPreviewImage, reqVO.getPreviewImage()) + .eqIfPresent(SaleOrderSkuDO::getPropInfo, reqVO.getPropInfo()) + .eqIfPresent(SaleOrderSkuDO::getSpecInfo, reqVO.getSpecInfo()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeWidth, reqVO.getSpecSizeWidth()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeHeight, reqVO.getSpecSizeHeight()) + .eqIfPresent(SaleOrderSkuDO::getSpecSizeThk, reqVO.getSpecSizeThk()) + .eqIfPresent(SaleOrderSkuDO::getSpecMaterial, reqVO.getSpecMaterial()) + .eqIfPresent(SaleOrderSkuDO::getMainColor, reqVO.getMainColor()) + .betweenIfPresent(SaleOrderSkuDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SaleOrderSkuDO::getId)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index 732348f..a07eaf0 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java @@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.*; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.*; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderSummaryRespVO; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderTrendReqVO; @@ -99,4 +100,14 @@ public interface SaleOrderService { Long getCountByBillStatus(String value, Long customerId); List> getOrderCountTrendComparison(TradeOrderTrendReqVO reqVO); + + /** + * 下订单 + * + * @param dto DTO + * @return {@link Long } + */ + Long placeOrder(CreateSaleOrderDTO dto); + + public String getNewOrderCode(); } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index 053306e..d925e46 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -1,14 +1,22 @@ package cn.hangtag.module.oms.service.saleorder; import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.util.FuncUtil; import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.framework.common.util.validation.AssertUtil; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.framework.security.core.LoginUser; import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; import cn.hangtag.module.oms.common.utils.NumberChineseFormatterUtils; import cn.hangtag.module.oms.common.utils.WKHtmlToPdfUtil; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; import cn.hangtag.module.oms.controller.admin.product.vo.ProductPriceSaveReqVO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.CreateSaleOrderDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.SaleOrderEntryItemDTO; +import cn.hangtag.module.oms.controller.admin.saleorder.dto.SaleOrderSkuDTO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderRemarkReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; @@ -23,25 +31,34 @@ import cn.hangtag.module.oms.dal.dataobject.salecontract.SaleContractDO; import cn.hangtag.module.oms.dal.dataobject.salecontractentry.SaleContractEntryDO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper; import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper; +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; import cn.hangtag.module.oms.enums.ErrorCodeConstants; import cn.hangtag.module.oms.enums.TimeRangeTypeEnum; import cn.hangtag.module.oms.enums.common.BillStatusEnum; import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum; +import cn.hangtag.module.oms.enums.saleorder.SaleOrderTypeEnum; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import cn.hangtag.module.oms.service.customer.CustomerService; import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; import cn.hangtag.module.oms.service.product.ProductPriceService; import cn.hangtag.module.oms.service.productinfo.ProductInfoService; import cn.hangtag.module.oms.service.salecontract.SaleContractService; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Maps; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +76,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.time.Duration; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -76,24 +94,20 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.SALE_ORDER_NOT_EXIS @Service @Validated @Slf4j +@AllArgsConstructor public class SaleOrderServiceImpl implements SaleOrderService { - @Resource - private SaleOrderMapper saleOrderMapper; - @Resource - private SaleOrderEntryMapper saleOrderEntryMapper; - @Resource - private ProduceOrderService produceOrderService; - @Resource - private ProductInfoService productInfoService; - @Resource - private SaleContractService saleContractService; - @Resource - private CustomerService customerService; - @Resource - private ProductPriceService productPriceService; - @Resource - private TemplateEngine templateEngine; + + private final SaleOrderMapper saleOrderMapper; + private final SaleOrderEntryMapper saleOrderEntryMapper; + private final SaleOrderSkuMapper skuOrderSkuMapper; + private final ProduceOrderService produceOrderService; + private final ProductInfoService productInfoService; + private final SaleContractService saleContractService; + private final CustomerService customerService; + private final ProductPriceService productPriceService; + private final TemplateEngine templateEngine; + @Override @Transactional(rollbackFor = Exception.class) @@ -440,6 +454,111 @@ public class SaleOrderServiceImpl implements SaleOrderService { .collect(Collectors.toList()); } + public static void main(String[] args) { + long l = IdUtil.getSnowflake().nextId(); + System.out.println(l); + } + @Override + @Transactional(rollbackFor = Exception.class) + public Long placeOrder(CreateSaleOrderDTO dto) { + SaleOrderDO order = new SaleOrderDO(dto); + order = wrapperEntity(order, dto); + List saleOrderEntry = dto.getSaleOrderEntry(); + + List entryList = new ArrayList<>(); + List skuList = new ArrayList<>(); + // 转成订单条目 + for (SaleOrderEntryItemDTO itemDTO : saleOrderEntry) { + SaleOrderEntryDO entry = SaleOrderEntryDO.builder() + .id(FuncUtil.getNextId()) + .parentId(order.getId()) + .materialId(itemDTO.getProductId()) + .materialName(itemDTO.getProductName()) + .qty(itemDTO.getOrderQty()) + .deliveryDate(FuncUtil.parseDate(itemDTO.getDeliveryDate())).build(); + + entryList.add(entry); + List productSkuList = itemDTO.getProductSkuList(); + // sku + for (SaleOrderSkuDTO saleOrderSkuDTO : productSkuList) { + SaleOrderSkuDO saleOrderSkuDO = new SaleOrderSkuDO(); + BeanUtil.copyProperties(saleOrderSkuDTO,saleOrderSkuDO); + saleOrderSkuDO.setEntryId(entry.getId()); + saleOrderSkuDO.setId(FuncUtil.getNextId()); + skuList.add(saleOrderSkuDO); + } + + } + saleOrderMapper.insert(order); + saleOrderEntryMapper.insertBatch(entryList); + skuOrderSkuMapper.insertBatch(skuList); + System.out.println(order); + return order.getId(); + } + private static final long codeId = 6L; + @Override + public String getNewOrderCode() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(codeId, false); + checkCode(null,s); + return s; + }catch (ServiceException e){ + log.warn("重复或者下一个编码"); + if(count < 0){ + log.error("编码获取失败"); + return ""; + } + } + } + } + private void checkCode(Long id,String code){ + if(FuncUtil.isNotEmpty(code)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(SaleOrderDO::getId,SaleOrderDO::getOrderCode, BaseDO::getDeleted); + lambdaQueryWrapper.eq(SaleOrderDO::getOrderCode, code); + lambdaQueryWrapper.eq(SaleOrderDO::getDeleted,false); + List dos = saleOrderMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (SaleOrderDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } + private SaleOrderDO wrapperEntity(SaleOrderDO order,CreateSaleOrderDTO dto){ + // 客户信息 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + AssertUtil.isEmpty(loginUser,"登录信息已过期,请重新登录"); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + AssertUtil.isEmpty(customer,"客户信息不存在"); + + order.setCustomerId(customer.getId()); + if(FuncUtil.isEmpty(order.getId())){ + order.setId(FuncUtil.getNextId()); + } + order.setBizdate(LocalDateTime.now()); + order.setPlansenddate( FuncUtil.parseDate(dto.getPlansenddate())); + // 设置订单状态 + order.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); + order.setBillStatus(BillStatusEnum.SAVE.getValue()); + String orderType = order.getOrderType(); + if(FuncUtil.isEmpty(orderType)){ + order.setOrderType(SaleOrderTypeEnum.NORMAL.getType()); + } + order.setBillno(getNewOrderCode()); + return order; + } + private List getOrderCountTrend(Integer timeRangeType, LocalDateTime beginTime, LocalDateTime endTime) { // 情况一:按年统计时,以月份分组 if (TimeRangeTypeEnum.YEAR.getType().equals(timeRangeType)) { diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java new file mode 100644 index 0000000..62113c0 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuService.java @@ -0,0 +1,55 @@ +package cn.hangtag.module.oms.service.saleordersku; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 销售订单产品属性表 Service 接口 + * + * @author 管理员 + */ +public interface SaleOrderSkuService { + + /** + * 创建销售订单产品属性表 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSaleOrderSku(@Valid SaleOrderSkuSaveReqVO createReqVO); + + /** + * 更新销售订单产品属性表 + * + * @param updateReqVO 更新信息 + */ + void updateSaleOrderSku(@Valid SaleOrderSkuSaveReqVO updateReqVO); + + /** + * 删除销售订单产品属性表 + * + * @param id 编号 + */ + void deleteSaleOrderSku(Long id); + + /** + * 获得销售订单产品属性表 + * + * @param id 编号 + * @return 销售订单产品属性表 + */ + SaleOrderSkuDO getSaleOrderSku(Long id); + + /** + * 获得销售订单产品属性表 分页 + * + * @param pageReqVO 分页查询 + * @return 销售订单产品属性表 分页 + */ + PageResult getSaleOrderSkuPage(SaleOrderSkuPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java new file mode 100644 index 0000000..7d8806f --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImpl.java @@ -0,0 +1,74 @@ +package cn.hangtag.module.oms.service.saleordersku; + +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 cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.util.object.BeanUtils; + +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 销售订单产品属性表 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class SaleOrderSkuServiceImpl implements SaleOrderSkuService { + + @Resource + private SaleOrderSkuMapper saleOrderSkuMapper; + + @Override + public Long createSaleOrderSku(SaleOrderSkuSaveReqVO createReqVO) { + // 插入 + SaleOrderSkuDO saleOrderSku = BeanUtils.toBean(createReqVO, SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(saleOrderSku); + // 返回 + return saleOrderSku.getId(); + } + + @Override + public void updateSaleOrderSku(SaleOrderSkuSaveReqVO updateReqVO) { + // 校验存在 + validateSaleOrderSkuExists(updateReqVO.getId()); + // 更新 + SaleOrderSkuDO updateObj = BeanUtils.toBean(updateReqVO, SaleOrderSkuDO.class); + saleOrderSkuMapper.updateById(updateObj); + } + + @Override + public void deleteSaleOrderSku(Long id) { + // 校验存在 + validateSaleOrderSkuExists(id); + // 删除 + saleOrderSkuMapper.deleteById(id); + } + + private void validateSaleOrderSkuExists(Long id) { + if (saleOrderSkuMapper.selectById(id) == null) { + throw exception(SALE_ORDER_SKU_NOT_EXISTS); + } + } + + @Override + public SaleOrderSkuDO getSaleOrderSku(Long id) { + return saleOrderSkuMapper.selectById(id); + } + + @Override + public PageResult getSaleOrderSkuPage(SaleOrderSkuPageReqVO pageReqVO) { + return saleOrderSkuMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml new file mode 100644 index 0000000..f9df915 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/saleordersku/SaleOrderSkuMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java new file mode 100644 index 0000000..526ae18 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/saleordersku/SaleOrderSkuServiceImplTest.java @@ -0,0 +1,194 @@ +package cn.hangtag.module.oms.service.saleordersku; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import cn.hangtag.framework.test.core.ut.BaseDbUnitTest; + +import cn.hangtag.module.oms.controller.admin.saleordersku.vo.*; +import cn.hangtag.module.oms.dal.dataobject.saleordersku.SaleOrderSkuDO; +import cn.hangtag.module.oms.dal.mysql.saleordersku.SaleOrderSkuMapper; +import cn.hangtag.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; +import static cn.hangtag.framework.test.core.util.AssertUtils.*; +import static cn.hangtag.framework.test.core.util.RandomUtils.*; +import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.hangtag.framework.common.util.object.ObjectUtils.*; +import static cn.hangtag.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link SaleOrderSkuServiceImpl} 的单元测试类 + * + * @author 管理员 + */ +@Import(SaleOrderSkuServiceImpl.class) +public class SaleOrderSkuServiceImplTest extends BaseDbUnitTest { + + @Resource + private SaleOrderSkuServiceImpl saleOrderSkuService; + + @Resource + private SaleOrderSkuMapper saleOrderSkuMapper; + + @Test + public void testCreateSaleOrderSku_success() { + // 准备参数 + SaleOrderSkuSaveReqVO createReqVO = randomPojo(SaleOrderSkuSaveReqVO.class).setId(null); + + // 调用 + Long saleOrderSkuId = saleOrderSkuService.createSaleOrderSku(createReqVO); + // 断言 + assertNotNull(saleOrderSkuId); + // 校验记录的属性是否正确 + SaleOrderSkuDO saleOrderSku = saleOrderSkuMapper.selectById(saleOrderSkuId); + assertPojoEquals(createReqVO, saleOrderSku, "id"); + } + + @Test + public void testUpdateSaleOrderSku_success() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(dbSaleOrderSku);// @Sql: 先插入出一条存在的数据 + // 准备参数 + SaleOrderSkuSaveReqVO updateReqVO = randomPojo(SaleOrderSkuSaveReqVO.class, o -> { + o.setId(dbSaleOrderSku.getId()); // 设置更新的 ID + }); + + // 调用 + saleOrderSkuService.updateSaleOrderSku(updateReqVO); + // 校验是否更新正确 + SaleOrderSkuDO saleOrderSku = saleOrderSkuMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, saleOrderSku); + } + + @Test + public void testUpdateSaleOrderSku_notExists() { + // 准备参数 + SaleOrderSkuSaveReqVO updateReqVO = randomPojo(SaleOrderSkuSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> saleOrderSkuService.updateSaleOrderSku(updateReqVO), SALE_ORDER_SKU_NOT_EXISTS); + } + + @Test + public void testDeleteSaleOrderSku_success() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class); + saleOrderSkuMapper.insert(dbSaleOrderSku);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbSaleOrderSku.getId(); + + // 调用 + saleOrderSkuService.deleteSaleOrderSku(id); + // 校验数据不存在了 + assertNull(saleOrderSkuMapper.selectById(id)); + } + + @Test + public void testDeleteSaleOrderSku_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> saleOrderSkuService.deleteSaleOrderSku(id), SALE_ORDER_SKU_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetSaleOrderSkuPage() { + // mock 数据 + SaleOrderSkuDO dbSaleOrderSku = randomPojo(SaleOrderSkuDO.class, o -> { // 等会查询到 + o.setEntryId(null); + o.setItemKey(null); + o.setSaleOrderId(null); + o.setProductId(null); + o.setOrderQty(null); + o.setDraftDesignId(null); + o.setWidth(null); + o.setHeight(null); + o.setPreviewImage(null); + o.setPropInfo(null); + o.setSpecInfo(null); + o.setSpecSizeWidth(null); + o.setSpecSizeHeight(null); + o.setSpecSizeThk(null); + o.setSpecMaterial(null); + o.setMainColor(null); + o.setCreateTime(null); + }); + saleOrderSkuMapper.insert(dbSaleOrderSku); + // 测试 entryId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setEntryId(null))); + // 测试 itemKey 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setItemKey(null))); + // 测试 saleOrderId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSaleOrderId(null))); + // 测试 productId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setProductId(null))); + // 测试 orderQty 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setOrderQty(null))); + // 测试 draftDesignId 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setDraftDesignId(null))); + // 测试 width 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setWidth(null))); + // 测试 height 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setHeight(null))); + // 测试 previewImage 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setPreviewImage(null))); + // 测试 propInfo 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setPropInfo(null))); + // 测试 specInfo 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecInfo(null))); + // 测试 specSizeWidth 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeWidth(null))); + // 测试 specSizeHeight 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeHeight(null))); + // 测试 specSizeThk 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecSizeThk(null))); + // 测试 specMaterial 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setSpecMaterial(null))); + // 测试 mainColor 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setMainColor(null))); + // 测试 createTime 不匹配 + saleOrderSkuMapper.insert(cloneIgnoreId(dbSaleOrderSku, o -> o.setCreateTime(null))); + // 准备参数 + SaleOrderSkuPageReqVO reqVO = new SaleOrderSkuPageReqVO(); + reqVO.setEntryId(null); + reqVO.setItemKey(null); + reqVO.setSaleOrderId(null); + reqVO.setProductId(null); + reqVO.setOrderQty(null); + reqVO.setDraftDesignId(null); + reqVO.setWidth(null); + reqVO.setHeight(null); + reqVO.setPreviewImage(null); + reqVO.setPropInfo(null); + reqVO.setSpecInfo(null); + reqVO.setSpecSizeWidth(null); + reqVO.setSpecSizeHeight(null); + reqVO.setSpecSizeThk(null); + reqVO.setSpecMaterial(null); + reqVO.setMainColor(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = saleOrderSkuService.getSaleOrderSkuPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbSaleOrderSku, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js b/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js deleted file mode 100644 index 6ee86b4..0000000 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/productprocess/index.js +++ /dev/null @@ -1,53 +0,0 @@ -import request from '@/utils/request' - -// 创建产品工艺 -export function createProductProcess(data) { - return request({ - url: '/oms/product-process/create', - method: 'post', - data: data - }) -} - -// 更新产品工艺 -export function updateProductProcess(data) { - return request({ - url: '/oms/product-process/update', - method: 'put', - data: data - }) -} - -// 删除产品工艺 -export function deleteProductProcess(id) { - return request({ - url: '/oms/product-process/delete?id=' + id, - method: 'delete' - }) -} - -// 获得产品工艺 -export function getProductProcess(id) { - return request({ - url: '/oms/product-process/get?id=' + id, - method: 'get' - }) -} - -// 获得产品工艺 分页 -export function getProductProcessPage(params) { - return request({ - url: '/oms/product-process/page', - method: 'get', - params - }) -} -// 导出产品工艺 Excel -export function exportProductProcessExcel(params) { - return request({ - url: '/oms/product-process/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue index ca73045..5adf6d5 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue @@ -184,7 +184,7 @@ const loginData = reactive({ captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE, tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE, loginForm: { - tenantName: '', + tenantName: '芋道源码', username: '', password: '', captchaVerification: '', diff --git a/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts b/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts index 24f275e..12c027d 100644 --- a/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts +++ b/hangtag-ui/hangtag-ui-front/src/api/oms/saleorder/index.ts @@ -103,6 +103,10 @@ export const SaleOrderApi = { // 更新分录数据 updateOrderEntrys: async (data: SaleOrderVO) => { return await request.put({ url: `/oms/sale-order/update-entrys`, data }) - } + }, + // 下单 + placeOrder: async (data: any) => { + return await request.post({ url: `/front/oms/sale-order/placeOrder`, data }) + }, } diff --git a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue index 50d550b..c96ffca 100644 --- a/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue +++ b/hangtag-ui/hangtag-ui-front/src/components/ProductInfoList/index.vue @@ -129,7 +129,6 @@ const that = reactive({ selectRow:[], queryInfo:{ productTypeId: null, - } }) @@ -139,12 +138,16 @@ const getLabel = (id)=>{ const res = that.typeList.find(item=>item.id === id); return res ? res.label : id } -const openDialog = () => { +const openDialog = (filter = {}) => { + that.queryInfo = { + ...that.queryInfo, + ...filter + } updateVisible(true); if(that.typeList.length === 0 ){ ProductTypeApi.getProductTypePage({ pageNo: 1, - pageSize: 100 + pageSize: 100, }).then(res=>{ that.typeList = res.list }) diff --git a/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts b/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts new file mode 100644 index 0000000..f82edc5 --- /dev/null +++ b/hangtag-ui/hangtag-ui-front/src/constants/EmitEventName.ts @@ -0,0 +1,2 @@ + +export const STEP0_FINISH:string = 'step0finish' diff --git a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue index fa3c234..a754277 100644 --- a/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue +++ b/hangtag-ui/hangtag-ui-front/src/views/oms/order/createorder/components/OrderAddProductStep/ProductList.vue @@ -36,12 +36,16 @@ @@ -52,15 +56,41 @@