Kaynağa Gözat

采购到货

yzc 1 yıl önce
ebeveyn
işleme
ba2f399ca6
24 değiştirilmiş dosya ile 585 ekleme ve 80 silme
  1. 10 0
      hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java
  2. 0 39
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/arrival/ArrivalDetailMapper.java
  3. 55 0
      hx-sale/src/main/java/com/fjhx/sale/controller/arrival/ArrivalController.java
  4. 20 0
      hx-sale/src/main/java/com/fjhx/sale/controller/arrival/ArrivalDetailController.java
  5. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDetailDto.java
  6. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDetailSelectDto.java
  7. 25 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDto.java
  8. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalSelectDto.java
  9. 38 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/po/Arrival.java
  10. 48 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/po/ArrivalDetail.java
  11. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/vo/ArrivalDetailVo.java
  12. 17 0
      hx-sale/src/main/java/com/fjhx/sale/entity/arrival/vo/ArrivalVo.java
  13. 2 0
      hx-sale/src/main/java/com/fjhx/sale/entity/purchase/po/EhsdPurchaseProduct.java
  14. 0 30
      hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseFlow.java
  15. 17 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/arrival/ArrivalDetailMapper.java
  16. 7 11
      hx-sale/src/main/java/com/fjhx/sale/mapper/arrival/ArrivalMapper.java
  17. 17 0
      hx-sale/src/main/java/com/fjhx/sale/service/arrival/ArrivalDetailService.java
  18. 36 0
      hx-sale/src/main/java/com/fjhx/sale/service/arrival/ArrivalService.java
  19. 21 0
      hx-sale/src/main/java/com/fjhx/sale/service/arrival/impl/ArrivalDetailServiceImpl.java
  20. 156 0
      hx-sale/src/main/java/com/fjhx/sale/service/arrival/impl/ArrivalServiceImpl.java
  21. 7 0
      hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java
  22. 20 0
      hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java
  23. 4 0
      hx-sale/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml
  24. 17 0
      hx-sale/src/main/resources/mapper/arrival/ArrivalMapper.xml

+ 10 - 0
hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java

@@ -75,8 +75,18 @@ public enum CodingRuleEnum {
             getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
             getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
     )),
+
+    /**
+     * 采购到货
+     */
+    ARRIVAL("arrival", "采购到货", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "AR-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
     ;
 
+
     /**
      * 编码规则key
      */

+ 0 - 39
hx-purchase/src/main/java/com/fjhx/purchase/mapper/arrival/ArrivalDetailMapper.java

@@ -1,39 +0,0 @@
-package com.fjhx.purchase.mapper.arrival;
-
-import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.util.List;
-
-
-/**
- * <p>
- * 到货明细单 Mapper 接口
- * </p>
- *
- * @author 
- * @since 2023-04-07
- */
-public interface ArrivalDetailMapper extends BaseMapper<ArrivalDetail> {
-
-    /**
-     * 到货明细单分页
-     */
-    Page<ArrivalDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ArrivalDetail> wrapper);
-
-    /**
-     * 统计到货明细总数
-     * @return
-     */
-    BigDecimal getSumCount(@Param("purchaseDetailId")Long purchaseDetailId,@Param("businessId")Long businessId);
-
-    /**
-     * 获取到货明细
-     */
-    List<ArrivalDetailVo> getArrivalDetail(@Param("ew") IWrapper<ArrivalDetail> wrapper);
-}

+ 55 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/arrival/ArrivalController.java

@@ -0,0 +1,55 @@
+package com.fjhx.sale.controller.arrival;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.arrival.dto.ArrivalDto;
+import com.fjhx.sale.entity.arrival.dto.ArrivalSelectDto;
+import com.fjhx.sale.entity.arrival.vo.ArrivalVo;
+import com.fjhx.sale.service.arrival.ArrivalService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+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;
+
+
+/**
+ * <p>
+ * purchase_到货 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@RestController
+@RequestMapping("/arrival")
+public class ArrivalController {
+
+    @Autowired
+    private ArrivalService arrivalService;
+
+    /**
+     * purchase_到货分页
+     */
+    @PostMapping("/page")
+    public Page<ArrivalVo> page(@RequestBody ArrivalSelectDto dto) {
+        return arrivalService.getPage(dto);
+    }
+
+    /**
+     * purchase_到货明细
+     */
+    @PostMapping("/detail")
+    public ArrivalVo detail(@RequestBody BaseSelectDto dto) {
+        return arrivalService.detail(dto.getId());
+    }
+
+    /**
+     * purchase_到货新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody ArrivalDto arrivalDto) {
+        arrivalService.add(arrivalDto);
+    }
+
+}

+ 20 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/arrival/ArrivalDetailController.java

@@ -0,0 +1,20 @@
+package com.fjhx.sale.controller.arrival;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * purchase_到货明细单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@RestController
+@RequestMapping("/arrivalDetail")
+public class ArrivalDetailController {
+
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.arrival.dto;
+
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * purchase_到货明细单新增编辑入参实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalDetailDto extends ArrivalDetail {
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.arrival.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * purchase_到货明细单列表查询入参实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalDetailSelectDto extends BaseSelectDto {
+
+}

+ 25 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalDto.java

@@ -0,0 +1,25 @@
+package com.fjhx.sale.entity.arrival.dto;
+
+import com.fjhx.sale.entity.arrival.po.Arrival;
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * purchase_到货新增编辑入参实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalDto extends Arrival {
+
+    /**
+     * 到货明细列表
+     */
+    List<ArrivalDetail> arrivalDetailList;
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/dto/ArrivalSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.arrival.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * purchase_到货列表查询入参实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalSelectDto extends BaseSelectDto {
+
+}

+ 38 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/po/Arrival.java

@@ -0,0 +1,38 @@
+package com.fjhx.sale.entity.arrival.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * purchase_到货
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+@TableName("arrival")
+public class Arrival extends BasePo {
+
+    /**
+     * 到货单编码
+     */
+    private String code;
+
+    /**
+     * 采购单ID
+     */
+    private Long purchaseId;
+
+    /**
+     * 到货时间
+     */
+    private Date arrivalTime;
+
+}

+ 48 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/po/ArrivalDetail.java

@@ -0,0 +1,48 @@
+package com.fjhx.sale.entity.arrival.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * purchase_到货明细单
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+@TableName("arrival_detail")
+public class ArrivalDetail extends BasePo {
+
+    /**
+     * 到货主表ID
+     */
+    private Long arrivalId;
+
+    /**
+     * 采购明细ID
+     */
+    private Long purchaseDetailId;
+
+    /**
+     * 物品id
+     */
+    private Long productId;
+
+    /**
+     * 到货数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/vo/ArrivalDetailVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.arrival.vo;
+
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * purchase_到货明细单列表查询返回值实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalDetailVo extends ArrivalDetail {
+
+}

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/arrival/vo/ArrivalVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.entity.arrival.vo;
+
+import com.fjhx.sale.entity.arrival.po.Arrival;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * purchase_到货列表查询返回值实体
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Getter
+@Setter
+public class ArrivalVo extends Arrival {
+
+}

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/po/EhsdPurchaseProduct.java

@@ -104,4 +104,6 @@ public class EhsdPurchaseProduct extends BasePo {
      * 合同来源-超采数量
      */
     private BigDecimal exceedQuantity;
+
+    private BigDecimal arrivalQuantity;
 }

+ 0 - 30
hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseFlow.java

@@ -31,9 +31,6 @@ import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
 import com.fjhx.sale.service.purchase.EhsdPurchaseProjectService;
 import com.fjhx.sale.service.purchase.EhsdPurchaseService;
 import com.fjhx.sale.service.sample.SampleService;
-import com.fjhx.wms.entity.stock.emums.JournalType;
-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.ruoyi.common.annotation.LogicIgnore;
@@ -249,33 +246,6 @@ public class EhsdPurchaseFlow extends FlowDelegate {
 //            }
         }
         productInfoService.editAvailableQuantity(inOutBoList, businessId, ProductAvailableRecordType.PURCHASE_PASS, purchase.getCompanyId());
-
-
-        //采购审批通过 生成待入库数据
-        StockWait stockWait = new StockWait();
-        stockWait.setType(1);
-        stockWait.setBusinessType(JournalType.PURCHASE_IN.getDetailType());
-        stockWait.setBusinessId(purchase.getId());
-        stockWait.setBusinessCode(purchase.getCode());
-        stockWait.setStatus(0);
-        stockWait.setPurchaseId(purchase.getId());
-        stockWaitService.save(stockWait);
-        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-        for (EhsdPurchaseProduct purchaseProduct : purchaseProductList) {
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
-            stockWaitDetails.setStockWaitId(stockWait.getId());
-            stockWaitDetails.setBusinessDetailsId(purchaseProduct.getId());
-            stockWaitDetails.setPurchaseDetailId(purchaseProduct.getId());
-
-            stockWaitDetails.setProductId(purchaseProduct.getProductId());
-            stockWaitDetails.setQuantity(purchaseProduct.getQuantity());
-            stockWaitDetails.setStatus(0);
-
-            stockWaitDetailsList.add(stockWaitDetails);
-        }
-        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
-
-
     }
 
     /**

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/arrival/ArrivalDetailMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.mapper.arrival;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+
+
+/**
+ * <p>
+ * purchase_到货明细单 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+public interface ArrivalDetailMapper extends BaseMapper<ArrivalDetail> {
+
+}

+ 7 - 11
hx-purchase/src/main/java/com/fjhx/purchase/mapper/arrival/ArrivalMapper.java → hx-sale/src/main/java/com/fjhx/sale/mapper/arrival/ArrivalMapper.java

@@ -1,30 +1,26 @@
-package com.fjhx.purchase.mapper.arrival;
+package com.fjhx.sale.mapper.arrival;
 
-import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.purchase.entity.arrival.vo.ArrivalVo;
+import com.fjhx.sale.entity.arrival.po.Arrival;
+import com.fjhx.sale.entity.arrival.vo.ArrivalVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
 
 /**
  * <p>
- * 到货 Mapper 接口
+ * purchase_到货 Mapper 接口
  * </p>
  *
- * @author 
- * @since 2023-04-07
+ * @author
+ * @since 2024-02-01
  */
 public interface ArrivalMapper extends BaseMapper<Arrival> {
 
     /**
-     * 到货分页
+     * purchase_到货分页
      */
     Page<ArrivalVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Arrival> wrapper);
 
-    /**
-     * 根据发货id获取本次发货的到货信息 维多利亚
-     */
-    ArrivalVo arrivalInfo(@Param("deliverGoodsId") Long deliverGoodsId);
 }

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/service/arrival/ArrivalDetailService.java

@@ -0,0 +1,17 @@
+package com.fjhx.sale.service.arrival;
+
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * purchase_到货明细单 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+public interface ArrivalDetailService extends BaseService<ArrivalDetail> {
+
+}

+ 36 - 0
hx-sale/src/main/java/com/fjhx/sale/service/arrival/ArrivalService.java

@@ -0,0 +1,36 @@
+package com.fjhx.sale.service.arrival;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.sale.entity.arrival.dto.ArrivalDto;
+import com.fjhx.sale.entity.arrival.dto.ArrivalSelectDto;
+import com.fjhx.sale.entity.arrival.po.Arrival;
+import com.fjhx.sale.entity.arrival.vo.ArrivalVo;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * purchase_到货 服务类
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+public interface ArrivalService extends BaseService<Arrival> {
+
+    /**
+     * purchase_到货分页
+     */
+    Page<ArrivalVo> getPage(ArrivalSelectDto dto);
+
+    /**
+     * purchase_到货明细
+     */
+    ArrivalVo detail(Long id);
+
+    /**
+     * purchase_到货新增
+     */
+    void add(ArrivalDto arrivalDto);
+
+}

+ 21 - 0
hx-sale/src/main/java/com/fjhx/sale/service/arrival/impl/ArrivalDetailServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.sale.service.arrival.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import com.fjhx.sale.mapper.arrival.ArrivalDetailMapper;
+import com.fjhx.sale.service.arrival.ArrivalDetailService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * purchase_到货明细单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2024-02-01
+ */
+@Service
+public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, ArrivalDetail> implements ArrivalDetailService {
+
+}

+ 156 - 0
hx-sale/src/main/java/com/fjhx/sale/service/arrival/impl/ArrivalServiceImpl.java

@@ -0,0 +1,156 @@
+package com.fjhx.sale.service.arrival.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;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.common.utils.Assert;
+import com.fjhx.sale.entity.arrival.dto.ArrivalDto;
+import com.fjhx.sale.entity.arrival.dto.ArrivalSelectDto;
+import com.fjhx.sale.entity.arrival.po.Arrival;
+import com.fjhx.sale.entity.arrival.po.ArrivalDetail;
+import com.fjhx.sale.entity.arrival.vo.ArrivalVo;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
+import com.fjhx.sale.mapper.arrival.ArrivalMapper;
+import com.fjhx.sale.service.arrival.ArrivalDetailService;
+import com.fjhx.sale.service.arrival.ArrivalService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseService;
+import com.fjhx.wms.entity.stock.emums.JournalType;
+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.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 到货 服务实现类
+ * </p>
+ *
+ * @since 2024-02-01
+ */
+@Service
+public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> implements ArrivalService {
+
+    private final CodingRuleService codingRuleService;
+    private final EhsdPurchaseProductService purchaseProductService;
+    private final EhsdPurchaseService purchaseService;
+    private final ArrivalDetailService arrivalDetailService;
+    private final StockWaitService stockWaitService;
+    private final StockWaitDetailsService stockWaitDetailsService;
+
+    @Autowired
+    public ArrivalServiceImpl(CodingRuleService codingRuleService, EhsdPurchaseService purchaseService, EhsdPurchaseProductService purchaseProductService, ArrivalDetailService arrivalDetailService, StockWaitService stockWaitService, StockWaitDetailsService stockWaitDetailsService) {
+        this.codingRuleService = codingRuleService;
+        this.purchaseService = purchaseService;
+        this.purchaseProductService = purchaseProductService;
+        this.arrivalDetailService = arrivalDetailService;
+        this.stockWaitService = stockWaitService;
+        this.stockWaitDetailsService = stockWaitDetailsService;
+    }
+
+
+    @Override
+    public Page<ArrivalVo> getPage(ArrivalSelectDto dto) {
+        IWrapper<Arrival> wrapper = getWrapper();
+        wrapper.orderByDesc("a", Arrival::getId);
+        return this.baseMapper.getPage(dto.getPage(), wrapper);
+    }
+
+    @Override
+    public ArrivalVo detail(Long id) {
+        Arrival Arrival = this.getById(id);
+        return BeanUtil.toBean(Arrival, ArrivalVo.class);
+    }
+
+    @DSTransactional
+    @Override
+    public void add(ArrivalDto dto) {
+        Assert.notEmpty(dto.getPurchaseId(), "采购id不能为空");
+
+        EhsdPurchase purchase = purchaseService.getById(dto.getPurchaseId());
+        Assert.notEmpty(purchase, "查询不到采购信息");
+
+        //赋值到货编号
+        dto.setCode(codingRuleService.createCode(CodingRuleEnum.ARRIVAL.getKey(), null));
+        this.save(dto);
+
+        List<ArrivalDetail> arrivalDetailList = dto.getArrivalDetailList();
+
+        //过滤数量为空为0的数据
+        arrivalDetailList = arrivalDetailList.stream()
+                .filter(item -> ObjectUtil.isNotEmpty(item.getQuantity()) && item.getQuantity().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
+
+        if (ObjectUtil.isEmpty(arrivalDetailList)) {
+            throw new ServiceException("到货列表不能为空");
+        }
+
+        //生成待入库数据
+        StockWait stockWait = new StockWait();
+        stockWait.setType(1);
+        stockWait.setBusinessType(JournalType.PURCHASE_IN.getDetailType());
+        stockWait.setBusinessId(purchase.getId());
+        stockWait.setBusinessCode(purchase.getCode());
+        stockWait.setStatus(0);
+        stockWait.setPurchaseId(purchase.getId());
+        stockWaitService.save(stockWait);
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+
+        List<Long> pdIds = arrivalDetailList.stream().map(ArrivalDetail::getPurchaseDetailId).collect(Collectors.toList());
+        Map<Long, EhsdPurchaseProduct> pdMap = purchaseProductService.mapKEntity(EhsdPurchaseProduct::getId, q -> q.in(EhsdPurchaseProduct::getId, pdIds));
+        for (ArrivalDetail arrivalDetail : arrivalDetailList) {
+            arrivalDetail.setId(IdWorker.getId());
+            arrivalDetail.setArrivalId(dto.getId());
+            EhsdPurchaseProduct ehsdPurchaseProduct = pdMap.get(arrivalDetail.getPurchaseDetailId());
+            arrivalDetail.setProductId(ehsdPurchaseProduct.getProductId());
+
+            //更新到货数量
+            purchaseProductService.update(q -> q
+                    .eq(EhsdPurchaseProduct::getId, ehsdPurchaseProduct.getId())
+                    .setSql("arrival_quantity = arrival_quantity + " + arrivalDetail.getQuantity())
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+
+            //生成待入库明细
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setBusinessDetailsId(arrivalDetail.getId());
+            stockWaitDetails.setPurchaseDetailId(arrivalDetail.getPurchaseDetailId());
+
+            stockWaitDetails.setProductId(arrivalDetail.getProductId());
+            stockWaitDetails.setQuantity(arrivalDetail.getQuantity());
+            stockWaitDetails.setStatus(0);
+
+            stockWaitDetailsList.add(stockWaitDetails);
+        }
+        arrivalDetailService.saveBatch(arrivalDetailList);
+
+        //保存待入库明细
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
+
+        //更新到货状态
+        purchaseService.updateArrivalStatus(dto.getPurchaseId());
+
+    }
+
+}

+ 7 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java

@@ -72,4 +72,11 @@ public interface EhsdPurchaseService extends BaseService<EhsdPurchase> {
     Map<Long, Map<String, Object>> getProductPriceInfo(EhsdPurchaseDto dto);
 
     List<EhsdPurchase> getNoInvoiceListBySupplyId(String supplyId);
+
+    /**
+     * 更新到货状态
+     *
+     * @param id
+     */
+    void updateArrivalStatus(Long id);
 }

+ 20 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -714,4 +714,24 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         return list;
     }
 
+    @Override
+    public void updateArrivalStatus(Long id) {
+        int status;//默认已到货
+        long count = purchaseProductService.count(q -> q
+                .eq(EhsdPurchaseProduct::getPurchaseId, id)
+                .apply("arrival_quantity < quantity")
+        );
+        if (count > 0) {
+            status = 1;//部分到货
+        } else {
+            status = 2;//已到货
+        }
+        this.update(q -> q
+                .eq(EhsdPurchase::getId, id)
+                .set(EhsdPurchase::getArrivalStatus, status)
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+    }
+
 }

+ 4 - 0
hx-sale/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml

@@ -0,0 +1,4 @@
+<?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.sale.mapper.arrival.ArrivalDetailMapper">
+</mapper>

+ 17 - 0
hx-sale/src/main/resources/mapper/arrival/ArrivalMapper.xml

@@ -0,0 +1,17 @@
+<?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.sale.mapper.arrival.ArrivalMapper">
+    <select id="getPage" resultType="com.fjhx.sale.entity.arrival.vo.ArrivalVo">
+        select a.id,
+               a.code,
+               a.purchase_id,
+               a.arrival_time,
+               a.create_user,
+               a.create_time,
+               a.update_user,
+               a.update_time
+        from arrival a
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>