Ver código fonte

Merge remote-tracking branch 'origin/master'

24282 2 anos atrás
pai
commit
18860be2f1

+ 10 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/documents/DocumentsController.java

@@ -9,6 +9,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.sale.service.documents.DocumentsService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.Map;
+
 
 /**
  * <p>
@@ -57,4 +59,12 @@ public class DocumentsController {
         documentsService.delete(dto.getId());
     }
 
+    /**
+     * 生成pdf---商业发票
+     */
+    @GetMapping("/generateInvoicePdf")
+    public Map<String,Object> generateInvoicePdf(@RequestParam("id")Long id) {
+        return documentsService.generateInvoicePdf(id);
+    }
+
 }

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/documents/DocumentsService.java

@@ -49,5 +49,5 @@ public interface DocumentsService extends BaseService<Documents> {
      * 生成PDF
      * @return
      */
-    Map<String,Object> generatePdf(Long id);
+    Map<String,Object> generateInvoicePdf(Long id);
 }

+ 14 - 5
hx-sale/src/main/java/com/fjhx/sale/service/documents/impl/DocumentsServiceImpl.java

@@ -15,6 +15,7 @@ import com.fjhx.sale.entity.documents.po.Documents;
 import com.fjhx.sale.entity.documents.po.DocumentsProduct;
 import com.fjhx.sale.entity.documents.po.DocumentsTransport;
 import com.fjhx.sale.entity.pack.po.PackDetail;
+import com.fjhx.sale.entity.pack.po.PackDetailGoods;
 import com.fjhx.sale.entity.pack.po.PackShipment;
 import com.fjhx.sale.mapper.documents.DocumentsMapper;
 import com.fjhx.sale.service.contract.ContractService;
@@ -22,6 +23,7 @@ import com.fjhx.sale.service.documents.DocumentsProductService;
 import com.fjhx.sale.service.documents.DocumentsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.sale.service.documents.DocumentsTransportService;
+import com.fjhx.sale.service.pack.PackDetailGoodsService;
 import com.fjhx.sale.service.pack.PackDetailService;
 import com.fjhx.sale.service.pack.PackShipmentService;
 import com.obs.services.internal.ServiceException;
@@ -60,6 +62,9 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     private PackDetailService packDetailService;
 
     @Autowired
+    private PackDetailGoodsService packDetailGoodsService;
+
+    @Autowired
     private DocumentsTransportService documentsTransportService;
 
     @Autowired
@@ -144,15 +149,15 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
     }
 
     /**
-     * 生成PDF---商业发票
+     * 生成PDF---商业发票、装箱单
      * @return
      */
     @Override
-    public Map<String, Object> generatePdf(Long id) {
+    public Map<String, Object> generateInvoicePdf(Long id) {
         Map<String,Object> map = new HashMap<>();
         //查询单证
         Documents documents = this.getById(id);
-        if(ObjectUtil.isNotEmpty(documents)){
+        if(ObjectUtil.isEmpty(documents)){
             throw new ServiceException("单证不存在");
         }
         //查询合同
@@ -177,8 +182,12 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         BigDecimal sumNetWeight = BigDecimal.ZERO;
         //总体积
         BigDecimal sumBomVolume = BigDecimal.ZERO;
+        //装箱商品明细
+        List<PackDetailGoods> packDetailGoodsList = new ArrayList<>();
         if(ObjectUtil.isNotEmpty(packShipment)){//查询装箱单
             packDetailList = packDetailService.list(Wrappers.<PackDetail>query().lambda().in(PackDetail::getId, Arrays.asList(packShipment.getPackDetailIds())));
+            List<Long> packDetailIds = packDetailList.stream().map(PackDetail::getId).collect(Collectors.toList());
+            packDetailGoodsList = packDetailGoodsService.list(Wrappers.<PackDetailGoods>query().lambda().in(PackDetailGoods::getPackDetailId,packDetailIds));
             sumRoughWeight = packDetailList.stream().map(PackDetail::getRoughWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
             sumNetWeight = packDetailList.stream().map(PackDetail::getNetWeight).reduce(BigDecimal.ZERO,BigDecimal::add);
             sumBomVolume = packDetailList.stream().map(PackDetail::getBomVolume).reduce(BigDecimal.ZERO,BigDecimal::add);
@@ -193,7 +202,7 @@ public class DocumentsServiceImpl extends ServiceImpl<DocumentsMapper, Documents
         map.put("sumBomVolume",sumBomVolume);//总体积
         map.put("customer",customer);//买方信息
         map.put("corporation",corporation);//卖方信息
-
-        return null;
+        map.put("packDetailGoodsList",packDetailGoodsList);//装箱商品明细
+        return map;
     }
 }

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackDetailServiceImpl.java

@@ -99,7 +99,7 @@ public class PackDetailServiceImpl extends ServiceImpl<PackDetailMapper, PackDet
         }
         this.update(Wrappers.<PackDetail>update().lambda()
                 .set(PackDetail::getShipmentStatus,PackShipmentStatusEnum.STATUS_1.getKey())
-                .set(PackDetail::getShipmentStatus,new Date())
+                .set(PackDetail::getShipmentTime,new Date())
                 .in(PackDetail::getId,ids));
         //添加一条绑定主合同记录
         PackShipment packShipment = new PackShipment();

+ 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>

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/dto/StockWaitDetailsSelectDto.java

@@ -23,4 +23,9 @@ public class StockWaitDetailsSelectDto extends BaseSelectDto {
      */
     private Integer businessType;
 
+    /**
+     * 出库状态关联
+     */
+    private Integer status;
+
 }

+ 1 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitDetailsServiceImpl.java

@@ -54,6 +54,7 @@ public class StockWaitDetailsServiceImpl extends ServiceImpl<StockWaitDetailsMap
             wrapper.and(q->q.like(StockWaitDetails::getQuantity,dto.getKeyword()).or().like(StockWaitDetailsVo::getBusinessCode,dto.getKeyword()));
         }
         wrapper.eq("sw", StockWait::getBusinessType,dto.getBusinessType());
+        wrapper.eq("sw", StockWait::getStatus,dto.getStatus());
         Page<StockWaitDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockWaitDetailsVo> records = page.getRecords();
         // 赋值产品属性