Răsfoiți Sursa

销售订单维多利亚

yzc 2 ani în urmă
părinte
comite
2d7b6d3aca
21 a modificat fișierele cu 927 adăugiri și 2 ștergeri
  1. 4 0
      hx-victoriatourist/pom.xml
  2. 68 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/order/OrderDetailsController.java
  3. 68 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/order/OrderInfoController.java
  4. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderDetailsDto.java
  5. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderDetailsSelectDto.java
  6. 25 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderInfoDto.java
  7. 27 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderInfoSelectDto.java
  8. 68 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderDetails.java
  9. 118 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderInfo.java
  10. 32 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/vo/OrderDetailsVo.java
  11. 46 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/vo/OrderInfoVo.java
  12. 26 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/order/OrderDetailsMapper.java
  13. 26 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/order/OrderInfoMapper.java
  14. 46 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderDetailsService.java
  15. 46 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderInfoService.java
  16. 57 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderDetailsServiceImpl.java
  17. 152 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java
  18. 24 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java
  19. 3 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/utils/CodeEnum.java
  20. 23 0
      hx-victoriatourist/src/main/resources/mapper/order/OrderDetailsMapper.xml
  21. 34 0
      hx-victoriatourist/src/main/resources/mapper/order/OrderInfoMapper.xml

+ 4 - 0
hx-victoriatourist/pom.xml

@@ -30,6 +30,10 @@
             <groupId>com.fjhx</groupId>
             <artifactId>hx-purchase</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-customer</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 68 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/order/OrderDetailsController.java

@@ -0,0 +1,68 @@
+package com.fjhx.victoriatourist.controller.order;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsSelectDto;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.victoriatourist.service.order.OrderDetailsService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 订单明细 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@RestController
+@RequestMapping("/orderDetails")
+public class OrderDetailsController {
+
+    @Autowired
+    private OrderDetailsService orderDetailsService;
+
+    /**
+     * 订单明细分页
+     */
+    @PostMapping("/page")
+    public Page<OrderDetailsVo> page(@RequestBody OrderDetailsSelectDto dto) {
+        return orderDetailsService.getPage(dto);
+    }
+
+    /**
+     * 订单明细明细
+     */
+    @PostMapping("/detail")
+    public OrderDetailsVo detail(@RequestBody BaseSelectDto dto) {
+        return orderDetailsService.detail(dto.getId());
+    }
+
+    /**
+     * 订单明细新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody OrderDetailsDto orderDetailsDto) {
+        orderDetailsService.add(orderDetailsDto);
+    }
+
+    /**
+     * 订单明细编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderDetailsDto orderDetailsDto) {
+        orderDetailsService.edit(orderDetailsDto);
+    }
+
+    /**
+     * 订单明细删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderDetailsService.delete(dto.getId());
+    }
+
+}

+ 68 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/order/OrderInfoController.java

@@ -0,0 +1,68 @@
+package com.fjhx.victoriatourist.controller.order;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo;
+import com.fjhx.victoriatourist.entity.order.dto.OrderInfoSelectDto;
+import com.fjhx.victoriatourist.entity.order.dto.OrderInfoDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.victoriatourist.service.order.OrderInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 订单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@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 orderInfoDto) {
+        orderInfoService.add(orderInfoDto);
+    }
+
+    /**
+     * 订单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody OrderInfoDto orderInfoDto) {
+        orderInfoService.edit(orderInfoDto);
+    }
+
+    /**
+     * 订单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        orderInfoService.delete(dto.getId());
+    }
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderDetailsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.order.dto;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单明细新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderDetailsDto extends OrderDetails {
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderDetailsSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单明细列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderDetailsSelectDto extends BaseSelectDto {
+
+}

+ 25 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderInfoDto.java

@@ -0,0 +1,25 @@
+package com.fjhx.victoriatourist.entity.order.dto;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.fjhx.victoriatourist.entity.order.po.OrderInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 订单新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderInfoDto extends OrderInfo {
+
+    /**
+     * 订单明细
+     */
+    private List<OrderDetails> orderDetailsList;
+
+}

+ 27 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/dto/OrderInfoSelectDto.java

@@ -0,0 +1,27 @@
+package com.fjhx.victoriatourist.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderInfoSelectDto extends BaseSelectDto {
+
+    /**
+     * 销售订单类型
+     */
+    private Integer type;
+
+    /**
+     * 销售订单状态
+     */
+    private Integer status;
+
+}

+ 68 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderDetails.java

@@ -0,0 +1,68 @@
+package com.fjhx.victoriatourist.entity.order.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 订单明细
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+@TableName("order_details")
+public class OrderDetails extends BasePo {
+
+    /**
+     * 订单id
+     */
+    private Long orderId;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 未出库数量
+     */
+    private BigDecimal notIssuedQuantity;
+
+    /**
+     * 版本号
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Version
+    private Integer version;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 预约号
+     */
+    private Long reservationNumber;
+
+}

+ 118 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/po/OrderInfo.java

@@ -0,0 +1,118 @@
+package com.fjhx.victoriatourist.entity.order.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 订单
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+@TableName("order_info")
+public class OrderInfo extends BasePo {
+
+    /**
+     * 订单类型(1线上 2线下 3京东订单 4补偿 5补发 6线下退换货 7采购退货)
+     */
+    private Integer type;
+
+    /**
+     * 客户id
+     */
+    private Long customerInfoId;
+
+    /**
+     * 编号
+     */
+    private String code;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal amountMoney;
+
+    /**
+     * 下单时间
+     */
+    private Date orderTime;
+
+    /**
+     * 订单状态 1进行中 2已完成 3已取消
+     */
+    private Integer status;
+
+    /**
+     * 出库状态 1未出库 2进行中 3已出库
+     */
+    private Integer issueStatus;
+
+    /**
+     * 售后状态 1跟进中(补发中、未补发未收到退货) 2已补发 3未补发收到退货 4已补发收到退货 5已补发未收到退货 6结束
+     */
+    private Integer afterSalesStatus;
+
+    /**
+     * 国家
+     */
+    private String countryId;
+
+    /**
+     * 省
+     */
+    private String provinceId;
+
+    /**
+     * 市
+     */
+    private String cityId;
+
+    /**
+     * 详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 联系电话前缀类型
+     */
+    private Integer phonePrefixType;
+
+    /**
+     * 导入excel关联id
+     */
+    private Long excelImportId;
+
+    /**
+     * 配送中心
+     */
+    private String distributionCenter;
+
+    /**
+     * 京东仓库
+     */
+    private String jdWarehouse;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 32 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/vo/OrderDetailsVo.java

@@ -0,0 +1,32 @@
+package com.fjhx.victoriatourist.entity.order.vo;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单明细列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderDetailsVo extends OrderDetails {
+
+    /**
+     * 产品编号
+     */
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 产品单位
+     */
+    private String productUnit;
+
+}

+ 46 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/order/vo/OrderInfoVo.java

@@ -0,0 +1,46 @@
+package com.fjhx.victoriatourist.entity.order.vo;
+
+import com.fjhx.area.service.ISetAreaName;
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.fjhx.victoriatourist.entity.order.po.OrderInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 订单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+public class OrderInfoVo extends OrderInfo implements ISetAreaName {
+
+    /**
+     * 销售订单客户名称
+     */
+    private String customerName;
+
+    /**
+     * 国家名
+     */
+    private String countryName;
+
+    /**
+     * 省名
+     */
+    private String provinceName;
+
+    /**
+     * 城市名
+     */
+    private String cityName;
+
+    /**
+     * 销售订单明细
+     */
+    private List<OrderDetailsVo> orderDetailsList;
+
+}

+ 26 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/order/OrderDetailsMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.victoriatourist.mapper.order;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 订单明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+public interface OrderDetailsMapper extends BaseMapper<OrderDetails> {
+
+    /**
+     * 订单明细分页
+     */
+    Page<OrderDetailsVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<OrderDetails> wrapper);
+
+}

+ 26 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/order/OrderInfoMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.victoriatourist.mapper.order;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 订单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
+
+    /**
+     * 订单分页
+     */
+    Page<OrderInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<OrderInfo> wrapper);
+
+}

+ 46 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderDetailsService.java

@@ -0,0 +1,46 @@
+package com.fjhx.victoriatourist.service.order;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsSelectDto;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsDto;
+
+
+/**
+ * <p>
+ * 订单明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+public interface OrderDetailsService extends BaseService<OrderDetails> {
+
+    /**
+     * 订单明细分页
+     */
+    Page<OrderDetailsVo> getPage(OrderDetailsSelectDto dto);
+
+    /**
+     * 订单明细明细
+     */
+    OrderDetailsVo detail(Long id);
+
+    /**
+     * 订单明细新增
+     */
+    void add(OrderDetailsDto orderDetailsDto);
+
+    /**
+     * 订单明细编辑
+     */
+    void edit(OrderDetailsDto orderDetailsDto);
+
+    /**
+     * 订单明细删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/OrderInfoService.java

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

+ 57 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderDetailsServiceImpl.java

@@ -0,0 +1,57 @@
+package com.fjhx.victoriatourist.service.order.impl;
+
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.fjhx.victoriatourist.mapper.order.OrderDetailsMapper;
+import com.fjhx.victoriatourist.service.order.OrderDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.victoriatourist.entity.order.dto.OrderDetailsDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 订单明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Service
+public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, OrderDetails> implements OrderDetailsService {
+
+    @Override
+    public Page<OrderDetailsVo> getPage(OrderDetailsSelectDto dto) {
+        IWrapper<OrderDetails> wrapper = getWrapper();
+        wrapper.orderByDesc("od", OrderDetails::getId);
+        Page<OrderDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public OrderDetailsVo detail(Long id) {
+        OrderDetails OrderDetails = this.getById(id);
+        OrderDetailsVo result = BeanUtil.toBean(OrderDetails, OrderDetailsVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(OrderDetailsDto orderDetailsDto) {
+        this.save(orderDetailsDto);
+    }
+
+    @Override
+    public void edit(OrderDetailsDto orderDetailsDto) {
+        this.updateById(orderDetailsDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 152 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java

@@ -0,0 +1,152 @@
+package com.fjhx.victoriatourist.service.order.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.area.service.AreaInfoService;
+import com.fjhx.area.utils.AreaUtil;
+import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.customer.service.customer.CustomerService;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.victoriatourist.entity.order.dto.OrderInfoDto;
+import com.fjhx.victoriatourist.entity.order.dto.OrderInfoSelectDto;
+import com.fjhx.victoriatourist.entity.order.po.OrderDetails;
+import com.fjhx.victoriatourist.entity.order.po.OrderInfo;
+import com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo;
+import com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo;
+import com.fjhx.victoriatourist.mapper.order.OrderInfoMapper;
+import com.fjhx.victoriatourist.service.order.OrderDetailsService;
+import com.fjhx.victoriatourist.service.order.OrderInfoService;
+import com.fjhx.victoriatourist.utils.Assert;
+import com.fjhx.victoriatourist.utils.CodeEnum;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 订单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-17
+ */
+@Service
+public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo> implements OrderInfoService {
+    @Autowired
+    CustomerService customerService;
+    @Autowired
+    AreaInfoService areaInfoService;
+    @Autowired
+    OrderDetailsService orderDetailsService;
+    @Autowired
+    ProductInfoService productInfoService;
+
+    @Override
+    public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
+        IWrapper<OrderInfo> wrapper = getWrapper();
+        wrapper.like(OrderInfo::getCode, dto.getKeyword());
+        if (ObjectUtil.isEmpty(dto.getType())) {
+            //默认销售订单
+            wrapper.in("oi", OrderInfo::getType, 1, 2);
+        } else {
+            wrapper.eq("oi", OrderInfo::getType, dto.getType());
+        }
+        wrapper.eq("oi", OrderInfo::getStatus, dto.getStatus());//根据状态过滤
+        wrapper.orderByDesc("oi", OrderInfo::getId);
+        Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<OrderInfoVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
+        //赋值客户名称
+        customerService.attributeAssign(records, OrderInfoVo::getCustomerInfoId, (item, customerInfo) -> {
+            item.setCustomerName(customerInfo.getName());
+        });
+        //赋值赋值国省市
+        AreaUtil.setAreaName(records);
+        return page;
+    }
+
+    @Override
+    public OrderInfoVo detail(Long id) {
+        OrderInfo OrderInfo = this.getById(id);
+        OrderInfoVo result = BeanUtil.toBean(OrderInfo, OrderInfoVo.class);
+        //赋值客户名称
+        Customer customer = customerService.getById(result.getCustomerInfoId());
+        if (ObjectUtil.isNotEmpty(customer)) {
+            result.setCustomerName(customer.getName());
+        }
+        //赋值赋值国省市
+        AreaUtil.setAreaName(result);
+        //赋值明细
+        List<OrderDetails> list = orderDetailsService.list(q -> q.eq(OrderDetails::getOrderId, result.getId()));
+        List<OrderDetailsVo> orderDetailsVoList = BeanUtil.copyToList(list, OrderDetailsVo.class);
+        //给明细赋值产品信息
+        productInfoService.attributeAssign(orderDetailsVoList, OrderDetails::getProductId, (item, productInfo) -> {
+            item.setProductCode(productInfo.getCode());
+            item.setProductName(productInfo.getName());
+            item.setProductUnit(productInfo.getUnit());
+        });
+        result.setOrderDetailsList(orderDetailsVoList);
+        return result;
+    }
+
+    @Override
+    public void add(OrderInfoDto orderInfoDto) {
+        // 订单明细
+        List<OrderDetails> orderDetailsList = orderInfoDto.getOrderDetailsList();
+        Assert.notEmpty(orderDetailsList, "订单明细不能为空");
+
+//        Integer type = orderInfoDto.getType();
+//        if (type == 3) {
+//            // 获取京东客户id
+//            Long jdCustomerId = systemConfigService.getValue(SystemConfigKeyConstant.JD_CUSTOMER_ID, Long.class);
+//            orderInfoDto.setCustomerInfoId(jdCustomerId);
+//        }
+
+        // 订单时间
+        orderInfoDto.setOrderTime(ObjectUtil.defaultIfNull(orderInfoDto.getOrderTime(), new Date()));
+
+        // 统计订单金额
+        BigDecimal amountMoney = orderDetailsList.stream()
+                .map(item -> item.getPrice().multiply(item.getQuantity())).reduce(BigDecimal.ZERO, BigDecimal::add);
+        orderInfoDto.setAmountMoney(amountMoney);
+
+        orderInfoDto.setStatus(1);
+        orderInfoDto.setIssueStatus(1);
+
+        synchronized (this) {
+//            if (type == 3) {
+//                orderInfoDto.setCode(CodeEnum.ORDER_JD.getCode(orderInfoDto.getCode()));
+//            } else {
+            orderInfoDto.setCode(CodeEnum.ORDER_SALES.getCode(orderInfoDto.getCode()));
+//            }
+            this.save(orderInfoDto);
+        }
+
+        // 添加订单明细
+        for (OrderDetails orderDetails : orderDetailsList) {
+            orderDetails.setOrderId(orderInfoDto.getId());
+            orderDetails.setNotIssuedQuantity(orderDetails.getQuantity());
+        }
+        orderDetailsService.saveBatch(orderDetailsList);
+    }
+
+    @Override
+    public void edit(OrderInfoDto orderInfoDto) {
+        this.updateById(orderInfoDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 24 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java

@@ -2,9 +2,11 @@ package com.fjhx.victoriatourist.service.stock.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.entity.stock.dto.StockTransferSelectDto;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
@@ -12,6 +14,7 @@ import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
 import com.fjhx.victoriatourist.entity.stock.vo.StockTransferDetailsVo;
 import com.fjhx.victoriatourist.entity.stock.vo.StockTransferVo;
 import com.fjhx.victoriatourist.mapper.stock.StockTransferMapper;
+import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
 import com.fjhx.victoriatourist.utils.CodeEnum;
@@ -30,6 +33,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 
 /**
@@ -55,6 +61,8 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     StockJournalService stockJournalService;
     @Autowired
     StockJournalDetailsService stockJournalDetailsService;
+    @Autowired
+    AbnormalInfoService abnormalInfoService;
 
     @Override
     public Page<StockTransferVo> getPage(StockTransferSelectDto dto) {
@@ -128,10 +136,24 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         List<Stock> stockList = new ArrayList<>();
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
         stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
+        //获取数据库中的数据
+        List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(stockTransferDetailsList);
+        Map<Long, StockTransferDetails> oldstockTransferDetailsMap = oldstockTransferDetailsList.stream().collect(Collectors.toMap(StockTransferDetails::getId, Function.identity()));
         for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
             Stock stock = new Stock();
             stock.setProductId(stockTransferDetails.getProductId());
             stock.setQuantity(stockTransferDetails.getInQuantity());
+
+            //调仓接收数量与发出数量不一致
+            StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
+            if (stockTransferDetails.getInQuantity()!=oldstockTransferDetails.getOutQuantity()) {
+                AbnormalInfo abnormalInfo = new AbnormalInfo();
+                abnormalInfo.setId(IdWorker.getId());
+                abnormalInfo.setType(30);
+                abnormalInfo.setLinkId(stockTransfer.getId());
+                abnormalInfo.setTitle("调仓接收数量与发出数量不一致");
+                abnormalInfoService.save(abnormalInfo);
+            }
         }
         //创建出入库记录
         StockJournal stockJournal = new StockJournal();
@@ -142,9 +164,9 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         //保存出入库记录
         stockJournalService.save(stockJournal);
         //出库
-        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+        stockService.ModifyInventory(stockJournal.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
         //入库
-        stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
+        List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
         //保存出入库记录明细
         stockJournalDetailsService.saveBatch(stockJournalDetailsList);
     }

+ 3 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/utils/CodeEnum.java

@@ -6,6 +6,7 @@ import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
 import com.obs.services.internal.ServiceException;
 import lombok.Getter;
@@ -18,6 +19,8 @@ public enum CodeEnum {
 
     // 调仓
     STOCK_TRANSFER("SM", "yyMM-", "code", 3, StockTransferService.class),
+    // 销售订单
+    ORDER_SALES("SO", null, "code", 5, OrderInfoService.class),
     ;
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {

+ 23 - 0
hx-victoriatourist/src/main/resources/mapper/order/OrderDetailsMapper.xml

@@ -0,0 +1,23 @@
+<?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.fjhx.victoriatourist.mapper.order.OrderDetailsMapper">
+    <select id="getPage" resultType="com.fjhx.victoriatourist.entity.order.vo.OrderDetailsVo">
+        select
+            od.id,
+            od.order_id,
+            od.product_id,
+            od.quantity,
+            od.price,
+            od.not_issued_quantity,
+            od.version,
+            od.remark,
+            od.create_user,
+            od.create_time,
+            od.update_user,
+            od.update_time,
+            od.reservation_number
+        from order_details od
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 34 - 0
hx-victoriatourist/src/main/resources/mapper/order/OrderInfoMapper.xml

@@ -0,0 +1,34 @@
+<?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.fjhx.victoriatourist.mapper.order.OrderInfoMapper">
+    <select id="getPage" resultType="com.fjhx.victoriatourist.entity.order.vo.OrderInfoVo">
+        select
+            oi.id,
+            oi.type,
+            oi.customer_info_id,
+            oi.code,
+            oi.amount_money,
+            oi.order_time,
+            oi.status,
+            oi.issue_status,
+            oi.after_sales_status,
+            oi.country_id,
+            oi.province_id,
+            oi.city_id,
+            oi.detailed_address,
+            oi.contacts,
+            oi.phone,
+            oi.phone_prefix_type,
+            oi.excel_import_id,
+            oi.distribution_center,
+            oi.jd_warehouse,
+            oi.remark,
+            oi.create_user,
+            oi.create_time,
+            oi.update_user,
+            oi.update_time
+        from order_info oi
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>