Browse Source

京东订单接收

yzc 2 years ago
parent
commit
c963e68865

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -5,6 +5,7 @@ import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +40,14 @@ public class JdOrderController {
     }
 
     /**
+     * 京东订单接收分页
+     */
+    @PostMapping("/receivePage")
+    public Page<JdOrderVo> receivePage(@RequestBody JdOrderSelectDto dto) {
+        return jdOrderService.receivePage(dto);
+    }
+
+    /**
      * 京东订单明细
      */
     @PostMapping("/detail")
@@ -78,4 +87,12 @@ public class JdOrderController {
         jdOrderService.outbound(jdOrderDto);
     }
 
+    /**
+     * 京东订单接收
+     */
+    @PostMapping("/receive")
+    public void outbound(@RequestBody StockTransferDto stockTransferDto) {
+        jdOrderService.receive(stockTransferDto);
+    }
+
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderSelectDto.java

@@ -19,4 +19,9 @@ public class JdOrderSelectDto extends BaseSelectDto {
      */
     private Integer status;
 
+    /**
+     * 接收状态
+     */
+    private Integer inStatus;
+
 }

+ 22 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderVo.java

@@ -5,6 +5,7 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -33,4 +34,25 @@ public class JdOrderVo extends JdOrder implements ISetAreaName {
      */
     private List<JdOrderDetailsVo> jdOrderDetailsList;
 
+    /**
+     * 调仓id
+     */
+    private Long stockTransferId;
+    /**
+     * 接收状态
+     */
+    private Integer inStatus;
+    /**
+     * 接收人id
+     */
+    private Long inUserId;
+    /**
+     * 接收人名字
+     */
+    private String inUserName;
+    /**
+     * 接收时间
+     */
+    private Date inTime;
+
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdOrderMapper.java

@@ -23,4 +23,9 @@ public interface JdOrderMapper extends BaseMapper<JdOrder> {
      */
     Page<JdOrderVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<JdOrder> wrapper);
 
+    /**
+     * 京东订单接收分页
+     */
+    Page<JdOrderVo> getReceivePage(@Param("page") Page<Object> page, @Param("ew") IWrapper<JdOrder> wrapper);
+
 }

+ 6 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderService.java

@@ -1,10 +1,12 @@
 package com.fjhx.victoriatourist.service.jd;
 
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.ruoyi.common.core.service.BaseService;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -43,4 +45,8 @@ public interface JdOrderService extends BaseService<JdOrder> {
      * 京东订单出库
      */
     void outbound(JdOrderDto jdOrderDto);
+
+    Page<JdOrderVo> receivePage(JdOrderSelectDto dto);
+
+    void receive(StockTransferDto stockTransferDto);
 }

+ 119 - 7
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.victoriatourist.service.jd.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,6 +11,7 @@ import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.util.excel.util.ExcelUtil;
+import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.jd.bo.JdOrderExcelImportBo;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
@@ -17,28 +19,31 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
 import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
 import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
 import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
+import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
 import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
+import com.fjhx.victoriatourist.utils.CodeEnum;
+import com.fjhx.wms.entity.stock.emums.JournalType;
 import com.fjhx.wms.entity.stock.emums.StockWaitType;
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
-import com.fjhx.wms.service.stock.StockWaitDetailsService;
-import com.fjhx.wms.service.stock.StockWaitService;
+import com.fjhx.wms.entity.stock.po.*;
+import com.fjhx.wms.service.stock.*;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 
@@ -70,6 +75,15 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Autowired
     StockWaitDetailsService stockWaitDetailsService;
 
+    @Autowired
+    AbnormalInfoService abnormalInfoService;
+    @Autowired
+    StockJournalService stockJournalService;
+    @Autowired
+    StockJournalDetailsService stockJournalDetailsService;
+    @Autowired
+    StockService stockService;
+
     @Override
     public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
         IWrapper<JdOrder> wrapper = getWrapper();
@@ -109,7 +123,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         return result;
     }
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @Override
     public void add(JdOrderDto jdOrderDto) {
 
@@ -246,7 +260,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
-    @Transactional(rollbackFor = Exception.class)
+    @DSTransactional
     @Override
     public void outbound(JdOrderDto jdOrderDto) {
         //修改待出库状态
@@ -281,4 +295,102 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         stockTransferDetailsService.saveBatch(stockTransferDetailsList);
     }
 
+    @Override
+    public Page<JdOrderVo> receivePage(JdOrderSelectDto dto) {
+        IWrapper<JdOrder> wrapper = getWrapper();
+        wrapper.eq("st.in_status", dto.getInStatus());
+        Page<JdOrderVo> page = this.baseMapper.getReceivePage(dto.getPage(), wrapper);
+        List<JdOrderVo> records = page.getRecords();
+        // 赋值国省市
+        AreaUtil.setAreaName(records);
+        //赋值接收人名字
+        UserUtil.assignmentNickName(records, JdOrderVo::getInUserId, JdOrderVo::setInUserName);
+        // 赋值客户名称
+        customerService.attributeAssign(records, JdOrderVo::getCustomerId, (item, customer) -> {
+            item.setCustomerName(customer.getName());
+        });
+        return page;
+    }
+
+    @DSTransactional
+    @Override
+    public void receive(StockTransferDto stockTransferDto) {
+        StockTransfer stockTransfer = stockTransferService.getById(stockTransferDto.getId());
+        //明细
+        List<Stock> stockList = new ArrayList<>();
+        List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
+        if(ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
+            stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
+            //获取数据库中的数据
+            List<Long> ids = stockTransferDetailsList.stream().map(StockTransferDetails::getId).collect(Collectors.toList());
+            List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(ids);
+            Map<Long, StockTransferDetails> oldstockTransferDetailsMap = oldstockTransferDetailsList.stream().collect(Collectors.toMap(StockTransferDetails::getId, Function.identity()));
+
+            Integer abnormalFlag = 0;
+            for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
+                Stock stock = new Stock();
+                stock.setProductId(stockTransferDetails.getProductId());
+                stock.setQuantity(stockTransferDetails.getInQuantity());
+                stockList.add(stock);
+
+                //调仓接收数量与发出数量不一致
+                StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
+                if (stockTransferDetails.getInQuantity() != oldstockTransferDetails.getOutQuantity()) {
+                    abnormalFlag =1;
+                    stockTransfer.setInStatus(1);//设置为部分接收
+                }
+            }
+            if(abnormalFlag ==1){
+                AbnormalInfo abnormalInfo = new AbnormalInfo();
+                abnormalInfo.setId(IdWorker.getId());
+                abnormalInfo.setType(30);
+                abnormalInfo.setLinkId(stockTransfer.getId());
+                abnormalInfo.setTitle("调仓接收数量与发出数量不一致");
+                abnormalInfoService.save(abnormalInfo);
+            }
+        }
+        //修改调仓状态
+        stockTransfer.setInStatus(2);//修改为已接收
+        List<StockTransferDetails> stockTransferDetails = stockTransferDetailsService.list(q -> q.eq(StockTransferDetails::getStockTransferId, stockTransfer.getId()));
+        for (StockTransferDetails stockTransferDetail : stockTransferDetails) {
+            if(stockTransferDetail.getOutQuantity().compareTo(stockTransferDetail.getInQuantity())!=0){
+                stockTransfer.setInStatus(1);//部分接收
+                break;
+            }
+        }
+
+        stockTransferService.updateById(stockTransfer);
+        //创建入库记录
+        StockJournal stockJournal = new StockJournal();
+        stockJournal.setOpType(1);
+        stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
+        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal.setWarehouseId(stockTransfer.getOutWarehouseId());
+        stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
+        stockJournal.setBusinessId(stockTransfer.getId());
+        //保存人库记录
+        stockJournalService.save(stockJournal);
+
+        //创建出库记录
+        StockJournal stockJournal1 = new StockJournal();
+        stockJournal1.setOpType(2);
+        stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
+        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
+        stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
+        stockJournal1.setBusinessId(stockTransfer.getId());
+        //保存出库记录
+        stockJournalService.save(stockJournal1);
+        if(ObjectUtil.isNotEmpty(stockList)) {
+            //出库
+            List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
+            //入库
+            List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
+            //保存出入库记录明细
+            stockJournalDetailsService.saveBatch(stockJournalDetailsList);
+            stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
+
+        }
+    }
+
 }

+ 21 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

@@ -22,5 +22,26 @@
         from jd_order jo
             ${ew.customSqlSegment}
     </select>
+    <select id="getReceivePage" resultType="com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo">
+        SELECT
+            jdo.id,
+            jdo.code,
+            jdo.customer_id,
+            jdo.distribution_center,
+            jdo.country_id,
+            jdo.province_id,
+            jdo.city_id,
+            jdo.detailed_address,
+            jdo.contact_person,
+            jdo.contact_number,
+            st.id stockTransferId,
+            st.in_status,
+            st.in_user_id,
+            st.in_time
+        FROM
+            jd_order jdo
+                JOIN stock_transfer st ON st.business_id = jdo.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>