Kaynağa Gözat

维多利亚

home 2 yıl önce
ebeveyn
işleme
c1da3f2194
23 değiştirilmiş dosya ile 587 ekleme ve 90 silme
  1. 1 1
      hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java
  2. 56 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/ManualVo.java
  3. 5 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/StockJournal.java
  4. 76 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/StockTransfer.java
  5. 15 2
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/OutTypeEnum.java
  6. 13 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/StockChangeVo.java
  7. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/StockTransferEx.java
  8. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/StockTransferVo.java
  9. 5 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderSalesController.java
  10. 45 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/ManualOutStockController.java
  11. 56 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/StockTransferController.java
  12. 5 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockJournalMapper.java
  13. 21 6
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockJournalMapper.xml
  14. 16 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockTransferMapper.java
  15. 5 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockTransferMapper.xml
  16. 4 2
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderDetailsServiceImpl.java
  17. 7 11
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockJournalService.java
  18. 28 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockTransferService.java
  19. 111 11
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockJournalServiceImpl.java
  20. 6 52
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java
  21. 48 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockTransferServiceImpl.java
  22. 13 0
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java
  23. 17 5
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/kd100/KD100Util.java

+ 1 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java

@@ -12,7 +12,7 @@ public class Victoriatourist {
         CodeGenerator.MODULAR_NAME = "victoriatourist";
 
         // 需要生成的表名称,多表用,隔开
-        CodeGenerator.INCLUDE = "order_details";
+        CodeGenerator.INCLUDE = "stock_transfer";
 
         // mysql连接
         CodeGenerator.MYSQL_URL = "36.134.91.96:17330";

+ 56 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/ManualVo.java

@@ -0,0 +1,56 @@
+package com.fjhx.entity.stock;
+
+import com.fjhx.params.stock.StockChangeVo;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class ManualVo {
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 出库类型
+     */
+    private Integer type;
+
+    /**
+     * 产品列表
+     */
+    private List<productList> productListList;
+
+    @Data
+    private static class productList implements StockChangeVo.ChangeDetails {
+
+        /**
+         * 产品id
+         */
+        private Long productId;
+
+        /**
+         * 出库数量
+         */
+        private BigDecimal quantity;
+
+        @Override
+        public Long getGoodsId() {
+            return productId;
+        }
+
+        @Override
+        public BigDecimal getChangeQuantity() {
+            return quantity;
+        }
+    }
+
+}

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/StockJournal.java

@@ -22,6 +22,11 @@ import java.math.BigDecimal;
 public class StockJournal extends BaseEntity {
 
     /**
+     * 出入库单号
+     */
+    private String code;
+
+    /**
      * 出入库类型 0出库 1入库
      */
     private Integer type;

+ 76 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/StockTransfer.java

@@ -0,0 +1,76 @@
+package com.fjhx.entity.stock;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+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 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockTransfer extends BaseEntity {
+
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 调出仓库id
+     */
+    private Long outWarehouseId;
+
+    /**
+     * 调出数量
+     */
+    private BigDecimal outQuantity;
+
+    /**
+     * 调入仓库id
+     */
+    private Long inWarehouseId;
+
+    /**
+     * 调入数量
+     */
+    private BigDecimal inQuantity;
+
+    /**
+     * 接收人
+     */
+    private Long inUser;
+
+    /**
+     * 接受时间
+     */
+    private Date inTime;
+
+    /**
+     * 接受状态 0未接手 1已接收
+     */
+    private Integer inStatus;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

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

@@ -4,17 +4,26 @@ import cn.hutool.core.util.ObjectUtil;
 import lombok.Getter;
 import org.springblade.core.tool.utils.StringPool;
 
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
- * 库类型枚举
+ * 库类型枚举
  */
 @Getter
 public enum OutTypeEnum {
     PURCHASE(1, "采购订单出库"),
     JD(2, "京东订单出库"),
-    MANUAL(3, "手动出库"),
+
+    /**
+     * 以下为手动出库明细
+     */
+    PICKING(3, "领料出库"),
+    SALE(4, "销售出库"),
+    RETURN_GOODS(5, "退货出库"),
+    SCRAP(6, "报废出库"),
     ;
 
     private final int key;
@@ -54,4 +63,8 @@ public enum OutTypeEnum {
         return outTypeEnum.getValue();
     }
 
+    public static List<Integer> getHandleOutList() {
+        return Arrays.asList(PICKING.key, SALE.key, RETURN_GOODS.key, SCRAP.key);
+    }
+
 }

+ 13 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/StockChangeVo.java

@@ -1,5 +1,7 @@
 package com.fjhx.params.stock;
 
+import com.fjhx.entity.stock.ManualVo;
+import com.fjhx.enums.stock.OutTypeEnum;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -8,6 +10,17 @@ import java.util.List;
 @Data
 public class StockChangeVo {
 
+    public StockChangeVo() {
+
+    }
+
+    public StockChangeVo(ManualVo manualVo) {
+        defaultWarehouseId = manualVo.getWarehouseId();
+        defaultRemarks = manualVo.getRemarks();
+        typeEnum = OutTypeEnum.getEnumByKey(manualVo.getType());
+        changeDetailsList = manualVo.getProductListList();
+    }
+
     /**
      * 默认业务ID
      * 未指定业务ID时,会使用此业务ID

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

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockTransfer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 调仓
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockTransferEx extends StockTransfer {
+
+}

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

@@ -0,0 +1,17 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockTransfer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 调仓
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockTransferVo extends StockTransfer {
+
+}

+ 5 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderSalesController.java

@@ -59,6 +59,11 @@ public class OrderSalesController {
         return R.success();
     }
 
+    /**
+     * 销售出库
+     * @param issueVo
+     * @return
+     */
     @PostMapping("/issue")
     public R issue(@RequestBody IssueVo issueVo) {
         issueVo.setOutTypeEnum(OutTypeEnum.PURCHASE);

+ 45 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/ManualOutStockController.java

@@ -0,0 +1,45 @@
+package com.fjhx.controller.stock;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
+import com.fjhx.entity.stock.ManualVo;
+import com.fjhx.params.stock.StockChangeVo;
+import com.fjhx.service.stock.StockJournalService;
+import com.fjhx.service.stock.StockService;
+import org.springblade.core.tool.api.R;
+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;
+
+/**
+ * @author 手动出库
+ */
+@RestController
+@RequestMapping("/manualOut")
+public class ManualOutStockController {
+
+    @Autowired
+    private StockService stockService;
+
+    @Autowired
+    private StockJournalService stockJournalService;
+
+    @PostMapping("/add")
+    public R add(@RequestBody ManualVo manualVo) {
+        StockChangeVo stockChangeVo = new StockChangeVo(manualVo);
+
+        stockService.changeQuantity(stockChangeVo);
+        return R.success();
+    }
+
+    @PostMapping("page")
+    public R page(@RequestBody Condition condition) {
+        Page<Map<String, Object>> page = stockJournalService.getManualOutPage(condition);
+        return R.success(page);
+    }
+
+}

+ 56 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/StockTransferController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.stock;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.stock.StockTransfer;
+import com.fjhx.params.stock.StockTransferVo;
+import com.fjhx.service.stock.StockTransferService;
+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 2022-12-14
+ */
+@RestController
+@RequestMapping("/stockTransfer")
+public class StockTransferController {
+
+    @Autowired
+    private StockTransferService stockTransferService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition){
+        Page<StockTransfer> result = stockTransferService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody StockTransferVo stockTransferVo){
+        stockTransferService.add(stockTransferVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody StockTransferVo stockTransferVo){
+        stockTransferService.edit(stockTransferVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody StockTransferVo stockTransferVo){
+        stockTransferService.delete(stockTransferVo);
+        return R.success();
+    }
+
+}
+

+ 5 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockJournalMapper.java

@@ -7,6 +7,8 @@ import com.fjhx.utils.wrapperUtil.IWrapper;
 import com.github.yulichang.base.mapper.MPJJoinMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Map;
+
 /**
  * <p>
  * 出入库流水记录 Mapper 接口
@@ -18,4 +20,7 @@ import org.apache.ibatis.annotations.Param;
 public interface StockJournalMapper extends MPJJoinMapper<StockJournal> {
 
     Page<StockJournal> getPage(@Param("page") Page<StockJournal> page, @Param("ew") IWrapper<StockJournal> wrapper);
+
+    Page<Map<String, Object>> getManualOutPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
 }

+ 21 - 6
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockJournalMapper.xml

@@ -20,11 +20,26 @@
             t2.`unit` goodsUnit,
             t3.logistics_info_code,
             t4.`name` warehouseName
-        FROM
-            stock_journal t1
-            LEFT JOIN product_info t2 ON t1.goods_id = t2.id
-            LEFT JOIN logistics_details t3 ON t1.business_id = t3.id
-            LEFT JOIN warehouse t4 on t1.warehouse_id = t4.id
-        ${ew.customSqlSegment}
+        FROM stock_journal t1
+                 LEFT JOIN product_info t2 ON t1.goods_id = t2.id
+                 LEFT JOIN logistics_details t3 ON t1.business_id = t3.id
+                 LEFT JOIN warehouse t4 on t1.warehouse_id = t4.id
+            ${ew.customSqlSegment}
     </select>
+
+    <select id="getManualOutPage" resultType="java.util.Map">
+        select sj.id,
+               sj.change_quantity,
+               sj.create_user,
+               sj.create_time,
+               pi.name,
+               pi.code,
+               pi.unit,
+               pi.specs
+        from stock_journal sj
+                 left join product_info pi on sj.goods_id = pi.id
+                 left join warehouse w on sj.warehouse_id = w.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 16 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockTransferMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.stock;
+
+import com.fjhx.entity.stock.StockTransfer;
+import com.github.yulichang.base.MPJBaseMapper;
+
+/**
+ * <p>
+ * 调仓 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+public interface StockTransferMapper extends MPJBaseMapper<StockTransfer> {
+
+}

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

+ 4 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderDetailsServiceImpl.java

@@ -14,6 +14,7 @@ import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.service.order.OrderDetailsService;
 import com.fjhx.service.order.OrderInfoService;
 import com.fjhx.service.stock.StockService;
+import com.fjhx.uitl.kd100.KD100Util;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.springblade.core.log.exception.ServiceException;
@@ -136,8 +137,9 @@ public class OrderDetailsServiceImpl extends ServiceImpl<OrderDetailsMapper, Ord
         logisticsInfo.setCode(issueVo.getLogisticsCode());
         logisticsInfo.setLogisticsCompanyCode(issueVo.getLogisticsCompanyCode());
         logisticsInfo.setWarehouseId(issueVo.getWarehouseId());
-        // TODO 添加快递100的状态
-        // logisticsInfo.setLogisticsStatus();
+        //查询快递100的物流信息
+        Integer logisticsStatus = KD100Util.getLogisticsStatus(logisticsInfo.getLogisticsCompanyCode(), logisticsInfo.getCode());
+        logisticsInfo.setLogisticsStatus(logisticsStatus);
         logisticsInfo.setStatus(0);
         logisticsInfoService.save(logisticsInfo);
 

+ 7 - 11
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockJournalService.java

@@ -1,11 +1,12 @@
 package com.fjhx.service.stock;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.stock.StockJournal;
+import com.fjhx.params.stock.StockChangeVo;
 import com.fjhx.params.stock.StockJournalVo;
-import com.fjhx.base.BaseService;
 
-import java.math.BigDecimal;
 import java.util.Map;
 
 /**
@@ -26,16 +27,11 @@ public interface StockJournalService extends BaseService<StockJournal> {
 
     void delete(StockJournalVo stockJournalVo);
 
+    void addJournal(StockChangeVo stockChangeVo);
+
     /**
-     * 添加流水记录
-     *
-     * @param type           出入库类型 0出库 1入库
-     * @param detailsType    详细类型
-     * @param goodsId        物品id
-     * @param warehouseId    仓库id
-     * @param changeQuantity 变更数量
-     * @param remarks        备注
+     * 获取手动出库分页
      */
-    void add(Integer type, Integer detailsType, Long goodsId, Long warehouseId, BigDecimal changeQuantity, String remarks);
+    Page<Map<String,Object>> getManualOutPage(Condition condition);
 
 }

+ 28 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockTransferService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.stock;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockTransfer;
+import com.fjhx.params.stock.StockTransferVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 调仓 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-14
+ */
+public interface StockTransferService extends BaseService<StockTransfer> {
+
+    Page<StockTransfer> getPage(Map<String, Object> condition);
+
+    void add(StockTransferVo stockTransferVo);
+
+    void edit(StockTransferVo stockTransferVo);
+
+    void delete(StockTransferVo stockTransferVo);
+
+}

+ 111 - 11
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockJournalServiceImpl.java

@@ -1,17 +1,27 @@
 package com.fjhx.service.stock.impl;
 
+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.base.Condition;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.constants.StockJournalTypeConstant;
 import com.fjhx.entity.stock.StockJournal;
+import com.fjhx.enums.stock.InTypeEnum;
+import com.fjhx.enums.stock.OutTypeEnum;
 import com.fjhx.mapper.stock.StockJournalMapper;
+import com.fjhx.params.stock.StockChangeVo;
 import com.fjhx.params.stock.StockJournalVo;
 import com.fjhx.service.stock.StockJournalService;
+import com.fjhx.uitl.code.CodeEnum;
 import com.fjhx.utils.UserClientUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -66,17 +76,107 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
         removeById(stockJournalVo.getId());
     }
 
-    @Override
-    public void add(Integer type, Integer detailsType, Long goodsId, Long warehouseId, BigDecimal changeQuantity, String remarks) {
-        StockJournal stockJournal = new StockJournal();
-        stockJournal.setType(type);
-        stockJournal.setDetailsType(detailsType);
-        stockJournal.setGoodsId(goodsId);
-        stockJournal.setWarehouseId(warehouseId);
-        stockJournal.setChangeQuantity(changeQuantity);
-        stockJournal.setActualQuantity(new BigDecimal(BigDecimal.ZERO.intValue()));
-        stockJournal.setRemarks(remarks);
-        save(stockJournal);
+    /**
+     * 添加流水记录
+     */
+    public void addJournal(StockChangeVo stockChangeVo) {
+        List<? extends StockChangeVo.ChangeDetails> changeDetailsList = stockChangeVo.getChangeDetailsList();
+        Enum<?> typeEnum = stockChangeVo.getTypeEnum();
+
+        // 添加入库明细
+        List<StockJournal> stockJournalList = new ArrayList<>();
+
+        synchronized (this) {
+
+            String code = null;
+
+            if (typeEnum instanceof InTypeEnum) {
+                switch ((InTypeEnum) typeEnum) {
+
+                }
+            } else {
+                switch ((OutTypeEnum) typeEnum) {
+                    case PICKING:
+                    case SALE:
+                    case RETURN_GOODS:
+                    case SCRAP:
+                        code = CodeEnum.OUT_JOURNAL.getCode();
+                        break;
+                    case PURCHASE:
+                        code = CodeEnum.S_OUT_JOURNAL.getCode();
+                        break;
+                    case JD:
+                        code = CodeEnum.JD_OUT_JOURNAL.getCode();
+                }
+            }
+
+            for (StockChangeVo.ChangeDetails changeDetails : changeDetailsList) {
+
+                // 变更数量
+                BigDecimal changeQuantity = changeDetails.getChangeQuantity();
+                // 变更数量小于等于0,则跳过
+                if (changeQuantity.compareTo(BigDecimal.ZERO) <= 0) {
+                    continue;
+                }
+
+                // 业务id
+                Long businessId = ObjectUtil.defaultIfNull(changeDetails.getBusinessId(), stockChangeVo.getDefaultBusinessId());
+                // 产品id
+                Long goodsId = changeDetails.getGoodsId();
+                // 仓库id
+                Long warehouseId = ObjectUtil.defaultIfNull(changeDetails.getWarehouseId(), stockChangeVo.getDefaultWarehouseId());
+                // 备注
+                String remarks = ObjectUtil.defaultIfNull(changeDetails.getRemarks(), stockChangeVo.getDefaultRemarks());
+
+                StockJournal stockJournal = new StockJournal();
+
+                if (typeEnum instanceof InTypeEnum) {
+                    stockJournal.setType(StockJournalTypeConstant.IN);
+                    stockJournal.setDetailsType(((InTypeEnum) typeEnum).getKey());
+                    stockJournal.setActualQuantity(BigDecimal.ZERO);
+                    stockJournal.setIsInStock(StatusConstant.NO);
+                } else {
+                    stockJournal.setType(StockJournalTypeConstant.OUT);
+                    stockJournal.setDetailsType(((OutTypeEnum) typeEnum).getKey());
+                }
+
+                stockJournal.setCode(code);
+                stockJournal.setBusinessId(businessId);
+                stockJournal.setGoodsId(goodsId);
+                stockJournal.setWarehouseId(warehouseId);
+                stockJournal.setChangeQuantity(changeQuantity);
+                stockJournal.setRemarks(remarks);
+                stockJournalList.add(stockJournal);
+            }
+
+            saveBatch(stockJournalList);
+        }
     }
 
+    @Override
+    public Page<Map<String, Object>> getManualOutPage(Condition condition) {
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
+                .like("sj", StockJournal::getCode)
+                .func(q -> {
+                    Integer type = condition.getInt("type");
+                    if (ObjectUtil.isEmpty(type)) {
+                        q.in("sj", StockJournal::getDetailsType, OutTypeEnum.getHandleOutList());
+                    } else {
+                        q.eq("sj", StockJournal::getDetailsType, type);
+                    }
+                })
+                .eq("sj", StockJournal::getWarehouseId)
+                .eq("sj", StockJournal::getCreateUser)
+                .periodTime("sj", StockJournal::getCreateTime);
+
+        Page<Map<String, Object>> manualOutPage = baseMapper.getManualOutPage(condition.getPage(), wrapper);
+        List<Map<String, Object>> records = manualOutPage.getRecords();
+        if (records.size() == 0) {
+            return manualOutPage;
+        }
+        UserClientUtil.setUserName(records, "createUser", "createUserName");
+
+        return manualOutPage;
+    }
 }

+ 6 - 52
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

@@ -15,8 +15,10 @@ import com.fjhx.mapper.stock.StockMapper;
 import com.fjhx.params.stock.StockChangeVo;
 import com.fjhx.params.stock.StockVo;
 import com.fjhx.service.stock.StockService;
+import com.fjhx.uitl.code.CodeEnum;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.WrapperUtil;
+import org.aspectj.apache.bcel.classfile.Code;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,6 +40,9 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Autowired
     private StockJournalServiceImpl stockJournalService;
 
+    // 添加流水记录锁
+    public static final Object ADD_JOURNAL_LOCK = new Object();
+
     @Override
     public Page<Stock> getPage(Map<String, Object> condition) {
 
@@ -73,7 +78,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         // 变更数量
         ChangeQuantity(map, stockChangeVo.getTypeEnum());
         // 添加流水记录
-        addJournal(stockChangeVo);
+        stockJournalService.addJournal(stockChangeVo);
     }
 
     /**
@@ -144,55 +149,4 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         saveOrUpdateBatch(new ArrayList<>(map.values()));
     }
 
-    /**
-     * 添加流水记录
-     */
-    private void addJournal(StockChangeVo stockChangeVo) {
-        List<? extends StockChangeVo.ChangeDetails> changeDetailsList = stockChangeVo.getChangeDetailsList();
-        Enum<?> typeEnum = stockChangeVo.getTypeEnum();
-
-        // 添加入库明细
-        List<StockJournal> stockJournalList = new ArrayList<>();
-
-        for (StockChangeVo.ChangeDetails changeDetails : changeDetailsList) {
-
-            // 变更数量
-            BigDecimal changeQuantity = changeDetails.getChangeQuantity();
-            // 变更数量小于等于0,则跳过
-            if (changeQuantity.compareTo(BigDecimal.ZERO) <= 0) {
-                continue;
-            }
-
-            // 业务id
-            Long businessId = ObjectUtil.defaultIfNull(changeDetails.getBusinessId(), stockChangeVo.getDefaultBusinessId());
-            // 产品id
-            Long goodsId = changeDetails.getGoodsId();
-            // 仓库id
-            Long warehouseId = ObjectUtil.defaultIfNull(changeDetails.getWarehouseId(), stockChangeVo.getDefaultWarehouseId());
-            // 备注
-            String remarks = ObjectUtil.defaultIfNull(changeDetails.getRemarks(), stockChangeVo.getDefaultRemarks());
-
-            StockJournal stockJournal = new StockJournal();
-
-            if (typeEnum instanceof InTypeEnum) {
-                stockJournal.setType(StockJournalTypeConstant.IN);
-                stockJournal.setDetailsType(((InTypeEnum) typeEnum).getKey());
-                stockJournal.setActualQuantity(BigDecimal.ZERO);
-                stockJournal.setIsInStock(StatusConstant.NO);
-            } else {
-                stockJournal.setType(StockJournalTypeConstant.OUT);
-                stockJournal.setDetailsType(((OutTypeEnum) typeEnum).getKey());
-            }
-
-            stockJournal.setBusinessId(businessId);
-            stockJournal.setGoodsId(goodsId);
-            stockJournal.setWarehouseId(warehouseId);
-            stockJournal.setChangeQuantity(changeQuantity);
-            stockJournal.setRemarks(remarks);
-            stockJournalList.add(stockJournal);
-        }
-
-        stockJournalService.saveBatch(stockJournalList);
-    }
-
 }

+ 48 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockTransferServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fjhx.service.stock.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockTransfer;
+import com.fjhx.params.stock.StockTransferVo;
+import com.fjhx.mapper.stock.StockTransferMapper;
+import com.fjhx.service.stock.StockTransferService;
+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 2022-12-14
+ */
+@Service
+public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, StockTransfer> implements StockTransferService {
+
+    @Override
+    public Page<StockTransfer> getPage(Map<String, Object> condition) {
+
+        IWrapper<StockTransfer> wrapper = IWrapper.getWrapper(condition);
+
+        return page(condition, wrapper);
+    }
+
+    @Override
+    public void add(StockTransferVo stockTransferVo) {
+        save(stockTransferVo);
+    }
+
+    @Override
+    public void edit(StockTransferVo stockTransferVo) {
+        updateById(stockTransferVo);
+    }
+
+    @Override
+    public void delete(StockTransferVo stockTransferVo) {
+        removeById(stockTransferVo.getId());
+    }
+
+}

+ 13 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

@@ -11,6 +11,7 @@ import com.fjhx.service.order.OrderInfoService;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.product.ProductSpuService;
 import com.fjhx.service.purchase.PurchaseService;
+import com.fjhx.service.stock.StockJournalService;
 import com.fjhx.service.supplier.SupplierService;
 import com.fjhx.utils.Assert;
 import lombok.Getter;
@@ -39,6 +40,18 @@ public enum CodeEnum {
     ORDER_SALES("SO", null, "code", 5, OrderInfoService.class),
     // 京东订单
     ORDER_JD("JD", null, "code", 5, OrderInfoService.class),
+    // 手动出库流水单号
+    OUT_JOURNAL("O", "yyyyMM-", "code", 5, StockJournalService.class),
+    // 京东出库流水单号
+    JD_OUT_JOURNAL("JDO", "yyyyMM-", "code", 5, StockJournalService.class),
+    // 销售出库流水单号
+    S_OUT_JOURNAL("SO", "yyyyMM-", "code", 5, StockJournalService.class),
+    // 手动入库流水单号
+    IN_JOURNAL("I", "yyyyMM-", "code", 5, StockJournalService.class),
+    // 京东入库流水单号
+    JD_IN_JOURNAL("JDI", "yyyyMM-", "code", 5, StockJournalService.class),
+    // 销售入库流水单号
+    S_IN_JOURNAL("SI", "yyyyMM-", "code", 5, StockJournalService.class),
 
     ;
 

+ 17 - 5
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/kd100/KD100Util.java

@@ -2,17 +2,14 @@ package com.fjhx.uitl.kd100;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fjhx.config.KD100Config;
+import com.fjhx.constants.logistics.LogisticsConstant;
 import com.google.gson.Gson;
 import com.kuaidi100.sdk.api.QueryTrack;
 import com.kuaidi100.sdk.api.Subscribe;
 import com.kuaidi100.sdk.contant.ApiInfoConstant;
 import com.kuaidi100.sdk.core.IBaseClient;
 import com.kuaidi100.sdk.pojo.HttpResult;
-import com.kuaidi100.sdk.request.QueryTrackParam;
-import com.kuaidi100.sdk.request.QueryTrackReq;
-import com.kuaidi100.sdk.request.SubscribeParam;
-import com.kuaidi100.sdk.request.SubscribeParameters;
-import com.kuaidi100.sdk.request.SubscribeReq;
+import com.kuaidi100.sdk.request.*;
 import com.kuaidi100.sdk.utils.SignUtils;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
@@ -21,6 +18,7 @@ import org.springblade.core.tool.api.ResultCode;
 import org.springblade.core.tool.utils.Func;
 
 import java.net.URLDecoder;
+import java.util.Objects;
 
 @Log4j2
 public class KD100Util {
@@ -154,4 +152,18 @@ public class KD100Util {
             throw new ServiceException("物流信息推送失败!");
         }
     }
+
+    public static Integer getLogisticsStatus(String logisticsCompanyCode, String code) {
+        //查询快递100的物流信息
+        JSONObject result = KD100Util.queryTrack(logisticsCompanyCode, code);
+        Integer state = result.getInteger("state");
+        new Thread(() -> {
+            if (!Objects.equals(state, LogisticsConstant.KD100Status.STATUS_3)) {
+                //如果不是已签收状态,则开启订阅(物流状态跟踪并推送)
+                KD100Util.subscribe(logisticsCompanyCode, code);
+            }
+        }).start();
+        return state;
+    }
+
 }