Explorar o código

订单、库存代码生成

24282 hai 1 ano
pai
achega
459631110f
Modificáronse 46 ficheiros con 2034 adicións e 0 borrados
  1. 48 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryBackupController.java
  2. 47 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryController.java
  3. 71 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderInfoController.java
  4. 71 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderSkuBomController.java
  5. 71 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderSkuController.java
  6. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryBackupDto.java
  7. 27 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryBackupSelectDto.java
  8. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryDto.java
  9. 90 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventorySelectDto.java
  10. 61 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/Inventory.java
  11. 64 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryBackup.java
  12. 61 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryBackupVo.java
  13. 62 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryVo.java
  14. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderInfoDto.java
  15. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderInfoSelectDto.java
  16. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuBomDto.java
  17. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuBomSelectDto.java
  18. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuDto.java
  19. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuSelectDto.java
  20. 274 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderInfo.java
  21. 149 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java
  22. 48 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderSkuBom.java
  23. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderInfoVo.java
  24. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuBomVo.java
  25. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuVo.java
  26. 16 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryBackupMapper.java
  27. 16 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryMapper.java
  28. 16 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderInfoMapper.java
  29. 16 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderSkuBomMapper.java
  30. 16 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderSkuMapper.java
  31. 30 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryBackupService.java
  32. 30 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryService.java
  33. 87 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryBackupServiceImpl.java
  34. 85 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryServiceImpl.java
  35. 46 0
      sd-business/src/main/java/com/sd/business/service/order/OrderInfoService.java
  36. 46 0
      sd-business/src/main/java/com/sd/business/service/order/OrderSkuBomService.java
  37. 46 0
      sd-business/src/main/java/com/sd/business/service/order/OrderSkuService.java
  38. 68 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java
  39. 68 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuBomServiceImpl.java
  40. 68 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuServiceImpl.java
  41. 5 0
      sd-business/src/main/resources/mapper/inventory/InventoryBackupMapper.xml
  42. 5 0
      sd-business/src/main/resources/mapper/inventory/InventoryMapper.xml
  43. 5 0
      sd-business/src/main/resources/mapper/order/OrderInfoMapper.xml
  44. 5 0
      sd-business/src/main/resources/mapper/order/OrderSkuBomMapper.xml
  45. 5 0
      sd-business/src/main/resources/mapper/order/OrderSkuMapper.xml
  46. 24 0
      sd-framework/src/main/java/com/sd/framework/util/sql/Select.java

+ 48 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryBackupController.java

@@ -0,0 +1,48 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.NonInterception;
+import com.sd.business.entity.inventory.dto.InventoryBackupSelectDto;
+import com.sd.business.entity.inventory.vo.InventoryBackupVo;
+import com.sd.business.service.inventory.InventoryBackupService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 库存快照 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/inventoryBackup")
+public class InventoryBackupController {
+
+    @Autowired
+    private InventoryBackupService inventoryBackupService;
+
+    /**
+     * 库存快照分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryBackupVo> page(@Validated @RequestBody InventoryBackupSelectDto dto) {
+        return inventoryBackupService.getPage(dto);
+    }
+
+    /**
+     * 库存快照导出
+     */
+    @NonInterception
+    @PostMapping("/exportExcel")
+    public void exportExcel(@Validated @RequestBody InventoryBackupSelectDto dto) {
+        inventoryBackupService.exportExcel(dto);
+    }
+
+}

+ 47 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryController.java

@@ -0,0 +1,47 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.NonInterception;
+import com.sd.business.entity.inventory.dto.InventorySelectDto;
+import com.sd.business.entity.inventory.vo.InventoryVo;
+import com.sd.business.service.inventory.InventoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 库存 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/inventory")
+public class InventoryController {
+
+    @Autowired
+    private InventoryService inventoryService;
+
+    /**
+     * 库存分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryVo> page(@RequestBody InventorySelectDto dto) {
+        return inventoryService.getPage(dto);
+    }
+
+    /**
+     * 库存导出
+     */
+    @NonInterception
+    @PostMapping("/exportExcel")
+    public void exportExcel(@RequestBody InventorySelectDto dto) {
+        inventoryService.exportExcel(dto);
+    }
+
+}

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderInfoController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.dto.OrderInfoSelectDto;
+import com.sd.business.entity.order.vo.OrderInfoVo;
+import com.sd.business.service.order.OrderInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 订单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/orderInfo")
+public class OrderInfoController {
+
+    @Autowired
+    private OrderInfoService orderInfoService;
+
+    /**
+     * 订单分页
+     */
+    @PostMapping("/page")
+    public Page<OrderInfoVo> page(@RequestBody OrderInfoSelectDto dto) {
+        return orderInfoService.getPage(dto);
+    }
+
+    /**
+     * 订单明细
+     */
+    @PostMapping("/detail")
+    public OrderInfoVo detail(@RequestBody BaseSelectDto dto) {
+        return orderInfoService.detail(dto.getId());
+    }
+
+    /**
+     * 订单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody OrderInfoDto dto) {
+        orderInfoService.add(dto);
+    }
+
+    /**
+     * 订单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderInfoDto dto) {
+        orderInfoService.edit(dto);
+    }
+
+    /**
+     * 订单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderInfoService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderSkuBomController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.order.dto.OrderSkuBomDto;
+import com.sd.business.entity.order.dto.OrderSkuBomSelectDto;
+import com.sd.business.entity.order.vo.OrderSkuBomVo;
+import com.sd.business.service.order.OrderSkuBomService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 订单sku bom 关联 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/orderSkuBom")
+public class OrderSkuBomController {
+
+    @Autowired
+    private OrderSkuBomService orderSkuBomService;
+
+    /**
+     * 订单sku bom 关联分页
+     */
+    @PostMapping("/page")
+    public Page<OrderSkuBomVo> page(@RequestBody OrderSkuBomSelectDto dto) {
+        return orderSkuBomService.getPage(dto);
+    }
+
+    /**
+     * 订单sku bom 关联明细
+     */
+    @PostMapping("/detail")
+    public OrderSkuBomVo detail(@RequestBody BaseSelectDto dto) {
+        return orderSkuBomService.detail(dto.getId());
+    }
+
+    /**
+     * 订单sku bom 关联新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody OrderSkuBomDto dto) {
+        orderSkuBomService.add(dto);
+    }
+
+    /**
+     * 订单sku bom 关联编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderSkuBomDto dto) {
+        orderSkuBomService.edit(dto);
+    }
+
+    /**
+     * 订单sku bom 关联删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderSkuBomService.delete(dto.getId());
+    }
+
+}

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

@@ -0,0 +1,71 @@
+package com.sd.business.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.order.dto.OrderSkuDto;
+import com.sd.business.entity.order.dto.OrderSkuSelectDto;
+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.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 订单sku 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/orderSku")
+public class OrderSkuController {
+
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    /**
+     * 订单sku分页
+     */
+    @PostMapping("/page")
+    public Page<OrderSkuVo> page(@RequestBody OrderSkuSelectDto dto) {
+        return orderSkuService.getPage(dto);
+    }
+
+    /**
+     * 订单sku明细
+     */
+    @PostMapping("/detail")
+    public OrderSkuVo detail(@RequestBody BaseSelectDto dto) {
+        return orderSkuService.detail(dto.getId());
+    }
+
+    /**
+     * 订单sku新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody OrderSkuDto dto) {
+        orderSkuService.add(dto);
+    }
+
+    /**
+     * 订单sku编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderSkuDto dto) {
+        orderSkuService.edit(dto);
+    }
+
+    /**
+     * 订单sku删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderSkuService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryBackupDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryBackup;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存快照新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryBackupDto extends InventoryBackup {
+
+}

+ 27 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryBackupSelectDto.java

@@ -0,0 +1,27 @@
+package com.sd.business.entity.inventory.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * 库存快照列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryBackupSelectDto extends InventorySelectDto {
+
+    /**
+     * 备份日期
+     */
+    @NotNull(message = "备份日期不能为空")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date backupDate;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.Inventory;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 库存新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryDto extends Inventory {
+
+}

+ 90 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventorySelectDto.java

@@ -0,0 +1,90 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 库存列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventorySelectDto extends BaseSelectDto {
+
+    /**
+     * bom分类id
+     */
+    private Long bomClassifyId;
+
+    /**
+     * 种类 字典:bom_species
+     */
+    private String bomSpecies;
+
+    /**
+     * 色层 字典:bom_chromatophore
+     */
+    private String bomChromatophore;
+
+    /**
+     * 压纹工艺 字典:bom_embossingProcess
+     */
+    private String bomEmbossingProcess;
+
+    /**
+     * 正面纹路 字典:bom_frontGrain
+     */
+    private String bomFrontGrain;
+
+    /**
+     * 背面纹路 字典:bom_reverseGrain
+     */
+    private String bomReverseGrain;
+
+    /**
+     * 品名
+     */
+    private String bomSpecName;
+
+    /**
+     * 品号
+     */
+    private String bomSpecCode;
+
+    /**
+     * 颜色
+     */
+    private String bomSpecColour;
+
+    /**
+     * 长 cm
+     */
+    private BigDecimal bomSpecLength;
+
+    /**
+     * 宽 cm
+     */
+    private BigDecimal bomSpecWidth;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 仓库id列表
+     */
+    private List<Long> warehouseIdList;
+
+}

+ 61 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/Inventory.java

@@ -0,0 +1,61 @@
+package com.sd.business.entity.inventory.po;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 库存
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("inventory")
+public class Inventory extends BasePo {
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 数量
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "可用库存", index = 4)
+    private BigDecimal quantity;
+
+    /**
+     * 锁定数量
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "锁定库存", index = 5)
+    private BigDecimal lockQuantity;
+
+    /**
+     * 结存单价
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "结存单价", index = 3)
+    private BigDecimal balanceUnitPrice;
+
+}

+ 64 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryBackup.java

@@ -0,0 +1,64 @@
+package com.sd.business.entity.inventory.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 库存快照
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("inventory_backup")
+public class InventoryBackup extends BasePo {
+
+    /**
+     * 库存id
+     */
+    private Long inventoryId;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 锁定数量
+     */
+    private BigDecimal lockQuantity;
+
+    /**
+     * 结存单价
+     */
+    private BigDecimal balanceUnitPrice;
+
+    /**
+     * 备份日期
+     */
+    private Date backupDate;
+
+}

+ 61 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryBackupVo.java

@@ -0,0 +1,61 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.sd.business.entity.inventory.po.InventoryBackup;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 库存快照列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryBackupVo extends InventoryBackup {
+
+    /**
+     * 仓库名称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "仓库", index = 0)
+    private String warehouseName;
+
+    /**
+     * 品名
+     */
+    @ColumnWidth(50)
+    @ExcelProperty(value = "品名", index = 1)
+    private String bomSpecName;
+
+    /**
+     * 品号
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "品号", index = 2)
+    private String bomSpecCode;
+
+    /**
+     * 事业部名称
+     */
+    private String departmentName;
+
+    /**
+     * 结存总价
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "结存总价", index = 6)
+    private BigDecimal totalPrice;
+
+    /**
+     * 总库存
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "总库存", index = 7)
+    private BigDecimal totalQuantity;
+
+}

+ 62 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryVo.java

@@ -0,0 +1,62 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.sd.business.entity.inventory.po.Inventory;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 库存列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryVo extends Inventory {
+
+    /**
+     * 仓库名称
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "仓库", index = 0)
+    private String warehouseName;
+
+    /**
+     * 品名
+     */
+    @ColumnWidth(50)
+    @ExcelProperty(value = "品名", index = 1)
+    private String bomSpecName;
+
+    /**
+     * 品号
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "品号", index = 2)
+    private String bomSpecCode;
+
+    /**
+     * 事业部名称
+     */
+    private String departmentName;
+
+    /**
+     * 结存总价
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "结存总价", index = 6)
+    private BigDecimal totalPrice;
+
+
+    /**
+     * 总库存
+     */
+    @ColumnWidth(15)
+    @ExcelProperty(value = "总库存", index = 7)
+    private BigDecimal totalQuantity;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderInfoDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderInfoDto extends OrderInfo {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderInfoSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderInfoSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuBomDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderSkuBom;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku bom 关联新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuBomDto extends OrderSkuBom {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuBomSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku bom 关联列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuBomSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderSku;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuDto extends OrderSku {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderSkuSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuSelectDto extends BaseSelectDto {
+
+}

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

@@ -0,0 +1,274 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 订单
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("order_info")
+public class OrderInfo extends BasePo {
+
+    /**
+     * 来源 1自定义添加 2万里牛
+     */
+    private Integer source;
+
+    /**
+     * 订单类型 1自主订单 2委外订单
+     */
+    private Integer type;
+
+    /**
+     * 订单分类 1万里牛订单,2采购订单,3委外订单,4售后订单,5无理由订单
+     */
+    private Boolean classify;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 订单号
+     */
+    private String code;
+
+    /**
+     * 万里牛uid
+     */
+    private String wlnUid;
+
+    /**
+     * 万里牛订单号
+     */
+    private String wlnCode;
+
+    /**
+     * 万里牛订单状态
+     */
+    private Integer wlnStatus;
+
+    /**
+     * 万里牛订单创建时间
+     */
+    private Date wlnCreateTime;
+
+    /**
+     * 万里牛订单审核时间
+     */
+    private Date wlnApproveTime;
+
+    /**
+     * 万里牛打单时间
+     */
+    private Date wlnPrintTime;
+
+    /**
+     * 万里牛同步时间
+     */
+    private Date wlnModifyTime;
+
+    /**
+     * 万里牛同步时间戳
+     */
+    private Long wlnModifyTimestamp;
+
+    /**
+     * 万里牛仓库编码
+     */
+    private String wlnStorageCode;
+
+    /**
+     * 交期
+     */
+    private Date deliveryTime;
+
+    /**
+     * 店铺来源
+     */
+    private String sourcePlatform;
+
+    /**
+     * 店铺名称
+     */
+    private String shopName;
+
+    /**
+     * 进度
+     */
+    private Integer status;
+
+    /**
+     * 异常类型
+     */
+    private String exceptionType;
+
+    /**
+     * 异常发生时间
+     */
+    private Date exceptionTime;
+
+    /**
+     * 结算状态 1未结算 2已对账 3已结算
+     */
+    private Integer settlementStatus;
+
+    /**
+     * 订单总金额
+     */
+    private BigDecimal totalAmount;
+
+    /**
+     * 产品总金额
+     */
+    private BigDecimal productTotalAmount;
+
+    /**
+     * 定制加工费
+     */
+    private BigDecimal customProcessingFee;
+
+    /**
+     * 代发费
+     */
+    private BigDecimal lssueFee;
+
+    /**
+     * 快递包材费
+     */
+    private BigDecimal deliveryMaterialsFee;
+
+    /**
+     * 包装人工费
+     */
+    private BigDecimal packingLabor;
+
+    /**
+     * 管理费
+     */
+    private BigDecimal managementFee;
+
+    /**
+     * 包材费
+     */
+    private BigDecimal packagingMaterialCost;
+
+    /**
+     * 税率
+     */
+    private BigDecimal taxRate;
+
+    /**
+     * 发货时间
+     */
+    private Date shippingTime;
+
+    /**
+     * 收货人
+     */
+    private String consignee;
+
+    /**
+     * 收货人电话
+     */
+    private String consigneeNumber;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 县
+     */
+    private String county;
+
+    /**
+     * 详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * 邮编
+     */
+    private String postcode;
+
+    /**
+     * 快递网点id
+     */
+    private String expressDeliveryId;
+
+    /**
+     * 快递单号
+     */
+    private String expressDeliveryCode;
+
+    /**
+     * 标签
+     */
+    private String tag;
+
+    /**
+     * 对账单id
+     */
+    private Long statementOfAccountId;
+
+    /**
+     * 出库事业部id
+     */
+    private Long outDepartmentId;
+
+    /**
+     * 流程id
+     */
+    private Long flowId;
+
+    /**
+     * 流程状态 0未发起 1进行中 2已通过 3已驳回 4已作废
+     */
+    private Integer flowStatus;
+
+    /**
+     * 主订单id
+     */
+    private Long masterOrderId;
+
+    /**
+     * 是否锁定库存 1是 0否
+     */
+    private Integer lockStorage;
+
+    /**
+     * 送货单号
+     */
+    private String deliveryCode;
+
+    /**
+     * 备料类型 0半成品,1成品
+     */
+    private Boolean stockType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 149 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderSku.java

@@ -0,0 +1,149 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 订单sku
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("order_sku")
+public class OrderSku extends BasePo {
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
+     * sku id
+     */
+    private Long skuId;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 图稿id
+     */
+    private Long artworkLibraryId;
+
+    /**
+     * 设计图
+     */
+    private String blueprint;
+
+    /**
+     * 生产文件
+     */
+    private String productionDocument;
+
+    /**
+     * 万里牛sys_goods_uid
+     */
+    private String wlnSkuId;
+
+    /**
+     * 万里牛sys_spec_uid
+     */
+    private String wlnSkuSpecId;
+
+    /**
+     * 万里牛 sku名称
+     */
+    private String wlnSkuName;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 单价
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 定制加工费
+     */
+    private BigDecimal customProcessingFee;
+
+    /**
+     * 代发费
+     */
+    private BigDecimal lssueFee;
+
+    /**
+     * 快递包材费
+     */
+    private BigDecimal deliveryMaterialsFee;
+
+    /**
+     * 包装人工费
+     */
+    private BigDecimal packingLabor;
+
+    /**
+     * 管理费
+     */
+    private BigDecimal managementFee;
+
+    /**
+     * 包材费
+     */
+    private BigDecimal packagingMaterialCost;
+
+    /**
+     * 定制加工类型
+     */
+    private String customProcessingType;
+
+    /**
+     * 打印 1单面 2 双面
+     */
+    private Integer printType;
+
+    /**
+     * 备料状态 0未备料 1已备料
+     */
+    private Integer stockPreparationStatus;
+
+    /**
+     * 备料时间
+     */
+    private Date stockPreparationTime;
+
+    /**
+     * 包装要求
+     */
+    private String packageRemark;
+
+    /**
+     * E10成品品号
+     */
+    private String erpCode;
+
+    /**
+     * E10成品特征码
+     */
+    private String featureCode;
+
+}

+ 48 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderSkuBom.java

@@ -0,0 +1,48 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 订单sku bom 关联
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("order_sku_bom")
+public class OrderSkuBom extends BasePo {
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
+     * 订单sku id
+     */
+    private Long orderSkuId;
+
+    /**
+     * bom规格id
+     */
+    private Long bomSpecId;
+
+    /**
+     * 单价
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+}

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

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderInfoVo extends OrderInfo {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderSkuBomVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderSkuBom;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku bom 关联列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuBomVo extends OrderSkuBom {
+
+}

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

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderSku;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单sku列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class OrderSkuVo extends OrderSku {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryBackupMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.inventory.po.InventoryBackup;
+
+/**
+ * <p>
+ * 库存快照 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryBackupMapper extends BaseMapper<InventoryBackup> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.inventory.po.Inventory;
+
+/**
+ * <p>
+ * 库存 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryMapper extends BaseMapper<Inventory> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderInfoMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.order.po.OrderInfo;
+
+/**
+ * <p>
+ * 订单 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderSkuBomMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.order.po.OrderSkuBom;
+
+/**
+ * <p>
+ * 订单sku bom 关联 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderSkuBomMapper extends BaseMapper<OrderSkuBom> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderSkuMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.order.po.OrderSku;
+
+/**
+ * <p>
+ * 订单sku Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderSkuMapper extends BaseMapper<OrderSku> {
+
+}

+ 30 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryBackupService.java

@@ -0,0 +1,30 @@
+package com.sd.business.service.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.dto.InventoryBackupSelectDto;
+import com.sd.business.entity.inventory.po.InventoryBackup;
+import com.sd.business.entity.inventory.vo.InventoryBackupVo;
+
+
+/**
+ * <p>
+ * 库存快照 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryBackupService extends BaseService<InventoryBackup> {
+
+    /**
+     * 库存快照分页
+     */
+    Page<InventoryBackupVo> getPage(InventoryBackupSelectDto dto);
+
+    /**
+     * 库存快照导出
+     */
+    void exportExcel(InventoryBackupSelectDto dto);
+
+}

+ 30 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryService.java

@@ -0,0 +1,30 @@
+package com.sd.business.service.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.dto.InventorySelectDto;
+import com.sd.business.entity.inventory.po.Inventory;
+import com.sd.business.entity.inventory.vo.InventoryVo;
+
+
+/**
+ * <p>
+ * 库存 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryService extends BaseService<Inventory> {
+
+    /**
+     * 库存分页
+     */
+    Page<InventoryVo> getPage(InventorySelectDto dto);
+
+    /**
+     * 库存导出
+     */
+    void exportExcel(InventorySelectDto dto);
+
+}

+ 87 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryBackupServiceImpl.java

@@ -0,0 +1,87 @@
+package com.sd.business.service.inventory.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.bom.po.Bom;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.department.po.Department;
+import com.sd.business.entity.inventory.dto.InventoryBackupSelectDto;
+import com.sd.business.entity.inventory.po.Inventory;
+import com.sd.business.entity.inventory.po.InventoryBackup;
+import com.sd.business.entity.inventory.vo.InventoryBackupVo;
+import com.sd.business.entity.warehouse.po.Warehouse;
+import com.sd.business.mapper.inventory.InventoryBackupMapper;
+import com.sd.business.service.inventory.InventoryBackupService;
+import com.sd.framework.util.excel.util.ExcelUtil;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 库存快照 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class InventoryBackupServiceImpl extends ServiceImpl<InventoryBackupMapper, InventoryBackup> implements InventoryBackupService {
+
+    @Autowired
+    private HttpServletResponse response;
+
+    @Override
+    public Page<InventoryBackupVo> getPage(InventoryBackupSelectDto dto) {
+
+        Page<InventoryBackupVo> page = Sql.create(InventoryBackupVo.class)
+                .selectAll(Inventory.class)
+                .selectAs(Warehouse::getName, InventoryBackupVo::getWarehouseName)
+                .selectAs(BomSpec::getCode, InventoryBackupVo::getBomSpecCode)
+                .selectAs(BomSpec::getName, InventoryBackupVo::getBomSpecName)
+                .selectAs(Department::getName, InventoryBackupVo::getDepartmentName)
+                .multiply(Inventory::getQuantity, Inventory::getBalanceUnitPrice, InventoryBackupVo::getTotalPrice)
+                .add(Inventory::getQuantity, Inventory::getLockQuantity, InventoryBackupVo::getTotalQuantity)
+
+                .from(Inventory.class)
+                .leftJoin(BomSpec.class, BomSpec::getId, Inventory::getBomSpecId)
+                .leftJoin(Bom.class, Bom::getId, BomSpec::getBomId)
+                .leftJoin(Warehouse.class, Warehouse::getId, Inventory::getWarehouseId)
+                .leftJoin(Department.class, Department::getId, Inventory::getDepartmentId)
+
+                .orderByDesc(Inventory::getId)
+                .eq(InventoryBackup::getBackupDate, DateUtil.offsetDay(dto.getBackupDate(), -1))
+                .eq(Inventory::getDepartmentId, dto.getDepartmentId())
+                .eq(Inventory::getWarehouseId, dto.getWarehouseId())
+                .in(Inventory::getWarehouseId, dto.getWarehouseIdList())
+                .like(BomSpec::getName, dto.getBomSpecName())
+                .like(BomSpec::getCode, dto.getBomSpecCode())
+                .like(BomSpec::getColour, dto.getBomSpecColour())
+                .like(BomSpec::getLength, dto.getBomSpecLength())
+                .like(BomSpec::getWidth, dto.getBomSpecWidth())
+                .eq(Bom::getBomClassifyId, dto.getBomClassifyId())
+                .eq(Bom::getSpecies, dto.getBomSpecies())
+                .eq(Bom::getChromatophore, dto.getBomChromatophore())
+                .eq(Bom::getEmbossingProcess, dto.getBomEmbossingProcess())
+                .eq(Bom::getFrontGrain, dto.getBomFrontGrain())
+                .eq(Bom::getReverseGrain, dto.getBomReverseGrain())
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public void exportExcel(InventoryBackupSelectDto dto) {
+        dto.setSearchAll(true);
+        Page<InventoryBackupVo> page = getPage(dto);
+        List<InventoryBackupVo> list = page.getRecords();
+        ExcelUtil.export(response, DateUtil.format(new Date(), "yyyy-MM-dd库存数据"), "库存数据", list, InventoryBackupVo.class);
+    }
+
+}

+ 85 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryServiceImpl.java

@@ -0,0 +1,85 @@
+package com.sd.business.service.inventory.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.bom.po.Bom;
+import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.department.po.Department;
+import com.sd.business.entity.inventory.dto.InventorySelectDto;
+import com.sd.business.entity.inventory.po.Inventory;
+import com.sd.business.entity.inventory.vo.InventoryVo;
+import com.sd.business.entity.warehouse.po.Warehouse;
+import com.sd.business.mapper.inventory.InventoryMapper;
+import com.sd.business.service.inventory.InventoryService;
+import com.sd.framework.util.excel.util.ExcelUtil;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 库存 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class InventoryServiceImpl extends ServiceImpl<InventoryMapper, Inventory> implements InventoryService {
+
+    @Autowired
+    private HttpServletResponse response;
+
+    @Override
+    public Page<InventoryVo> getPage(InventorySelectDto dto) {
+
+        Page<InventoryVo> page = Sql.create(InventoryVo.class)
+                .selectAll(Inventory.class)
+                .selectAs(Warehouse::getName, InventoryVo::getWarehouseName)
+                .selectAs(BomSpec::getCode, InventoryVo::getBomSpecCode)
+                .selectAs(BomSpec::getName, InventoryVo::getBomSpecName)
+                .selectAs(Department::getName, InventoryVo::getDepartmentName)
+                .multiply(Inventory::getQuantity, Inventory::getBalanceUnitPrice, InventoryVo::getTotalPrice)
+                .add(Inventory::getQuantity, Inventory::getLockQuantity, InventoryVo::getTotalQuantity)
+
+                .from(Inventory.class)
+                .leftJoin(BomSpec.class, BomSpec::getId, Inventory::getBomSpecId)
+                .leftJoin(Bom.class, Bom::getId, BomSpec::getBomId)
+                .leftJoin(Warehouse.class, Warehouse::getId, Inventory::getWarehouseId)
+                .leftJoin(Department.class, Department::getId, Inventory::getDepartmentId)
+
+                .orderByDesc(Inventory::getId)
+                .eq(Inventory::getDepartmentId, dto.getDepartmentId())
+                .eq(Inventory::getWarehouseId, dto.getWarehouseId())
+                .in(Inventory::getWarehouseId, dto.getWarehouseIdList())
+                .like(BomSpec::getName, dto.getBomSpecName())
+                .like(BomSpec::getCode, dto.getBomSpecCode())
+                .like(BomSpec::getColour, dto.getBomSpecColour())
+                .like(BomSpec::getLength, dto.getBomSpecLength())
+                .like(BomSpec::getWidth, dto.getBomSpecWidth())
+                .eq(Bom::getBomClassifyId, dto.getBomClassifyId())
+                .eq(Bom::getSpecies, dto.getBomSpecies())
+                .eq(Bom::getChromatophore, dto.getBomChromatophore())
+                .eq(Bom::getEmbossingProcess, dto.getBomEmbossingProcess())
+                .eq(Bom::getFrontGrain, dto.getBomFrontGrain())
+                .eq(Bom::getReverseGrain, dto.getBomReverseGrain())
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public void exportExcel(InventorySelectDto dto) {
+        dto.setSearchAll(true);
+        Page<InventoryVo> page = getPage(dto);
+        List<InventoryVo> list = page.getRecords();
+        ExcelUtil.export(response, DateUtil.format(new Date(), "yyyy-MM-dd库存数据"), "库存数据", list, InventoryVo.class);
+    }
+
+}

+ 46 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderInfoService.java

@@ -0,0 +1,46 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.dto.OrderInfoSelectDto;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.vo.OrderInfoVo;
+
+
+/**
+ * <p>
+ * 订单 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderInfoService extends BaseService<OrderInfo> {
+
+    /**
+     * 订单分页
+     */
+    Page<OrderInfoVo> getPage(OrderInfoSelectDto dto);
+
+    /**
+     * 订单明细
+     */
+    OrderInfoVo detail(Long id);
+
+    /**
+     * 订单新增
+     */
+    void add(OrderInfoDto dto);
+
+    /**
+     * 订单编辑
+     */
+    void edit(OrderInfoDto dto);
+
+    /**
+     * 订单删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderSkuBomService.java

@@ -0,0 +1,46 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.dto.OrderSkuBomDto;
+import com.sd.business.entity.order.dto.OrderSkuBomSelectDto;
+import com.sd.business.entity.order.po.OrderSkuBom;
+import com.sd.business.entity.order.vo.OrderSkuBomVo;
+
+
+/**
+ * <p>
+ * 订单sku bom 关联 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderSkuBomService extends BaseService<OrderSkuBom> {
+
+    /**
+     * 订单sku bom 关联分页
+     */
+    Page<OrderSkuBomVo> getPage(OrderSkuBomSelectDto dto);
+
+    /**
+     * 订单sku bom 关联明细
+     */
+    OrderSkuBomVo detail(Long id);
+
+    /**
+     * 订单sku bom 关联新增
+     */
+    void add(OrderSkuBomDto dto);
+
+    /**
+     * 订单sku bom 关联编辑
+     */
+    void edit(OrderSkuBomDto dto);
+
+    /**
+     * 订单sku bom 关联删除
+     */
+    void delete(Long id);
+
+}

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

@@ -0,0 +1,46 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.dto.OrderSkuDto;
+import com.sd.business.entity.order.dto.OrderSkuSelectDto;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.order.vo.OrderSkuVo;
+
+
+/**
+ * <p>
+ * 订单sku 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface OrderSkuService extends BaseService<OrderSku> {
+
+    /**
+     * 订单sku分页
+     */
+    Page<OrderSkuVo> getPage(OrderSkuSelectDto dto);
+
+    /**
+     * 订单sku明细
+     */
+    OrderSkuVo detail(Long id);
+
+    /**
+     * 订单sku新增
+     */
+    void add(OrderSkuDto dto);
+
+    /**
+     * 订单sku编辑
+     */
+    void edit(OrderSkuDto dto);
+
+    /**
+     * 订单sku删除
+     */
+    void delete(Long id);
+
+}

+ 68 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderInfoServiceImpl.java

@@ -0,0 +1,68 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.order.dto.OrderInfoDto;
+import com.sd.business.entity.order.dto.OrderInfoSelectDto;
+import com.sd.business.entity.order.po.OrderInfo;
+import com.sd.business.entity.order.vo.OrderInfoVo;
+import com.sd.business.mapper.order.OrderInfoMapper;
+import com.sd.business.service.order.OrderInfoService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 订单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo> implements OrderInfoService {
+
+    @Override
+    public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
+
+        Page<OrderInfoVo> page = Sql.create(OrderInfoVo.class)
+                .selectAll(OrderInfo.class)
+                .from(OrderInfo.class)
+                .orderByDesc(OrderInfo::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public OrderInfoVo detail(Long id) {
+
+        OrderInfoVo vo = Sql.create(OrderInfoVo.class)
+                .selectAll(OrderInfo.class)
+                .from(OrderInfo.class)
+                .eq(OrderInfo::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(OrderInfoDto dto) {
+        save(dto);
+    }
+
+    @Override
+    public void edit(OrderInfoDto dto) {
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+}

+ 68 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderSkuBomServiceImpl.java

@@ -0,0 +1,68 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.order.dto.OrderSkuBomDto;
+import com.sd.business.entity.order.dto.OrderSkuBomSelectDto;
+import com.sd.business.entity.order.po.OrderSkuBom;
+import com.sd.business.entity.order.vo.OrderSkuBomVo;
+import com.sd.business.mapper.order.OrderSkuBomMapper;
+import com.sd.business.service.order.OrderSkuBomService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 订单sku bom 关联 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class OrderSkuBomServiceImpl extends ServiceImpl<OrderSkuBomMapper, OrderSkuBom> implements OrderSkuBomService {
+
+    @Override
+    public Page<OrderSkuBomVo> getPage(OrderSkuBomSelectDto dto) {
+
+        Page<OrderSkuBomVo> page = Sql.create(OrderSkuBomVo.class)
+                .selectAll(OrderSkuBom.class)
+                .from(OrderSkuBom.class)
+                .orderByDesc(OrderSkuBom::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public OrderSkuBomVo detail(Long id) {
+
+        OrderSkuBomVo vo = Sql.create(OrderSkuBomVo.class)
+                .selectAll(OrderSkuBom.class)
+                .from(OrderSkuBom.class)
+                .eq(OrderSkuBom::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(OrderSkuBomDto dto) {
+        save(dto);
+    }
+
+    @Override
+    public void edit(OrderSkuBomDto dto) {
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+}

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

@@ -0,0 +1,68 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.order.dto.OrderSkuDto;
+import com.sd.business.entity.order.dto.OrderSkuSelectDto;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.order.vo.OrderSkuVo;
+import com.sd.business.mapper.order.OrderSkuMapper;
+import com.sd.business.service.order.OrderSkuService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 订单sku 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class OrderSkuServiceImpl extends ServiceImpl<OrderSkuMapper, OrderSku> implements OrderSkuService {
+
+    @Override
+    public Page<OrderSkuVo> getPage(OrderSkuSelectDto dto) {
+
+        Page<OrderSkuVo> page = Sql.create(OrderSkuVo.class)
+                .selectAll(OrderSku.class)
+                .from(OrderSku.class)
+                .orderByDesc(OrderSku::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public OrderSkuVo detail(Long id) {
+
+        OrderSkuVo vo = Sql.create(OrderSkuVo.class)
+                .selectAll(OrderSku.class)
+                .from(OrderSku.class)
+                .eq(OrderSku::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(OrderSkuDto dto) {
+        save(dto);
+    }
+
+    @Override
+    public void edit(OrderSkuDto dto) {
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+}

+ 5 - 0
sd-business/src/main/resources/mapper/inventory/InventoryBackupMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.inventory.InventoryBackupMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/inventory/InventoryMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.inventory.InventoryMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/order/OrderInfoMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderInfoMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/order/OrderSkuBomMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderSkuBomMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/order/OrderSkuMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderSkuMapper">
+
+</mapper>

+ 24 - 0
sd-framework/src/main/java/com/sd/framework/util/sql/Select.java

@@ -147,6 +147,30 @@ public class Select<T> {
         return this;
     }
 
+    public <S, V> Select<T> add(SFunction<S, V> function1, SFunction<S, V> function2, SFunction<T, ?> asFunction) {
+        String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
+        sql.selectList.add(sql.getSqlFieldName(function1) + "+" + sql.getSqlFieldName(function2) + " " + as);
+        return this;
+    }
+
+    public <S, V> Select<T> subtract(SFunction<S, V> function1, SFunction<S, V> function2, SFunction<T, ?> asFunction) {
+        String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
+        sql.selectList.add(sql.getSqlFieldName(function1) + "-" + sql.getSqlFieldName(function2) + " " + as);
+        return this;
+    }
+
+    public <S, V> Select<T> multiply(SFunction<S, V> function1, SFunction<S, V> function2, SFunction<T, ?> asFunction) {
+        String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
+        sql.selectList.add(sql.getSqlFieldName(function1) + "*" + sql.getSqlFieldName(function2) + " " + as);
+        return this;
+    }
+
+    public <S, V> Select<T> divide(SFunction<S, V> function1, SFunction<S, V> function2, SFunction<T, ?> asFunction) {
+        String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
+        sql.selectList.add(sql.getSqlFieldName(function1) + "/" + sql.getSqlFieldName(function2) + " " + as);
+        return this;
+    }
+
     public From<T> from(Class<?> cls) {
         String tableAlias = sql.getTableAlias(cls);
         return from(tableAlias, cls);