home 2 lat temu
rodzic
commit
8b80b4cdcc

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

@@ -1,5 +1,6 @@
 package com.fjhx.entity.stock;
 
+import com.fjhx.params.stock.ChangeProduct;
 import com.fjhx.params.stock.StockChangeVo;
 import lombok.Data;
 
@@ -27,30 +28,8 @@ public class ManualVo {
     /**
      * 产品列表
      */
-    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;
-        }
-    }
+    private List<ChangeProduct> changeProductList;
+
+
 
 }

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

@@ -1,17 +1,15 @@
 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.TableField;
 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;
+import java.util.Date;
+
 /**
  * <p>
  * 调仓
@@ -24,7 +22,6 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class StockTransfer extends BaseEntity {
 
-
     /**
      * 产品id
      */
@@ -56,7 +53,7 @@ public class StockTransfer extends BaseEntity {
     private Long inUser;
 
     /**
-     * 接时间
+     * 接时间
      */
     private Date inTime;
 
@@ -66,11 +63,15 @@ public class StockTransfer extends BaseEntity {
     private Integer inStatus;
 
     /**
+     * 备注
+     */
+    private String remark;
+
+    /**
      * 逻辑删除 0未删除 1已删除
      */
     @TableField(fill = FieldFill.INSERT)
     @TableLogic
     private Integer delFlag;
 
-
 }

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

@@ -17,13 +17,15 @@ public enum OutTypeEnum {
     PURCHASE(1, "采购订单出库"),
     JD(2, "京东订单出库"),
 
-    /**
-     * 以下为手动出库明细
-     */
+    // ======== 手动出库明细 ========
     PICKING(3, "领料出库"),
     SALE(4, "销售出库"),
     RETURN_GOODS(5, "退货出库"),
     SCRAP(6, "报废出库"),
+    // ======== 手动出库明细 ========
+
+    TRANSFER(7, "调仓出库"),
+
     ;
 
     private final int key;

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

@@ -0,0 +1,35 @@
+package com.fjhx.params.stock;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ChangeProduct implements StockChangeVo.ChangeDetails {
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 出库数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 业务id
+     */
+    private Long businessId;
+
+    @Override
+    public Long getGoodsId() {
+        return productId;
+    }
+
+    @Override
+    public BigDecimal getChangeQuantity() {
+        return quantity;
+    }
+
+}

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

@@ -18,7 +18,7 @@ public class StockChangeVo {
         defaultWarehouseId = manualVo.getWarehouseId();
         defaultRemarks = manualVo.getRemarks();
         typeEnum = OutTypeEnum.getEnumByKey(manualVo.getType());
-        changeDetailsList = manualVo.getProductListList();
+        changeDetailsList = manualVo.getChangeProductList();
     }
 
     /**

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

@@ -0,0 +1,31 @@
+package com.fjhx.params.stock;
+
+import com.fjhx.entity.stock.StockTransfer;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class StockTransferAddVo {
+
+    /**
+     * 调出仓库id
+     */
+    private Long outWarehouseId;
+
+    /**
+     * 调入仓库id
+     */
+    private Long inWarehouseId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 调仓明细
+     */
+    private List<ChangeProduct> changeProductList;
+
+}

+ 8 - 20
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/StockTransferController.java

@@ -1,10 +1,10 @@
 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.base.Condition;
+import com.fjhx.params.stock.StockTransferAddVo;
 import com.fjhx.service.stock.StockTransferService;
+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;
@@ -29,26 +29,14 @@ public class StockTransferController {
     private StockTransferService stockTransferService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, Object> condition){
-        Page<StockTransfer> result = stockTransferService.getPage(condition);
-        return R.success(result);
+    public R page(@RequestBody Condition condition) {
+        Page<Map<String, Object>> page = stockTransferService.getPage(condition);
+        return R.success(page);
     }
 
     @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);
+    public R add(@RequestBody StockTransferAddVo stockTransferAddVo) {
+        stockTransferService.add(stockTransferAddVo);
         return R.success();
     }
 

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

@@ -1,7 +1,12 @@
 package com.fjhx.mapper.stock;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.stock.StockTransfer;
+import com.fjhx.utils.wrapperUtil.IWrapper;
 import com.github.yulichang.base.MPJBaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +18,6 @@ import com.github.yulichang.base.MPJBaseMapper;
  */
 public interface StockTransferMapper extends MPJBaseMapper<StockTransfer> {
 
+    Page<Map<String, Object>> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
 }

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

@@ -2,4 +2,26 @@
 <!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">
 
+    <select id="getPage" resultType="java.util.LinkedHashMap">
+        select st.id,
+               pi.name,
+               pi.code,
+               pi.unit,
+               pi.specs,
+               iw.name inWarehouseName,
+               ow.name outWarehouseName,
+               st.in_quantity,
+               st.out_quantity,
+               st.create_user,
+               st.create_time,
+               st.in_time,
+               st.in_user,
+               st.in_status
+        from stock_transfer st
+                 left join product_info pi on st.product_id = pi.id
+                 left join warehouse iw on iw.id = st.in_warehouse_id
+                 left join warehouse ow on ow.id = st.out_warehouse_id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 4 - 7
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockTransferService.java

@@ -1,8 +1,9 @@
 package com.fjhx.service.stock;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
 import com.fjhx.entity.stock.StockTransfer;
-import com.fjhx.params.stock.StockTransferVo;
+import com.fjhx.params.stock.StockTransferAddVo;
 import com.fjhx.base.BaseService;
 
 import java.util.Map;
@@ -17,12 +18,8 @@ import java.util.Map;
  */
 public interface StockTransferService extends BaseService<StockTransfer> {
 
-    Page<StockTransfer> getPage(Map<String, Object> condition);
+    Page<Map<String, Object>> getPage(Condition condition);
 
-    void add(StockTransferVo stockTransferVo);
-
-    void edit(StockTransferVo stockTransferVo);
-
-    void delete(StockTransferVo stockTransferVo);
+    void add(StockTransferAddVo stockTransferAddVo);
 
 }

+ 82 - 15
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockTransferServiceImpl.java

@@ -1,15 +1,34 @@
 package com.fjhx.service.stock.impl;
 
+import cn.hutool.core.convert.Convert;
+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.Condition;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.stock.StockTransfer;
-import com.fjhx.params.stock.StockTransferVo;
+import com.fjhx.enums.stock.OutTypeEnum;
 import com.fjhx.mapper.stock.StockTransferMapper;
+import com.fjhx.params.stock.ChangeProduct;
+import com.fjhx.params.stock.StockChangeVo;
+import com.fjhx.params.stock.StockTransferAddVo;
+import com.fjhx.service.stock.StockService;
 import com.fjhx.service.stock.StockTransferService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.UserClientUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
+import com.fjhx.utils.wrapperUtil.KeywordData;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -22,27 +41,75 @@ import java.util.Map;
 @Service
 public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, StockTransfer> implements StockTransferService {
 
+    @Autowired
+    private StockService stockService;
+
     @Override
-    public Page<StockTransfer> getPage(Map<String, Object> condition) {
+    public Page<Map<String, Object>> getPage(Condition condition) {
 
-        IWrapper<StockTransfer> wrapper = IWrapper.getWrapper(condition);
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition);
+        wrapper.eq("st", StockTransfer::getInWarehouseId);
+        wrapper.eq("st", StockTransfer::getOutWarehouseId);
+        wrapper.eq("st", StockTransfer::getInStatus);
+        wrapper.keyword(new KeywordData("pi", ProductInfo::getName), new KeywordData("pi", ProductInfo::getCode));
 
-        return page(condition, wrapper);
-    }
+        Page<Map<String, Object>> page = baseMapper.getPage(condition.getPage(), wrapper);
+        List<Map<String, Object>> records = page.getRecords();
+        if (records.size() == 0) {
+            return page;
+        }
 
-    @Override
-    public void add(StockTransferVo stockTransferVo) {
-        save(stockTransferVo);
-    }
+        List<Long> userIdList = new ArrayList<>();
+        records.forEach(item -> {
+            userIdList.add(Convert.toLong(item.get("inUser")));
+            userIdList.add(Convert.toLong(item.get("createUser")));
+        });
 
-    @Override
-    public void edit(StockTransferVo stockTransferVo) {
-        updateById(stockTransferVo);
+        Map<Long, String> userNameMap = UserClientUtil.getUserNameMap(userIdList);
+
+        for (Map<String, Object> item : records) {
+            item.put("inUserName", userNameMap.get(Convert.toLong(item.get("inUser"))));
+            item.put("outUserName", userNameMap.get(Convert.toLong(item.get("createUser"))));
+        }
+
+        return page;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void delete(StockTransferVo stockTransferVo) {
-        removeById(stockTransferVo.getId());
+    public void add(StockTransferAddVo stockTransferAddVo) {
+        // 调仓明细
+        List<ChangeProduct> changeProductList = stockTransferAddVo.getChangeProductList();
+        Assert.notEmpty(changeProductList, "调仓明细不能为空");
+
+        Date date = new Date();
+        Long userId = AuthUtil.getUserId();
+        List<StockTransfer> stockTransferList = changeProductList.stream().map(item -> {
+            long id = IdWorker.getId();
+
+            StockTransfer stockTransfer = new StockTransfer();
+            stockTransfer.setId(id);
+            stockTransfer.setInWarehouseId(stockTransferAddVo.getInWarehouseId());
+            stockTransfer.setOutWarehouseId(stockTransferAddVo.getOutWarehouseId());
+            stockTransfer.setRemark(stockTransferAddVo.getRemark());
+            stockTransfer.setInStatus(StatusConstant.NO);
+            stockTransfer.setOutQuantity(item.getQuantity());
+            stockTransfer.setProductId(item.getProductId());
+            stockTransfer.setCreateTime(date);
+            stockTransfer.setCreateUser(userId);
+
+            item.setBusinessId(id);
+
+            return stockTransfer;
+        }).collect(Collectors.toList());
+        saveBatch(stockTransferList);
+
+        StockChangeVo stockChangeVo = new StockChangeVo();
+        stockChangeVo.setDefaultWarehouseId(stockTransferAddVo.getOutWarehouseId());
+        stockChangeVo.setDefaultRemarks(stockTransferAddVo.getRemark());
+        stockChangeVo.setTypeEnum(OutTypeEnum.TRANSFER);
+        stockChangeVo.setChangeDetailsList(changeProductList);
+        stockService.changeQuantity(stockChangeVo);
     }
 
 }