Jelajahi Sumber

待出库页面合并
采购退货
物流管理

yzc 2 tahun lalu
induk
melakukan
b9bc338636
32 mengubah file dengan 748 tambahan dan 21 penghapusan
  1. 3 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsInfo.java
  2. 44 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsRecords.java
  3. 66 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/purchase/PurchaseBack.java
  4. 3 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/OutTypeEnum.java
  5. 3 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/DataInfoPageVo.java
  6. 3 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsInfoEx.java
  7. 3 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsInfoVo.java
  8. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsRecordsEx.java
  9. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsRecordsVo.java
  10. 23 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/purchase/PurchaseBackEx.java
  11. 28 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/purchase/PurchaseBackVo.java
  12. 18 4
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsInfoController.java
  13. 40 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsRecordsController.java
  14. 51 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderInfoController.java
  15. 46 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/purchase/PurchaseBackController.java
  16. 2 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.java
  17. 38 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.xml
  18. 16 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsRecordsMapper.java
  19. 5 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsRecordsMapper.xml
  20. 21 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/purchase/PurchaseBackMapper.java
  21. 19 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/purchase/PurchaseBackMapper.xml
  22. 9 5
      hx-service/victoriatourist/src/main/java/com/fjhx/service/abnormal/impl/AbnormalDetailsServiceImpl.java
  23. 25 1
      hx-service/victoriatourist/src/main/java/com/fjhx/service/jd/impl/JdBackServiceImpl.java
  24. 5 4
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsInfoService.java
  25. 23 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsRecordsService.java
  26. 27 7
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsInfoServiceImpl.java
  27. 31 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsRecordsServiceImpl.java
  28. 2 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderInfoService.java
  29. 10 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderDetailsServiceImpl.java
  30. 43 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderInfoInfoServiceImpl.java
  31. 26 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/purchase/PurchaseBackService.java
  32. 81 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/purchase/impl/PurchaseBackServiceImpl.java

+ 3 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsInfo.java

@@ -122,4 +122,7 @@ public class LogisticsInfo extends BaseEntity {
     @TableField(exist = false)
     private String purchaseName;
 
+    /**是否是快递100 1是 0不是*/
+    private Integer is_kd100;
+
 }

+ 44 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsRecords.java

@@ -0,0 +1,44 @@
+package com.fjhx.entity.logistics;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 物流记录
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LogisticsRecords extends BaseEntity {
+
+
+    /**
+     * 物流id
+     */
+    private Long logisticsId;
+
+    /***添加物流记录的时间*/
+    private String addTime;
+
+    private String remark;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 66 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/purchase/PurchaseBack.java

@@ -0,0 +1,66 @@
+package com.fjhx.entity.purchase;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 采购退货
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseBack extends BaseEntity {
+
+
+    /**
+     * 采购ID
+     */
+    private Long purchaseId;
+
+    /**
+     * 退货状态
+     */
+    private Integer status;
+
+    /**
+     * 采购退货数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 流程实例ID
+     */
+    private Long flowId;
+
+    /**
+     * 当前节点审批人ID
+     */
+    private Long flowApproverId;
+
+    /**
+     * 当前节点审批人名称
+     */
+    private String flowApproverName;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 3 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/OutTypeEnum.java

@@ -20,6 +20,9 @@ public enum OutTypeEnum {
 
     // business_id = stock_transfer 表 id
     JD(2, "京东订单出库"),
+    PURCHASE_BACK(10, "采购退货订单出库"),
+
+
 
     // ======== 手动出库明细 ========
 

+ 3 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/DataInfoPageVo.java

@@ -71,4 +71,7 @@ public class DataInfoPageVo {
      */
     private String companyName;
 
+    /**是否是快递100*/
+    private Integer isKd100;
+
 }

+ 3 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsInfoEx.java

@@ -14,4 +14,7 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class LogisticsInfoEx extends LogisticsInfo {
 
+    /**仓库名称*/
+    private String warehouseName;
+
 }

+ 3 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsInfoVo.java

@@ -19,4 +19,7 @@ public class LogisticsInfoVo extends LogisticsInfo {
      */
     private Long purchaseId;
 
+    /**备注*/
+    private String remark;
+
 }

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsRecordsEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.logistics;
+
+import com.fjhx.entity.logistics.LogisticsRecords;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 物流记录
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LogisticsRecordsEx extends LogisticsRecords {
+
+}

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/LogisticsRecordsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.logistics;
+
+import com.fjhx.entity.logistics.LogisticsRecords;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 物流记录
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LogisticsRecordsVo extends LogisticsRecords {
+
+}

+ 23 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/purchase/PurchaseBackEx.java

@@ -0,0 +1,23 @@
+package com.fjhx.params.purchase;
+
+import com.fjhx.entity.purchase.PurchaseBack;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购退货
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseBackEx extends PurchaseBack {
+
+    /**产品ID*/
+    private Long goodsId;
+
+    /**产品所在仓库*/
+    private Long receiptWarehouseId;
+
+}

+ 28 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/purchase/PurchaseBackVo.java

@@ -0,0 +1,28 @@
+package com.fjhx.params.purchase;
+
+import com.fjhx.entity.purchase.PurchaseBack;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 采购退货
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PurchaseBackVo extends PurchaseBack {
+    /**收件人*/
+    private String contacts;
+    /**联系电话*/
+    private String phone;
+    /**所在市*/
+    private String cityId;
+    /**所在省*/
+    private String provinceId;
+    /**所在国家*/
+    private String countryId;
+    /**详细地址*/
+    private String detailedAddress;
+}

+ 18 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsInfoController.java

@@ -2,13 +2,11 @@ package com.fjhx.controller.logistics;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseSelectDto;
+import com.fjhx.base.Condition;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.constants.logistics.LogisticsConstant;
 import com.fjhx.entity.logistics.LogisticsInfo;
-import com.fjhx.params.logistics.DataInfoPageDto;
-import com.fjhx.params.logistics.DataInfoPageVo;
-import com.fjhx.params.logistics.DeliverDetailsVo;
-import com.fjhx.params.logistics.LogisticsInfoVo;
+import com.fjhx.params.logistics.*;
 import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.uitl.kd100.KD100Result;
 import org.springblade.core.tool.api.R;
@@ -52,6 +50,13 @@ public class LogisticsInfoController {
         return R.success();
     }
 
+    /**添加物流*/
+    @PostMapping("/addLogistics")
+    public R addLogistics(@RequestBody LogisticsInfoVo entity) {
+        logisticsInfoService.addLogistics(entity);
+        return R.success();
+    }
+
     @PostMapping("/edit")
     public R edit(@RequestBody LogisticsInfoVo logisticsInfoVo) {
         logisticsInfoService.edit(logisticsInfoVo);
@@ -134,5 +139,14 @@ public class LogisticsInfoController {
         return R.success();
     }
 
+    /**
+     * 合并 采购入库、京东退货 入库页面分页
+     */
+    @PostMapping(value = "/issuePage")
+    public R page(@RequestBody Condition condition) {
+        Page<LogisticsInfoEx> result = logisticsInfoService.issuePage(condition);
+        return R.success(result);
+    }
+
 }
 

+ 40 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsRecordsController.java

@@ -0,0 +1,40 @@
+package com.fjhx.controller.logistics;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.logistics.LogisticsRecords;
+import com.fjhx.params.logistics.LogisticsRecordsVo;
+import com.fjhx.service.logistics.LogisticsRecordsService;
+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;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 物流记录 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@RestController
+@RequestMapping("/logisticsRecords")
+public class LogisticsRecordsController {
+
+    @Autowired
+    private LogisticsRecordsService logisticsRecordsService;
+
+
+    /**添加物流记录*/
+    @PostMapping("/add")
+    public R add(@RequestBody LogisticsRecordsVo logisticsRecordsVo){
+        logisticsRecordsService.add(logisticsRecordsVo);
+        return R.success();
+    }
+
+}
+

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

@@ -0,0 +1,51 @@
+package com.fjhx.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.enums.stock.OutTypeEnum;
+import com.fjhx.params.order.IssueDto;
+import com.fjhx.params.order.OrderInfoEx;
+import com.fjhx.service.order.OrderDetailsService;
+import com.fjhx.service.order.OrderInfoService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@RestController
+@RequestMapping("/orderInfo")
+public class OrderInfoController {
+
+    @Autowired
+    private OrderInfoService orderInfoService;
+
+    @Autowired
+    private OrderDetailsService orderDetailsService;
+
+    @PostMapping("/issuePage")
+    public R issuePage(@RequestBody Map<String, Object> condition) {
+        condition.put("deliverable", true);
+        Page<OrderInfoEx> result = orderInfoService.getPage1(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 采购退货出库
+     */
+    @PostMapping("/issue")
+    public R issue(@RequestBody IssueDto issueDto) {
+        issueDto.setOutTypeEnum(OutTypeEnum.PURCHASE_BACK);
+        orderDetailsService.issue(issueDto);
+        return R.success();
+    }
+
+}
+

+ 46 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/purchase/PurchaseBackController.java

@@ -0,0 +1,46 @@
+package com.fjhx.controller.purchase;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.params.purchase.PurchaseBackEx;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.purchase.PurchaseBack;
+import com.fjhx.params.purchase.PurchaseBackVo;
+import com.fjhx.service.purchase.PurchaseBackService;
+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;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购退货 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@RestController
+@RequestMapping("/purchaseBack")
+public class PurchaseBackController {
+
+    @Autowired
+    private PurchaseBackService purchaseBackService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Condition condition){
+        Page<PurchaseBackEx> result = purchaseBackService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody PurchaseBackVo purchaseBackVo){
+        purchaseBackService.add(purchaseBackVo);
+        return R.success();
+    }
+
+}
+

+ 2 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.logistics.LogisticsInfo;
 import com.fjhx.params.logistics.DataInfoPageVo;
 import com.fjhx.params.logistics.JdBackPageVo;
+import com.fjhx.params.logistics.LogisticsInfoEx;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -31,4 +32,5 @@ public interface LogisticsInfoMapper extends BaseMapper<LogisticsInfo> {
 
     Page<JdBackPageVo> jdBackPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
 
+    Page<LogisticsInfoEx> issuePage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
 }

+ 38 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.xml

@@ -33,6 +33,7 @@
                sc.code                   code,
                sc.logistics_company_code logisticsCompanyCode,
                sc.logistics_status       logisticsStatus,
+               sc.is_kd100               isKd100,
                lc.name                   companyName
         from logistics_info sc
                  left join logistics_company lc on sc.logistics_company_code = lc.code
@@ -54,5 +55,42 @@
                  left join logistics_company lc on li.logistics_company_code = lc.code
             ${ew.customSqlSegment}
     </select>
+    <select id="issuePage" resultType="com.fjhx.params.logistics.LogisticsInfoEx">
+        SELECT
+            logistics_info.business_type,
+            warehouse.`name` warehouseName,
+            logistics_info.business_code purchaseCode,
+            logistics_company.`name` logisticsCompanyName,
+            logistics_info.`code`,
+            logistics_info.id,
+            jd_back.create_user,
+            jd_back.update_time,
+            logistics_info.in_stock_status
+        FROM
+            jd_back
+                JOIN warehouse ON jd_back.warehouse_id = warehouse.id
+                JOIN jd_back_details ON jd_back_details.jd_back_id = jd_back.id
+                JOIN logistics_info ON jd_back.waybill = logistics_info.`code`
+                JOIN logistics_company ON logistics_info.logistics_company_code = logistics_company.`code`
+            ${ew.customSqlSegment}
+        UNION ALL
+        SELECT
+            logistics_info.business_type,
+            warehouse.`name` warehouseName,
+            purchase.`code` purchaseCode,
+            logistics_company.`name` logisticsCompanyName,
+            logistics_info.`code`,
+            logistics_info.id,
+            purchase.create_user,
+            purchase.update_time,
+            logistics_info.in_stock_status
+        FROM
+            apply_purchase
+                JOIN warehouse ON apply_purchase.receipt_warehouse_id = warehouse.id
+                JOIN purchase ON purchase.apply_id = apply_purchase.id
+                JOIN logistics_info ON purchase.id = logistics_info.business_id
+                JOIN logistics_company ON logistics_info.logistics_company_code = logistics_company.`code`
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>

+ 16 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsRecordsMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.logistics;
+
+import com.fjhx.entity.logistics.LogisticsRecords;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 物流记录 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+public interface LogisticsRecordsMapper extends BaseMapper<LogisticsRecords> {
+
+}

+ 5 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsRecordsMapper.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.fjhx.mapper.logistics.LogisticsRecordsMapper">
+
+</mapper>

+ 21 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/purchase/PurchaseBackMapper.java

@@ -0,0 +1,21 @@
+package com.fjhx.mapper.purchase;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.purchase.PurchaseBack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.params.purchase.PurchaseBackEx;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 采购退货 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+public interface PurchaseBackMapper extends BaseMapper<PurchaseBack> {
+
+    Page<PurchaseBackEx> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseBack> wrapper);
+}

+ 19 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/purchase/PurchaseBackMapper.xml

@@ -0,0 +1,19 @@
+<?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.mapper.purchase.PurchaseBackMapper">
+
+    <select id="getPage" resultType="com.fjhx.params.purchase.PurchaseBackEx">
+        SELECT
+            pb.id id,
+            pb.purchase_id purchaseId,
+            pb.status status,
+            pb.quantity quantity,
+            ap.goods_id goodsId,
+            ap.receipt_warehouse_id receiptWarehouseId
+        FROM
+            purchase_back pb
+                JOIN purchase p ON pb.purchase_id = p.id
+                JOIN apply_purchase ap ON p.apply_id = ap.id
+            ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 9 - 5
hx-service/victoriatourist/src/main/java/com/fjhx/service/abnormal/impl/AbnormalDetailsServiceImpl.java

@@ -15,6 +15,7 @@ import com.fjhx.utils.Assert;
 import com.fjhx.utils.UserClientUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import com.fjhx.websocket.service.WebSocketServer;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -70,11 +71,14 @@ public class AbnormalDetailsServiceImpl extends ServiceImpl<AbnormalDetailsMappe
         abnormalInfo.setHandleTime(abnormalDetailsVo.getHandleTime());
         abnormalInfoService.updateById(abnormalInfo);
 
-        //给下一个跟进人发消息通知
-        JSONObject meassage = new JSONObject();
-        meassage.put("msg","有异常需要您跟进");
-        meassage.put("abnormalInfoId",abnormalDetailsVo.getAbnormalInfoId().toString());
-        WebSocketServer.sendInfo(abnormalDetailsVo.getNextHandleUser().toString(),1,meassage);
+        //如果下一跟进人不为空 就给下一跟进人发送消息
+        if(ObjectUtil.isNotEmpty(abnormalDetailsVo.getNextHandleUser())) {
+            //给下一个跟进人发消息通知
+            JSONObject meassage = new JSONObject();
+            meassage.put("msg", "有异常需要您跟进");
+            meassage.put("abnormalInfoId", abnormalDetailsVo.getAbnormalInfoId().toString());
+            WebSocketServer.sendInfo(abnormalDetailsVo.getNextHandleUser().toString(), 1, meassage);
+        }
 
         save(abnormalDetailsVo);
     }

+ 25 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/jd/impl/JdBackServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.jd.JdBack;
 import com.fjhx.entity.jd.JdBackDetails;
+import com.fjhx.entity.logistics.LogisticsInfo;
+import com.fjhx.entity.order.OrderInfo;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.quality.QualityInfo;
 import com.fjhx.enums.stock.QualityStatusEnum;
@@ -17,6 +19,7 @@ import com.fjhx.params.jd.JdBackPageDto;
 import com.fjhx.params.jd.JdBackVo;
 import com.fjhx.service.jd.JdBackDetailsService;
 import com.fjhx.service.jd.JdBackService;
+import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.quality.QualityInfoService;
 import com.fjhx.service.warehouse.WarehouseService;
@@ -57,6 +60,9 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
     @Autowired
     private QualityInfoService qualityInfoService;
 
+    @Autowired
+    private LogisticsInfoService logisticsInfoService;
+
     @Override
     public void add(JdBackVo jdBackVo) {
         save(jdBackVo);
@@ -93,7 +99,7 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
                     stringJoiner.add(item);
                 }
             });
-            throw new ServiceException("物编码不存在:" + stringJoiner);
+            throw new ServiceException("物编码不存在:" + stringJoiner);
         }
 
 
@@ -131,6 +137,24 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
         }
         qualityInfoService.saveBatch(qualityInfoList);
 
+        //根据运单号生成物流信息
+        //根据运单号分组
+        List<LogisticsInfo> logisticsInfoList = new ArrayList<>();
+        Map<String, List<JdBackDetails>> collect1s = jdBackDetailsList.stream().collect(Collectors.groupingBy(JdBackDetails::getWaybill));
+        for (Map.Entry<String, List<JdBackDetails>> entry : collect1s.entrySet()) {
+            JdBackDetails jdBackDetails = entry.getValue().get(0);
+            LogisticsInfo logisticsInfo = new LogisticsInfo();
+            logisticsInfo.setBusinessId(jdBackDetails.getJdBackId());
+            logisticsInfo.setBusinessCode(jdBackDetails.getBackCode());
+            logisticsInfo.setBusinessType(4);//设置类型为京东退货
+            logisticsInfo.setCode(jdBackDetails.getWaybill());
+            logisticsInfo.setInStockStatus(10);
+            logisticsInfo.setLogisticsCompanyCode("jingdongkuaiyun");//物流公司编码
+            logisticsInfo.setWarehouseId(warehouseId);
+            logisticsInfoList.add(logisticsInfo);
+        }
+        logisticsInfoService.saveBatch(logisticsInfoList);
+
         saveBatch(jdBackList);
         jdBackDetailsService.saveBatch(jdBackDetailsList);
     }

+ 5 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsInfoService.java

@@ -2,11 +2,9 @@ package com.fjhx.service.logistics;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.logistics.LogisticsInfo;
-import com.fjhx.params.logistics.DataInfoPageDto;
-import com.fjhx.params.logistics.DataInfoPageVo;
-import com.fjhx.params.logistics.DeliverDetailsVo;
-import com.fjhx.params.logistics.LogisticsInfoVo;
+import com.fjhx.params.logistics.*;
 import com.fjhx.params.stock.InStockAdd;
 import com.fjhx.uitl.kd100.KD100Result;
 import org.springblade.core.tool.api.R;
@@ -101,4 +99,7 @@ public interface LogisticsInfoService extends BaseService<LogisticsInfo> {
 
      void editLogistics(DataInfoPageVo dataInfoPageVo);
 
+    void addLogistics(LogisticsInfoVo entity);
+
+    Page<LogisticsInfoEx> issuePage(Condition condition);
 }

+ 23 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsRecordsService.java

@@ -0,0 +1,23 @@
+package com.fjhx.service.logistics;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.logistics.LogisticsRecords;
+import com.fjhx.params.logistics.LogisticsRecordsVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 物流记录 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+public interface LogisticsRecordsService extends BaseService<LogisticsRecords> {
+
+    /**添加物流记录*/
+    void add(LogisticsRecordsVo logisticsRecordsVo);
+
+}

+ 27 - 7
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsInfoServiceImpl.java

@@ -7,6 +7,7 @@ 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.base.BaseIdEntity;
+import com.fjhx.base.Condition;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.constants.logistics.LogisticsConstant;
 import com.fjhx.entity.apply.ApplyPurchase;
@@ -14,6 +15,7 @@ import com.fjhx.entity.logistics.LogisticsDetails;
 import com.fjhx.entity.logistics.LogisticsInfo;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.purchase.Purchase;
+import com.fjhx.entity.purchase.PurchaseBack;
 import com.fjhx.entity.quality.QualityDetails;
 import com.fjhx.entity.quality.QualityInfo;
 import com.fjhx.entity.stock.StockJournal;
@@ -21,10 +23,7 @@ import com.fjhx.enums.purchase.PurchaseStatusEnum;
 import com.fjhx.enums.stock.InTypeEnum;
 import com.fjhx.enums.stock.QualityStatusEnum;
 import com.fjhx.mapper.logistics.LogisticsInfoMapper;
-import com.fjhx.params.logistics.DataInfoPageDto;
-import com.fjhx.params.logistics.DataInfoPageVo;
-import com.fjhx.params.logistics.DeliverDetailsVo;
-import com.fjhx.params.logistics.LogisticsInfoVo;
+import com.fjhx.params.logistics.*;
 import com.fjhx.params.stock.InStockAdd;
 import com.fjhx.params.stock.StockChangeDto;
 import com.fjhx.service.apply.ApplyPurchaseService;
@@ -432,9 +431,13 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
                         new KeywordData("lc.name"),
                         new KeywordData("sc.code")
                 );
-        //如果为1 过滤掉已完成数据
-        if (ObjectUtil.isNotEmpty(dto.getNotComplete()) && dto.getNotComplete() == 1) {
-            wrapper.ne("sc.logistics_status", "15");
+        //如果为1 已完成数据 0 未完成数据
+        if (ObjectUtil.isNotEmpty(dto.getNotComplete())) {
+            if (dto.getNotComplete() == 1) {
+                wrapper.eq("sc.logistics_status", "15");
+            } else {
+                wrapper.ne("sc.logistics_status", "15");
+            }
         }
         return baseMapper.dataInfoPage(dto.getPage(), wrapper);
     }
@@ -469,4 +472,21 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
         update(updateWrapper);
     }
 
+    @Override
+    public void addLogistics(LogisticsInfoVo entity){
+        save(entity);
+        LogisticsDetails logisticsDetails = new LogisticsDetails();
+        logisticsDetails.setLogisticsInfoId(entity.getId());
+        logisticsDetails.setRemark(entity.getRemark());
+        logisticsDetailsService.save(logisticsDetails);
+    }
+
+    @Override
+    public Page<LogisticsInfoEx> issuePage(Condition condition){
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition);
+        wrapper.ne("in_stock_status",30);
+        wrapper.eq(ObjectUtil.isNotEmpty(condition.get("type")),"logistics_info.business_type",condition.get("type"));
+        return baseMapper.issuePage(condition.getPage(), wrapper);
+    }
+
 }

+ 31 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsRecordsServiceImpl.java

@@ -0,0 +1,31 @@
+package com.fjhx.service.logistics.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.logistics.LogisticsRecords;
+import com.fjhx.params.logistics.LogisticsRecordsVo;
+import com.fjhx.mapper.logistics.LogisticsRecordsMapper;
+import com.fjhx.service.logistics.LogisticsRecordsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 物流记录 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Service
+public class LogisticsRecordsServiceImpl extends ServiceImpl<LogisticsRecordsMapper, LogisticsRecords> implements LogisticsRecordsService {
+
+    @Override
+    public void add(LogisticsRecordsVo logisticsRecordsVo) {
+        save(logisticsRecordsVo);
+    }
+
+
+}

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

@@ -34,4 +34,6 @@ public interface OrderInfoService extends BaseService<OrderInfo> {
 
     void addAfterSales(OrderInfoVo orderInfoVo);
 
+    Page<OrderInfoEx> getPage1(Map<String, Object> condition);
+
 }

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

@@ -110,6 +110,16 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
 
         switch (issueDto.getOutTypeEnum()) {
 
+            // 采购退货添加出库记录
+            case PURCHASE_BACK:
+                StockChangeDto stockChangeDto1 = new StockChangeDto();
+                stockChangeDto1.setDefaultWarehouseId(issueDto.getWarehouseId());
+                stockChangeDto1.setTypeEnum(OutTypeEnum.PURCHASE_BACK);
+                stockChangeDto1.setDefaultRemarks("采购退货订单出库");
+                stockChangeDto1.setChangeDetailsList(issueDto.getOrderDetailsList());
+                stockService.changeQuantity(stockChangeDto1);
+                break;
+
             // 销售出库添加出库记录
             case PURCHASE:
                 StockChangeDto stockChangeDto = new StockChangeDto();

+ 43 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderInfoInfoServiceImpl.java

@@ -123,6 +123,49 @@ public class OrderInfoInfoServiceImpl extends ServiceImpl<OrderInfoMapper, Order
         return page;
     }
 
+    /**获取 销售订单出库 京东订单出库 采购订单出库 数据*/
+    @Override
+    public Page<OrderInfoEx> getPage1(Map<String, Object> condition) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
+                .func(q -> {
+                    Boolean issue = Convert.toBool(condition.get("deliverable"), false);
+
+                    //获取 销售订单出库(1,2,5,6) 京东订单出库(3) 采购订单出库(7) 数据
+                    Object type = condition.get("type");
+                    if(ObjectUtil.isEmpty(type)){
+                        q.in("oi", OrderInfo::getType, 1, 2, 5, 6, 3, 7);
+                    }else if ("1".equals(type) || "2".equals(type) || "5".equals(type) || "6".equals(type)) {
+                        q.in("oi", OrderInfo::getType, 1, 2, 5, 6);
+                    }else {
+                        q.eq("oi", OrderInfo::getType);
+                    }
+
+                    // 如果是出货,订单状态为1进行中,出库状态为1未出库或2进行中
+                    if (issue) {
+                        q.eq("oi", OrderInfo::getStatus, 1);
+                        q.in("oi", OrderInfo::getIssueStatus, 1, 2);
+                    }
+                })
+                .keyword(new KeywordData("oi", OrderInfo::getCode), new KeywordData("ci", CustomerInfo::getName))
+                .eq("oi", OrderInfo::getAfterSalesStatus)
+                .ne("oi", OrderInfo::getStatus,2)//不显示已完成订单
+                .like("oi", OrderInfo::getCode)
+                .like("ci", CustomerInfo::getName, condition.get("customerName"))
+                .eq("oi", OrderInfo::getCountryId)
+                .eq("oi", OrderInfo::getProvinceId)
+                .eq("oi", OrderInfo::getCityId)
+                .ge("oi", OrderInfo::getAmountMoney, condition.get("minAmountMoney"))
+                .le("oi", OrderInfo::getAmountMoney, condition.get("maxAmountMoney"))
+                .orderByDesc("oi", OrderInfo::getId);
+
+        Page<OrderInfoEx> page = baseMapper.getPage(createPage(condition), wrapper);
+
+        // 赋值国省市
+        RegionClientUtil.setEntityRegionName(page.getRecords());
+
+        return page;
+    }
+
     @Override
     public void add(OrderInfoVo orderVo) {
         // 订单明细

+ 26 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/purchase/PurchaseBackService.java

@@ -0,0 +1,26 @@
+package com.fjhx.service.purchase;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.entity.purchase.PurchaseBack;
+import com.fjhx.params.purchase.PurchaseBackEx;
+import com.fjhx.params.purchase.PurchaseBackVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 采购退货 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+public interface PurchaseBackService extends BaseService<PurchaseBack> {
+
+    Page<PurchaseBackEx> getPage(Condition condition);
+
+    void add(PurchaseBackVo purchaseBackVo);
+
+}

+ 81 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/purchase/impl/PurchaseBackServiceImpl.java

@@ -0,0 +1,81 @@
+package com.fjhx.service.purchase.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.entity.apply.ApplyPurchase;
+import com.fjhx.entity.order.OrderDetails;
+import com.fjhx.entity.order.OrderInfo;
+import com.fjhx.entity.purchase.Purchase;
+import com.fjhx.entity.purchase.PurchaseBack;
+import com.fjhx.params.purchase.PurchaseBackEx;
+import com.fjhx.params.purchase.PurchaseBackVo;
+import com.fjhx.mapper.purchase.PurchaseBackMapper;
+import com.fjhx.service.apply.ApplyPurchaseService;
+import com.fjhx.service.order.OrderDetailsService;
+import com.fjhx.service.order.OrderInfoService;
+import com.fjhx.service.purchase.PurchaseBackService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.service.purchase.PurchaseService;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * <p>
+ * 采购退货 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-03-13
+ */
+@Service
+public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, PurchaseBack> implements PurchaseBackService {
+    @Autowired
+    private PurchaseService purchaseService;
+
+    @Autowired
+    private OrderInfoService orderInfoService;
+    @Autowired
+    private ApplyPurchaseService applyPurchaseService;
+    @Autowired
+    private OrderDetailsService orderDetailsService;
+
+    @Override
+    public Page<PurchaseBackEx> getPage(Condition condition) {
+        IWrapper<PurchaseBack> wrapper = IWrapper.getWrapper(condition);
+        return baseMapper.getPage(condition.getPage(), wrapper);
+    }
+
+    @Transactional
+    @Override
+    public void add(PurchaseBackVo purchaseBackVo) {
+        //创建退货记录
+        purchaseBackVo.setStatus(0);
+        save(purchaseBackVo);
+        //查询采购订单信息
+        Purchase purchase = purchaseService.getById(purchaseBackVo.getPurchaseId());
+        ApplyPurchase applyPurchase = applyPurchaseService.getById(purchase.getApplyId());
+        //创建退货订单
+        OrderInfo orderInfo = new OrderInfo();
+        orderInfo.setType(7);
+        orderInfo.setCode(purchase.getCode());
+        orderInfo.setStatus(1);
+        orderInfo.setIssueStatus(1);
+        orderInfo.setContacts(purchaseBackVo.getContacts());//收件人
+        orderInfo.setPhone(purchaseBackVo.getPhone());//联系电话
+        orderInfo.setCityId(purchaseBackVo.getCityId());//所在市
+        orderInfo.setProvinceId(purchaseBackVo.getProvinceId());//所在省
+        orderInfo.setCountryId(purchaseBackVo.getCountryId());//所在国家
+        orderInfo.setDetailedAddress(purchaseBackVo.getDetailedAddress());//详细地址
+        orderInfoService.save(orderInfo);
+        //创建订单明细
+        OrderDetails orderDetails = new OrderDetails();
+        orderDetails.setOrderId(orderInfo.getId());
+        orderDetails.setProductId(applyPurchase.getGoodsId());
+        orderDetails.setQuantity(purchaseBackVo.getQuantity());
+        orderDetails.setPrice(applyPurchase.getUnitPrice());
+        orderDetails.setNotIssuedQuantity(purchaseBackVo.getQuantity());
+        orderDetailsService.save(orderDetails);
+    }
+}