浏览代码

新增大宗定制,图稿确认功能

fgd 1 年之前
父节点
当前提交
5a4da3d599
共有 32 个文件被更改,包括 632 次插入28 次删除
  1. 7 0
      sd-business/src/main/java/com/sd/business/controller/bom/BomClassifyController.java
  2. 19 1
      sd-business/src/main/java/com/sd/business/controller/order/OrderController.java
  3. 26 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderSkuController.java
  4. 2 2
      sd-business/src/main/java/com/sd/business/controller/sku/SkuUserController.java
  5. 11 0
      sd-business/src/main/java/com/sd/business/entity/artwork/dto/ArtworkLibrarySelectDto.java
  6. 21 0
      sd-business/src/main/java/com/sd/business/entity/artwork/po/ArtworkLibrary.java
  7. 66 0
      sd-business/src/main/java/com/sd/business/entity/bom/bo/BomSpecBo.java
  8. 2 2
      sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecSelectDto.java
  9. 31 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/BulkOrderConfirmDto.java
  10. 0 1
      sd-business/src/main/java/com/sd/business/entity/order/enums/ArtworkLogTypeEnum.java
  11. 3 1
      sd-business/src/main/java/com/sd/business/entity/order/enums/OrderStatusEnum.java
  12. 1 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java
  13. 26 7
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java
  14. 5 3
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderSkuArtworkLog.java
  15. 53 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/BulkOrderVo.java
  16. 10 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderInfoVo.java
  17. 0 4
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuArtworkLogVo.java
  18. 15 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuVo.java
  19. 3 0
      sd-business/src/main/java/com/sd/business/entity/sku/enums/SkuPackagingEnum.java
  20. 1 0
      sd-business/src/main/java/com/sd/business/service/area/impl/AreaUserServiceImpl.java
  21. 6 0
      sd-business/src/main/java/com/sd/business/service/artwork/impl/ArtworkLibraryServiceImpl.java
  22. 5 0
      sd-business/src/main/java/com/sd/business/service/bom/BomClassifyService.java
  23. 6 0
      sd-business/src/main/java/com/sd/business/service/bom/BomSpecService.java
  24. 19 0
      sd-business/src/main/java/com/sd/business/service/bom/impl/BomClassifyServiceImpl.java
  25. 23 1
      sd-business/src/main/java/com/sd/business/service/bom/impl/BomSpecServiceImpl.java
  26. 14 0
      sd-business/src/main/java/com/sd/business/service/order/OrderService.java
  27. 17 0
      sd-business/src/main/java/com/sd/business/service/order/OrderSkuService.java
  28. 115 1
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java
  29. 0 3
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuArtworkLogServiceImpl.java
  30. 121 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuServiceImpl.java
  31. 1 1
      sd-business/src/main/java/com/sd/business/service/sku/SkuUserService.java
  32. 3 1
      sd-business/src/main/java/com/sd/business/service/sku/impl/SkuUserServiceImpl.java

+ 7 - 0
sd-business/src/main/java/com/sd/business/controller/bom/BomClassifyController.java

@@ -69,4 +69,11 @@ public class BomClassifyController {
         bomClassifyService.delete(dto.getId());
     }
 
+    /**
+     * bom分类列表
+     */
+    @PostMapping("/list")
+    public List<BomClassifyVo> list() {
+        return bomClassifyService.getList();
+    }
 }

+ 19 - 1
sd-business/src/main/java/com/sd/business/controller/order/OrderController.java

@@ -1,5 +1,8 @@
 package com.sd.business.controller.order;
 
+import com.sd.business.entity.order.dto.BulkOrderConfirmDto;
+import com.sd.business.entity.order.vo.BulkOrderVo;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sd.business.entity.order.vo.OrderInfoVo;
@@ -45,7 +48,7 @@ public class OrderController {
      * 订单新增
      */
     @PostMapping("/add")
-    public void add(@RequestBody OrderInfoDto dto) {
+    public void add(@Validated @RequestBody OrderInfoDto dto) {
         orderService.add(dto);
     }
 
@@ -65,4 +68,19 @@ public class OrderController {
         orderService.delete(dto.getId());
     }
 
+    /**
+     * 大宗订单分页
+     */
+    @PostMapping("/bulkOrderPage")
+    public Page<BulkOrderVo> bulkOrderPage(@RequestBody OrderInfoSelectDto dto) {
+        return orderService.getBulkOrderPage(dto);
+    }
+
+    /**
+     * 大宗订单确认
+     */
+    @PostMapping("/bulkOrderConfirm")
+    public void bulkOrderConfirm(@RequestBody BulkOrderConfirmDto dto) {
+        orderService.bulkOrderConfirm(dto);
+    }
 }

+ 26 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderSkuController.java

@@ -1,7 +1,14 @@
 package com.sd.business.controller.order;
 
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.order.dto.OrderSkuArtworkLogDto;
+import com.sd.business.entity.order.vo.OrderSkuVo;
+import com.sd.business.service.order.OrderSkuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 
 /**
  * <p>
@@ -15,5 +22,24 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/orderSku")
 public class OrderSkuController {
 
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    /**
+     * 获取订单sku未确认图稿列表
+     */
+    @PostMapping("/getUnconfirmedArtworkList")
+    public List<OrderSkuVo> getUnconfirmedArtworkList(@RequestBody BaseSelectDto dto) {
+        return orderSkuService.getUnconfirmedArtworkList(dto.getId());
+    }
+
+    /**
+     * 订单sku打样图稿确认
+     */
+    @PostMapping("/confirmArtwork")
+    public void confirmArtwork(@Validated @RequestBody OrderSkuArtworkLogDto dto) {
+        orderSkuService.confirmArtwork(dto);
+    }
+
 
 }

+ 2 - 2
sd-business/src/main/java/com/sd/business/controller/sku/SkuUserController.java

@@ -49,8 +49,8 @@ public class SkuUserController {
      * 用户专属sku新增
      */
     @PostMapping("/add")
-    public void add(@Validated @RequestBody SkuUserDto dto) {
-        skuUserService.add(dto);
+    public Long add(@Validated @RequestBody SkuUserDto dto) {
+        return skuUserService.add(dto);
     }
 
     /**

+ 11 - 0
sd-business/src/main/java/com/sd/business/entity/artwork/dto/ArtworkLibrarySelectDto.java

@@ -4,6 +4,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 图稿库列表查询入参实体
  *
@@ -24,4 +26,13 @@ public class ArtworkLibrarySelectDto extends BaseSelectDto {
      */
     private Integer type;
 
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
 }

+ 21 - 0
sd-business/src/main/java/com/sd/business/entity/artwork/po/ArtworkLibrary.java

@@ -5,6 +5,8 @@ import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * <p>
  * 图稿库
@@ -29,6 +31,11 @@ public class ArtworkLibrary extends BasePo {
     private Integer type;
 
     /**
+     * 图稿类型 1-logo,2-体位线
+     */
+    private Integer artworkType;
+
+    /**
      * 图片id
      */
     private Long imgId;
@@ -58,4 +65,18 @@ public class ArtworkLibrary extends BasePo {
      */
     private String fileUrl;
 
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * mes系统id
+     */
+    private Long mesId;
 }

+ 66 - 0
sd-business/src/main/java/com/sd/business/entity/bom/bo/BomSpecBo.java

@@ -0,0 +1,66 @@
+package com.sd.business.entity.bom.bo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class BomSpecBo {
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * bom规格编码
+     */
+    private String bomSpecCode;
+
+    /**
+     * bom规格名称
+     */
+    private String bomSpecName;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String bomSpecies;
+
+    /**
+     * 成本价
+     */
+    private BigDecimal costPrice;
+
+    /**
+     * 对内销售价(含税)
+     */
+    private BigDecimal internalSellingPrice;
+
+    /**
+     * 对外销售价(含税)
+     */
+    private BigDecimal externalSellingPrice;
+
+    /**
+     * 分类id
+     */
+    private Long classifyId;
+
+    /**
+     * 分类名称
+     */
+    private String classifyName;
+
+    /**
+     * 分类编号
+     */
+    private String classifyCode;
+
+    /**
+     * 分类父id
+     */
+    private Long classifyParentId;
+}

+ 2 - 2
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecSelectDto.java

@@ -17,9 +17,9 @@ import java.math.BigDecimal;
 public class BomSpecSelectDto extends BaseSelectDto {
 
     /**
-     * bom分类分类编码 瑜伽垫裸垫-201.G 瑜伽砖裸砖-202.G 跳绳垫裸垫-203.G
+     * bom分类id
      */
-    private String bomClassifyCode;
+    private Long bomClassifyId;
 
     /**
      * 长 cm

+ 31 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/BulkOrderConfirmDto.java

@@ -0,0 +1,31 @@
+package com.sd.business.entity.order.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 大宗订单确认入参实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BulkOrderConfirmDto {
+
+    /**
+     * 订单id
+     */
+    private Long id;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 是否确认 1是 0否
+     */
+    private Integer isConfirm;
+
+}

+ 0 - 1
sd-business/src/main/java/com/sd/business/entity/order/enums/ArtworkLogTypeEnum.java

@@ -15,7 +15,6 @@ import java.util.Map;
 public enum ArtworkLogTypeEnum {
     UPLOAD_BLUEPRINT(10, "上传设计图"),
     UPLOAD_PROOFING_IMG(20, "上传打样图"),
-    UPLOAD_PROOFING_DOCUMENT(21, "上传打样图稿"),
     REJECT_PROOFING_IMG(22, "驳回打样图稿"),
     CONFIRM_PROOFING_IMG(30, "确认打样图"),
     UPLOAD_PRODUCTION_DOCUMENT(40, "上传设计图稿"),

+ 3 - 1
sd-business/src/main/java/com/sd/business/entity/order/enums/OrderStatusEnum.java

@@ -13,7 +13,9 @@ import java.util.Map;
 @Getter
 @AllArgsConstructor
 public enum OrderStatusEnum {
-    TO_BE_PAID(10, "待支付"),
+    PENDING_REVIEW(3, "订单待审核"),
+    REJECT(5, "订单驳回"),
+    PENDING_PAYMENT(10, "待支付"),
     CANCEL_PAYMENT(20, "取消支付"),
     ARTWORK_UNDER_REVIEW(30, "图稿待确认"),
     WAIT_FOR_DELIVERY(40, "待发货"),

+ 1 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java

@@ -28,6 +28,7 @@ public class OrderInfo extends BasePo {
 
     /**
      * 进度
+     *  {@link com.sd.business.entity.order.enums.OrderStatusEnum }
      */
     private Integer status;
 

+ 26 - 7
sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java

@@ -37,10 +37,14 @@ public class OrderSku extends BasePo {
     /**
      * bom规格id
      */
-    @NotNull
     private Long bomSpecId;
 
     /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
+
+    /**
      * 长 cm
      */
     @NotNull
@@ -62,6 +66,26 @@ public class OrderSku extends BasePo {
     private BigDecimal height;
 
     /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+    /**
      * 包材配置集合
      * {@link com.sd.business.entity.sku.enums.SkuPackagingEnum }
      */
@@ -89,11 +113,6 @@ public class OrderSku extends BasePo {
     private String proofingImg;
 
     /**
-     * 打样文件
-     */
-    private String proofingDocument;
-
-    /**
      * 数量
      */
     @NotNull
@@ -127,7 +146,7 @@ public class OrderSku extends BasePo {
     /**
      * 是否打样 1是 0否
      */
-    private Boolean isProofing;
+    private Integer isProofing;
 
     /**
      * 打印 1单面 2 双面

+ 5 - 3
sd-business/src/main/java/com/sd/business/entity/order/po/OrderSkuArtworkLog.java

@@ -2,9 +2,8 @@ package com.sd.business.entity.order.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
 import lombok.Getter;
+import lombok.NonNull;
 import lombok.Setter;
 
 /**
@@ -23,16 +22,19 @@ public class OrderSkuArtworkLog extends BasePo {
     /**
      * 订单id
      */
+    @NonNull
     private Long orderId;
 
     /**
      * 订单sku id
      */
+    @NonNull
     private Long orderSkuId;
 
     /**
-     * 类型 10上传设计图 20上传打样图 21上传打样图稿 22驳回打样图稿 30确认打样图 40上传设计图稿
+     * 类型 10上传设计图 20上传打样图 22驳回打样图稿 30确认打样图 40上传设计图稿
      */
+    @NonNull
     private Integer type;
 
     /**

+ 53 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/BulkOrderVo.java

@@ -0,0 +1,53 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderInfo;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+
+/**
+ * 大宗订单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-04
+ */
+@Getter
+@Setter
+public class BulkOrderVo extends OrderInfo {
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal length;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal width;
+
+    /**
+     * 高 cm
+     */
+    private BigDecimal height;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String chromatophore;
+
+    /**
+     * 颜色
+     */
+    private String colour;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String frontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String reverseGrain;
+
+}

+ 10 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderInfoVo.java

@@ -17,6 +17,16 @@ import java.util.List;
 public class OrderInfoVo extends OrderInfo {
 
     /**
+     * sku品号
+     */
+    private String skuCode;
+
+    /**
+     * bom品号
+     */
+    private String bomSpecCode;
+
+    /**
      * 订单商品
      */
     private List<OrderSkuVo> orderSkuList;

+ 0 - 4
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuArtworkLogVo.java

@@ -13,8 +13,4 @@ import lombok.Setter;
 @Getter
 @Setter
 public class OrderSkuArtworkLogVo extends OrderSkuArtworkLog {
-    /**
-     * 创建人名称
-     */
-    private String userName;
 }

+ 15 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuVo.java

@@ -19,4 +19,19 @@ public class OrderSkuVo extends OrderSku {
      */
     private String skuName;
 
+    /**
+     * sku品号
+     */
+    private String skuCode;
+
+    /**
+     * bom品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * bom品名
+     */
+    private String bomSpecName;
+
 }

+ 3 - 0
sd-business/src/main/java/com/sd/business/entity/sku/enums/SkuPackagingEnum.java

@@ -14,6 +14,9 @@ public enum SkuPackagingEnum {
     SELF_ADHESIVE_STICKER("5", "不干胶"),
     DROP("6", "吊牌"),
     LOGISTICS_PACKAGING_MATERIAL("7", "快递包材"),
+    PE_BAG("8", "PE袋"),
+    BUBBLE_PACK("9", "气泡袋"),
+    OTHER_PACKING_MATERIAL("10", "其他包材"),
 
     ;
 

+ 1 - 0
sd-business/src/main/java/com/sd/business/service/area/impl/AreaUserServiceImpl.java

@@ -41,6 +41,7 @@ public class AreaUserServiceImpl extends ServiceImpl<AreaUserMapper, AreaUser> i
         Page<AreaUserVo> page = Sql.create(AreaUserVo.class)
                 .selectAll(AreaUser.class)
                 .from(AreaUser.class)
+                .eq(AreaUser::getCreateUser, SecurityUtils.getUserId())
                 .orderByDesc(AreaUser::getId)
                 .page(dto);
 

+ 6 - 0
sd-business/src/main/java/com/sd/business/service/artwork/impl/ArtworkLibraryServiceImpl.java

@@ -39,6 +39,12 @@ public class ArtworkLibraryServiceImpl extends ServiceImpl<ArtworkLibraryMapper,
                 .from(ArtworkLibrary.class)
                 .like(ArtworkLibrary::getArtworkName, dto.getArtworkName())
                 .eq(ArtworkLibrary::getType, dto.getType())
+                .and(Objects.equals(dto.getType(), 2),
+                        q -> q.eq(ArtworkLibrary::getArtworkType, 1)
+                                .or()
+                                .eq(ArtworkLibrary::getArtworkType, 2)
+                                .eq(ArtworkLibrary::getLength, dto.getLength())
+                                .eq(ArtworkLibrary::getWidth, dto.getWidth()))
                 .eq(Objects.equals(dto.getType(), 2), ArtworkLibrary::getCreateUser, SecurityUtils.getUserId())
                 .orderByDesc(ArtworkLibrary::getId)
                 .page(dto);

+ 5 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomClassifyService.java

@@ -44,4 +44,9 @@ public interface BomClassifyService extends BaseService<BomClassify> {
      */
     void delete(Long id);
 
+    /**
+     * bom分类列表
+     * @return
+     */
+    List<BomClassifyVo> getList();
 }

+ 6 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomSpecService.java

@@ -2,6 +2,7 @@ package com.sd.business.service.bom;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.dto.BomSpecDto;
 import com.sd.business.entity.bom.dto.BomSpecSelectDto;
 import com.sd.business.entity.bom.po.BomSpec;
@@ -43,4 +44,9 @@ public interface BomSpecService extends BaseService<BomSpec> {
      */
     void delete(Long id);
 
+    /**
+     * bom规格详情
+     */
+    BomSpecBo getBomSpecBoById(Long id);
+
 }

+ 19 - 0
sd-business/src/main/java/com/sd/business/service/bom/impl/BomClassifyServiceImpl.java

@@ -70,4 +70,23 @@ public class BomClassifyServiceImpl extends ServiceImpl<BomClassifyMapper, BomCl
         removeById(id);
     }
 
+    @Override
+    public List<BomClassifyVo> getList() {
+        List<BomClassifyVo> list = Sql.create(BomClassifyVo.class)
+                .selectAll(BomClassify.class)
+                .from(BomClassify.class)
+                .eq(BomClassify::getParentId, 1)
+                .orderByAsc(BomClassify::getSort)
+                .list();
+        for (BomClassifyVo bomClassifyVo : list) {
+            String name = bomClassifyVo.getName();
+            int index = name.indexOf("裸");
+            if (index < 0) {
+                continue;
+            }
+            bomClassifyVo.setName(name.substring(0, index));
+        }
+        return list;
+    }
+
 }

+ 23 - 1
sd-business/src/main/java/com/sd/business/service/bom/impl/BomSpecServiceImpl.java

@@ -2,6 +2,7 @@ package com.sd.business.service.bom.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.bom.bo.BomSpecBo;
 import com.sd.business.entity.bom.dto.BomSpecDto;
 import com.sd.business.entity.bom.dto.BomSpecSelectDto;
 import com.sd.business.entity.bom.po.Bom;
@@ -36,7 +37,7 @@ public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> impl
                 .from(BomSpec.class)
                 .innerJoin(Bom.class, Bom::getId, BomSpec::getBomId)
                 .innerJoin(BomClassify.class, BomClassify::getId, Bom::getBomClassifyId)
-                .eq(BomClassify::getCode, dto.getBomClassifyCode())
+                .eq(BomClassify::getId, dto.getBomClassifyId())
                 .eq(BomSpec::getLength, dto.getLength())
                 .eq(BomSpec::getWidth, dto.getWidth())
                 .eq(BomSpec::getHeight, dto.getHeight())
@@ -84,4 +85,25 @@ public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> impl
         removeById(id);
     }
 
+    @Override
+    public BomSpecBo getBomSpecBoById(Long id) {
+        return Sql.create(BomSpecBo.class)
+                .selectAs(BomSpec::getId, BomSpecBo::getBomSpecId)
+                .selectAs(BomSpec::getCode, BomSpecBo::getBomSpecCode)
+                .selectAs(BomSpec::getName, BomSpecBo::getBomSpecName)
+                .select(BomSpec::getCostPrice)
+                .select(BomSpec::getInternalSellingPrice)
+                .select(BomSpec::getExternalSellingPrice)
+                .selectAs(Bom::getSpecies, BomSpecBo::getBomSpecies)
+                .selectAs(BomClassify::getId, BomSpecBo::getClassifyId)
+                .selectAs(BomClassify::getName, BomSpecBo::getClassifyName)
+                .selectAs(BomClassify::getCode, BomSpecBo::getClassifyCode)
+                .selectAs(BomClassify::getParentId, BomSpecBo::getClassifyParentId)
+                .from(BomSpec.class)
+                .innerJoin(Bom.class, Bom::getId, BomSpec::getBomId)
+                .innerJoin(BomClassify.class, BomClassify::getId, Bom::getBomClassifyId)
+                .eq(BomSpec::getId, id)
+                .one();
+    }
+
 }

+ 14 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderService.java

@@ -1,8 +1,10 @@
 package com.sd.business.service.order;
 
+import com.sd.business.entity.order.dto.BulkOrderConfirmDto;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.order.vo.BulkOrderVo;
 import com.sd.business.entity.order.vo.OrderInfoVo;
 import com.sd.business.entity.order.dto.OrderInfoSelectDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
@@ -43,4 +45,16 @@ public interface OrderService extends BaseService<OrderInfo> {
      */
     void delete(Long id);
 
+    /**
+     * 大宗订单分页
+     * @param dto
+     * @return
+     */
+    Page<BulkOrderVo> getBulkOrderPage(OrderInfoSelectDto dto);
+
+    /**
+     * 大宗订单确认
+     * @param dto
+     */
+    void bulkOrderConfirm(BulkOrderConfirmDto dto);
 }

+ 17 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderSkuService.java

@@ -1,7 +1,11 @@
 package com.sd.business.service.order;
 
+import com.sd.business.entity.order.dto.OrderSkuArtworkLogDto;
 import com.sd.business.entity.order.po.OrderSku;
 import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.vo.OrderSkuVo;
+
+import java.util.List;
 
 
 /**
@@ -14,4 +18,17 @@ import com.ruoyi.common.core.service.BaseService;
  */
 public interface OrderSkuService extends BaseService<OrderSku> {
 
+    /**
+     * 获取订单sku未确认图稿列表
+     *
+     * @param orderId
+     * @return
+     */
+    List<OrderSkuVo> getUnconfirmedArtworkList(Long orderId);
+
+    /**
+     * 订单sku打样图稿确认
+     * @param dto
+     */
+    void confirmArtwork(OrderSkuArtworkLogDto dto);
 }

+ 115 - 1
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -1,31 +1,46 @@
 package com.sd.business.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.order.dto.BulkOrderConfirmDto;
 import com.sd.business.entity.order.dto.OrderInfoDto;
 import com.sd.business.entity.order.dto.OrderInfoSelectDto;
 import com.sd.business.entity.order.dto.OrderSkuDto;
 import com.sd.business.entity.order.enums.ArtworkLogTypeEnum;
+import com.sd.business.entity.order.enums.OrderStatusEnum;
 import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.order.po.OrderSkuArtworkLog;
+import com.sd.business.entity.order.po.OrderSkuArtworkMake;
+import com.sd.business.entity.order.vo.BulkOrderVo;
 import com.sd.business.entity.order.vo.OrderInfoVo;
 import com.sd.business.entity.order.vo.OrderSkuVo;
+import com.sd.business.entity.sku.po.SkuUser;
 import com.sd.business.mapper.order.OrderMapper;
 import com.sd.business.service.bom.BomSpecService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuArtworkLogService;
+import com.sd.business.service.order.OrderSkuArtworkMakeService;
 import com.sd.business.service.order.OrderSkuService;
+import com.sd.business.service.sku.SkuUserService;
 import com.sd.business.util.CodeEnum;
 import com.sd.framework.util.Assert;
 import com.sd.framework.util.sql.Sql;
+import com.sd.mq.config.OrderConfig;
+import com.sd.mq.entity.OrderMessage;
+import com.sd.mq.entity.OrderSkuDetail;
+import com.sd.mq.util.RabbitMqUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -44,17 +59,31 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
     private OrderSkuService orderSkuService;
 
     @Autowired
+    private OrderSkuArtworkMakeService orderSkuArtworkMakeService;
+
+    @Autowired
     private OrderSkuArtworkLogService orderSkuArtworkLogService;
 
     @Autowired
     private BomSpecService bomSpecService;
 
+    @Autowired
+    private SkuUserService skuUserService;
+
     @Override
     public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
 
         Page<OrderInfoVo> page = Sql.create(OrderInfoVo.class)
                 .selectAll(OrderInfo.class)
+                .selectAs(BomSpec::getCode, OrderInfoVo::getBomSpecCode)
+                .selectAs(SkuUser::getCode, OrderInfoVo::getSkuCode)
                 .from(OrderInfo.class)
+                .innerJoin(OrderSku.class, OrderSku::getOrderId, OrderInfo::getId)
+                .leftJoin(BomSpec.class, BomSpec::getId, OrderSku::getBomSpecId)
+                .leftJoin(SkuUser.class, SkuUser::getId, OrderSku::getSkuUserId)
+                .like(OrderInfo::getCode, dto.getCode())
+                .like(SkuUser::getCode, dto.getSkuCode())
+                .eq(OrderInfo::getCreateUser, SecurityUtils.getUserId())
                 .orderByDesc(OrderInfo::getId)
                 .page(dto);
 
@@ -76,7 +105,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
         List<OrderSku> tempOrderSkuList = orderSkuService.list(q -> q.eq(OrderSku::getOrderId, id));
         List<OrderSkuVo> orderSkuList = BeanUtil.copyToList(tempOrderSkuList, OrderSkuVo.class);
         bomSpecService.attributeAssign(orderSkuList, OrderSkuVo::getBomSpecId, (item, bomSpec) -> {
-            item.setSkuName(bomSpec.getName());
+            item.setBomSpecCode(bomSpec.getCode());
+            item.setBomSpecName(bomSpec.getName());
+        });
+        skuUserService.attributeAssign(orderSkuList, OrderSkuVo::getSkuUserId, (item, skuUser) -> {
+            item.setSkuCode(skuUser.getCode());
+            item.setSkuName(skuUser.getName());
         });
         vo.setOrderSkuList(orderSkuList);
 
@@ -97,6 +131,20 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
                 .collect(Collectors.toList());
         orderSkuService.saveBatch(tempOrderSkuList);
 
+        // 新增订单产品制作图稿数据
+        List<OrderSkuArtworkMake> orderSkuArtworkMakeList = tempOrderSkuList.stream()
+                .filter(item -> StrUtil.isBlank(item.getProductionDocument()))
+                .map(item -> {
+                    OrderSkuArtworkMake orderSkuArtworkMake = new OrderSkuArtworkMake();
+                    orderSkuArtworkMake.setOrderId(dto.getId());
+                    orderSkuArtworkMake.setOrderSkuId(item.getId());
+                    orderSkuArtworkMake.setBlueprint(item.getBlueprint());
+                    orderSkuArtworkMake.setBlueprintDetails(item.getBlueprintDetails());
+                    orderSkuArtworkMake.setStatus(StatusConstant.NO);
+                    return orderSkuArtworkMake;
+                }).collect(Collectors.toList());
+        orderSkuArtworkMakeService.saveBatch(orderSkuArtworkMakeList);
+
         // 新增订单产品图稿操作日志
         List<OrderSkuArtworkLog> orderSkuArtworkLogList = tempOrderSkuList.stream().map(item -> {
             OrderSkuArtworkLog orderSkuArtworkLog = new OrderSkuArtworkLog();
@@ -107,6 +155,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             return orderSkuArtworkLog;
         }).collect(Collectors.toList());
         orderSkuArtworkLogService.saveBatch(orderSkuArtworkLogList);
+
+        sendMq(dto);
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -126,6 +176,70 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
     @Override
     public void delete(Long id) {
         removeById(id);
+        orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
+        orderSkuArtworkMakeService.remove(q -> q.eq(OrderSkuArtworkMake::getOrderId, id));
+        orderSkuArtworkLogService.remove(q -> q.eq(OrderSkuArtworkLog::getOrderId, id));
     }
 
+    @Override
+    public Page<BulkOrderVo> getBulkOrderPage(OrderInfoSelectDto dto) {
+
+        Page<BulkOrderVo> page = Sql.create(BulkOrderVo.class)
+                .selectAll(OrderInfo.class)
+                .select(OrderSku::getLength)
+                .select(OrderSku::getWidth)
+                .select(OrderSku::getHeight)
+                .select(OrderSku::getChromatophore)
+                .select(OrderSku::getColour)
+                .select(OrderSku::getFrontGrain)
+                .select(OrderSku::getReverseGrain)
+                .from(OrderInfo.class)
+                .innerJoin(OrderSku.class, OrderSku::getOrderId, OrderInfo::getId)
+                .like(OrderInfo::getCode, dto.getCode())
+                .isNull(OrderSku::getBomSpecId)
+                .orderByDesc(OrderInfo::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void bulkOrderConfirm(BulkOrderConfirmDto dto) {
+        OrderInfo orderInfo = this.getById(dto.getId());
+        Assert.notNull(orderInfo, "未知数据");
+        if (Objects.equals(dto.getIsConfirm(), StatusConstant.YES)) {
+            Assert.notNull(dto.getBomSpecId(), "请选择bom");
+            BomSpec bomSpec = bomSpecService.getById(dto.getBomSpecId());
+            Assert.notNull(bomSpec, "未知bom");
+            OrderSku orderSku = orderSkuService.getOne(q -> q.eq(OrderSku::getOrderId, dto.getId()));
+            orderSku.setBomSpecId(bomSpec.getId());
+            orderSkuService.updateById(orderSku);
+            orderInfo.setStatus(OrderStatusEnum.PENDING_PAYMENT.getKey());
+        } else {
+            orderInfo.setStatus(OrderStatusEnum.REJECT.getKey());
+        }
+        this.updateById(orderInfo);
+    }
+
+    /**
+     * 发送消息到mq
+     * @param dto
+     */
+    private void sendMq(OrderInfoDto dto) {
+        if (!Objects.equals(dto.getStatus(), OrderStatusEnum.WAIT_FOR_DELIVERY.getKey())) {
+            return;
+        }
+        OrderMessage orderMessage = new OrderMessage();
+        BeanUtil.copyProperties(dto, orderMessage);
+        orderMessage.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+
+        List<OrderSkuDetail> orderSkuDetailList = BeanUtil.copyToList(dto.getOrderSkuList(), OrderSkuDetail.class);
+        // 赋值mes系统bom id
+        bomSpecService.attributeAssign(orderSkuDetailList, OrderSkuDetail::getBomSpecId, (item, bomSpec) -> {
+            item.setBomSpecId(bomSpec.getMesId());
+        });
+        orderMessage.setOrderSkuDetailList(orderSkuDetailList);
+        RabbitMqUtil.send(OrderConfig.DIRECT_EXCHANGE_NAME, OrderConfig.KX_ORDER_ADD_NAME, orderMessage);
+    }
 }

+ 0 - 3
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuArtworkLogServiceImpl.java

@@ -1,7 +1,5 @@
 package com.sd.business.service.order.impl;
 
-import com.ruoyi.common.core.domain.BasePo;
-import com.ruoyi.system.utils.UserUtil;
 import com.sd.business.entity.order.po.OrderSkuArtworkLog;
 import com.sd.business.mapper.order.OrderSkuArtworkLogMapper;
 import com.sd.business.service.order.OrderSkuArtworkLogService;
@@ -35,7 +33,6 @@ public class OrderSkuArtworkLogServiceImpl extends ServiceImpl<OrderSkuArtworkLo
                 .orderByDesc(OrderSkuArtworkLog::getId)
                 .list();
 
-        UserUtil.assignmentNickName(list, BasePo::getCreateUser, OrderSkuArtworkLogVo::setUserName);
         return list;
     }
 

+ 121 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuServiceImpl.java

@@ -1,11 +1,35 @@
 package com.sd.business.service.order.impl;
 
+import cn.hutool.core.util.NumberUtil;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.sd.business.entity.artwork.po.ArtworkLibrary;
+import com.sd.business.entity.bom.bo.BomSpecBo;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.order.dto.OrderSkuArtworkLogDto;
+import com.sd.business.entity.order.enums.ArtworkLogTypeEnum;
+import com.sd.business.entity.order.enums.OrderStatusEnum;
+import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.order.po.OrderSkuArtworkMake;
+import com.sd.business.entity.order.vo.OrderSkuVo;
+import com.sd.business.entity.sku.po.SkuUser;
 import com.sd.business.mapper.order.OrderSkuMapper;
+import com.sd.business.service.artwork.ArtworkLibraryService;
+import com.sd.business.service.bom.BomSpecService;
+import com.sd.business.service.order.OrderService;
+import com.sd.business.service.order.OrderSkuArtworkLogService;
+import com.sd.business.service.order.OrderSkuArtworkMakeService;
 import com.sd.business.service.order.OrderSkuService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -18,4 +42,101 @@ import org.springframework.stereotype.Service;
 @Service
 public class OrderSkuServiceImpl extends ServiceImpl<OrderSkuMapper, OrderSku> implements OrderSkuService {
 
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderSkuArtworkLogService orderSkuArtworkLogService;
+
+    @Autowired
+    private OrderSkuArtworkMakeService orderSkuArtworkMakeService;
+
+    @Autowired
+    private ArtworkLibraryService artworkLibraryService;
+
+    @Autowired
+    private BomSpecService bomSpecService;
+
+    @Override
+    public List<OrderSkuVo> getUnconfirmedArtworkList(Long orderId) {
+
+        List<OrderSkuVo> list = Sql.create(OrderSkuVo.class)
+                .selectAll(OrderSku.class)
+                .selectAs(SkuUser::getCode, OrderSkuVo::getSkuCode)
+                .selectAs(SkuUser::getName, OrderSkuVo::getSkuName)
+                .selectAs(BomSpec::getCode, OrderSkuVo::getBomSpecCode)
+                .selectAs(BomSpec::getName, OrderSkuVo::getBomSpecName)
+                .from(OrderSku.class)
+                .innerJoin(OrderSkuArtworkMake.class, OrderSkuArtworkMake::getOrderSkuId, OrderSku::getId)
+                .innerJoin(BomSpec.class, BomSpec::getId, OrderSku::getBomSpecId)
+                .leftJoin(SkuUser.class, SkuUser::getId, OrderSku::getSkuUserId)
+                .eq(OrderSku::getOrderId, orderId)
+                .eq(OrderSkuArtworkMake::getStatus, 1)
+                .orderByDesc(OrderSku::getId)
+                .list();
+
+        return list;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void confirmArtwork(OrderSkuArtworkLogDto dto) {
+        OrderSku orderSku = this.getById(dto.getOrderSkuId());
+        Assert.notNull(orderSku, "未知数据");
+        dto.setOperator(SecurityUtils.getLoginUser().getUser().getNickName());
+        orderSkuArtworkLogService.save(dto);
+        OrderSkuArtworkMake orderSkuArtworkMake = orderSkuArtworkMakeService.getOne(q -> q.eq(OrderSkuArtworkMake::getOrderSkuId, orderSku.getId()));
+
+        if (Objects.equals(dto.getType(), ArtworkLogTypeEnum.CONFIRM_PROOFING_IMG.getKey())) {
+            orderSkuArtworkMake.setStatus(3);
+            orderSku.setProofingImg(orderSkuArtworkMake.getProofingImg());
+            orderSku.setProductionDocument(orderSkuArtworkMake.getProductionDocument());
+            // 查询订单sku是否全部确认图稿,全部通过修改订单状态
+            long count = orderSkuArtworkMakeService.count(q -> q.eq(OrderSkuArtworkMake::getOrderId, orderSku.getOrderId())
+                    .ne(OrderSkuArtworkMake::getStatus, 3)
+                    .ne(BaseIdPo::getId, orderSkuArtworkMake.getId()));
+            if (count == 0) {
+                orderService.update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.WAIT_FOR_DELIVERY.getKey())
+                        .eq(BaseIdPo::getId, orderSku.getOrderId()));
+            }
+            // 新增专属图稿
+            BomSpecBo bomSpecBo = bomSpecService.getBomSpecBoById(orderSku.getBomSpecId());
+            String classify = "";
+            String classifyName = bomSpecBo.getClassifyName();
+            int nameIndex = classifyName.indexOf("裸");
+            if (nameIndex > 0) {
+                classify = classifyName.substring(0, nameIndex) + "_";
+            }
+            String artworkName = classify + orderSku.getLength().stripTrailingZeros().toPlainString() + "_" + orderSku.getWidth().stripTrailingZeros().toPlainString();
+            ArtworkLibrary library = artworkLibraryService.getOne(q -> q
+                    .likeRight(ArtworkLibrary::getArtworkName, artworkName)
+                    .orderByDesc(ArtworkLibrary::getCreateTime));
+            int num = 1;
+            if (library != null) {
+                String name = library.getArtworkName();
+                String index = name.substring(library.getArtworkName().lastIndexOf("_") + 1);
+                if (NumberUtil.isInteger(index)) {
+                    num = Integer.parseInt(index) + 1;
+                }
+            }
+            ArtworkLibrary artworkLibrary = new ArtworkLibrary();
+            artworkLibrary.setType(2);
+            artworkLibrary.setArtworkType(2);
+            artworkLibrary.setLength(orderSku.getLength());
+            artworkLibrary.setWidth(orderSku.getWidth());
+            artworkLibrary.setArtworkName(artworkName + "_" + num);
+            artworkLibrary.setImgUrl(orderSku.getProofingImg());
+            artworkLibrary.setImgName(artworkLibrary.getArtworkName() +
+                    artworkLibrary.getImgUrl().substring(artworkLibrary.getImgUrl().lastIndexOf(".")));
+            artworkLibrary.setFileUrl(orderSku.getProductionDocument());
+            artworkLibrary.setFileName(artworkLibrary.getArtworkName() +
+                    artworkLibrary.getFileUrl().substring(artworkLibrary.getFileUrl().lastIndexOf(".")));
+            artworkLibraryService.save(artworkLibrary);
+            this.updateById(orderSku);
+        } else {
+            orderSkuArtworkMake.setStatus(2);
+        }
+
+        orderSkuArtworkMakeService.updateById(orderSkuArtworkMake);
+    }
 }

+ 1 - 1
sd-business/src/main/java/com/sd/business/service/sku/SkuUserService.java

@@ -31,7 +31,7 @@ public interface SkuUserService extends BaseService<SkuUser> {
     /**
      * 用户专属sku新增
      */
-    void add(SkuUserDto dto);
+    Long add(SkuUserDto dto);
 
     /**
      * 用户专属sku编辑

+ 3 - 1
sd-business/src/main/java/com/sd/business/service/sku/impl/SkuUserServiceImpl.java

@@ -71,7 +71,7 @@ public class SkuUserServiceImpl extends ServiceImpl<SkuUserMapper, SkuUser> impl
     }
 
     @Override
-    public void add(SkuUserDto dto) {
+    public Long add(SkuUserDto dto) {
 
         long count = count(q -> q.eq(BasePo::getCreateUser, SecurityUtils.getUserId())
                 .eq(SkuUser::getCode, dto.getCode())
@@ -80,6 +80,8 @@ public class SkuUserServiceImpl extends ServiceImpl<SkuUserMapper, SkuUser> impl
         Assert.eqZero(count, "sku编号已存在");
 
         save(dto);
+
+        return dto.getId();
     }
 
     @Override