Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

24282 2 ani în urmă
părinte
comite
0ced19b51b
57 a modificat fișierele cu 1071 adăugiri și 42 ștergeri
  1. 5 0
      hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java
  2. 84 1
      hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java
  3. 1 1
      hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java
  4. 8 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java
  5. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/vo/ArrivalDetailVo.java
  6. 3 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java
  7. 36 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  8. 12 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java
  9. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java
  10. 6 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java
  11. 7 1
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SalesReturnFlow.java
  12. 8 1
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java
  13. 7 1
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlowByWdly.java
  14. 6 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/arrival/ArrivalDetailMapper.java
  15. 3 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/ArrivalDetailService.java
  16. 5 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalDetailServiceImpl.java
  17. 28 5
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java
  18. 29 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java
  19. 8 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityServiceImpl.java
  20. 8 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java
  21. 5 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java
  22. 40 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java
  23. 9 0
      hx-purchase/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml
  24. 5 0
      hx-sale/src/main/java/com/fjhx/sale/entity/purchase/po/EhsdPurchaseProductMountings.java
  25. 10 6
      hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseFlow.java
  26. 7 1
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlow.java
  27. 6 2
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java
  28. 8 1
      hx-sale/src/main/java/com/fjhx/sale/flow/SaleQuotationFlow.java
  29. 7 1
      hx-sale/src/main/java/com/fjhx/sale/flow/SampleFlow.java
  30. 9 1
      hx-sale/src/main/java/com/fjhx/sale/flow/ServiceContractFlow.java
  31. 16 8
      hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java
  32. 7 1
      hx-sale/src/main/java/com/fjhx/sale/service/pack/impl/PackServiceImpl.java
  33. 1 1
      hx-sale/src/main/java/com/fjhx/sale/util/code/CodeEnum.java
  34. 6 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/deliver/DeliverGoodsController.java
  35. 52 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/purchase/PurchaseBackController.java
  36. 19 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/purchase/PurchaseBackDetailsController.java
  37. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/deliver/vo/DeliverGoodsDetailsVo.java
  38. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDetailsDto.java
  39. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDetailsSelectDto.java
  40. 25 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDto.java
  41. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackSelectDto.java
  42. 57 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/po/PurchaseBack.java
  43. 45 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/po/PurchaseBackDetails.java
  44. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/vo/PurchaseBackDetailsVo.java
  45. 23 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/vo/PurchaseBackVo.java
  46. 3 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/deliver/DeliverGoodsMapper.java
  47. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/purchase/PurchaseBackDetailsMapper.java
  48. 26 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/purchase/PurchaseBackMapper.java
  49. 7 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/DeliverGoodsService.java
  50. 135 6
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java
  51. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/PurchaseBackDetailsService.java
  52. 36 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/PurchaseBackService.java
  53. 21 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackDetailsServiceImpl.java
  54. 63 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackServiceImpl.java
  55. 16 0
      hx-victoriatourist/src/main/resources/mapper/deliver/DeliverGoodsMapper.xml
  56. 4 0
      hx-victoriatourist/src/main/resources/mapper/purchase/PurchaseBackDetailsMapper.xml
  57. 22 0
      hx-victoriatourist/src/main/resources/mapper/purchase/PurchaseBackMapper.xml

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/po/AccountRunningWater.java

@@ -43,6 +43,11 @@ public class AccountRunningWater extends BasePo {
     private BigDecimal amount;
 
     /**
+     * 已认领总金额
+     */
+    private BigDecimal claimAmount;
+
+    /**
      * 币种(字典account_currency)
      */
     @NotBlank(message = "币种不能为null")

+ 84 - 1
hx-common/src/main/java/com/fjhx/common/enums/CodingRuleEnum.java

@@ -31,10 +31,93 @@ public enum CodingRuleEnum {
      */
     CONTRACT("contract", "外销合同", Arrays.asList(
             getDefaultRule(RuleTypeEnum.CUSTOMIZE, "SC-"),
-            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 样品单
+     */
+    SAMPLE("sample", "样品单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "YP-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * EHSD采购编码
+     */
+    EHSD_PURCHASE("ehsd_purchase", "EHSD采购单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "PO-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 报价单
+     */
+    SALE_QUOTATION("sale_quotation", "报价单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "GSQT-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 包装
+     */
+    PACK("pack", "包装", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "PACK-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 采购编码
+     */
+    PURCHASE("purchase", "采购单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "SC-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
             getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
     )),
 
+    /**
+     * 服务合同
+     */
+    SERVICE_CONTRACT("service_contract", "服务合同", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "PO-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+
+    //---------------------------采购模块-----------------------------
+
+    /**
+     * 申购单
+     */
+    SUBSCRIBE("subscribe", "申购单", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "PR-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 到货
+     */
+    ARRIVAL("arrival", "到货", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "PA-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 质检
+     */
+    QUALITY("quality", "质检", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "ZJ-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
+    /**
+     * 退货
+     */
+    SALES_RETURN("sales_return", "退货", Arrays.asList(
+            getDefaultRule(RuleTypeEnum.CUSTOMIZE, "TH-"),
+            getDefaultRule(RuleTypeEnum.DATE_FORMAT, "yyyyMM-"),
+            getDefaultRule(RuleTypeEnum.AUTOINCREMENT, "3")
+    )),
     ;
 
     /**

+ 1 - 1
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderServiceImpl.java

@@ -145,7 +145,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder
             throw new ServiceException("查询不到产品信息 产品id->" + workOrderDto.getProductId());
         }
         //搜索BOM明细并到冻结库存
-        BomInfo bomInfo = bomInfoService.getOne(q -> q.eq(BomInfo::getProductId, workOrderDto.getProductId()));
+        BomInfo bomInfo = bomInfoService.getOne(q -> q.eq(BomInfo::getProductId, workOrderDto.getProductId()).eq(BomInfo::getCurrentVersion,1));
         if (ObjectUtil.isEmpty(bomInfo)) {
             throw new ServiceException("查询不到产品的BOM信息 产品名称->" + productInfo.getName());
         }

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/subscribe/SubscribeController.java

@@ -3,6 +3,7 @@ package com.fjhx.purchase.controller.subscribe;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
@@ -12,6 +13,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -77,4 +80,9 @@ public class SubscribeController {
         subscribeService.delete(dto.getId());
     }
 
+    @GetMapping("/getDepts")
+    public List<SysDept> getDepts() {
+        return subscribeService.getDepts();
+    }
+
 }

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/vo/ArrivalDetailVo.java

@@ -80,4 +80,9 @@ public class ArrivalDetailVo extends ArrivalDetail {
      * 质检总数
      */
     private BigDecimal sumQualityCount;
+
+    /**
+     * 发货物流单号
+     */
+    private String logisticsCode;
 }

+ 3 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/po/PurchaseDetail.java

@@ -119,4 +119,7 @@ public class PurchaseDetail extends BasePo {
     @TableField(exist = false)
     private BigDecimal sumArrivalCount;
 
+    @TableField(exist = false)
+    private String productCustomCode;
+
 }

+ 36 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java

@@ -1,10 +1,14 @@
 package com.fjhx.purchase.entity.purchase.vo;
 
+import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
+import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 申购单列表查询返回值实体
@@ -49,5 +53,37 @@ public class PurchaseDetailVo extends PurchaseDetail {
      * 产品定义
      */
     private Integer productDefinition;
+    /**
+     * 产品自定义编号
+     */
+    private String productCustomCode;
+
+    private List<QualityDetail> qualityDetailsList;
+
+    /**
+     * 发货数量
+     */
+    private BigDecimal arrivalQuantity;
+
+    /**
+     * 发货记录列表
+     */
+    private Object deliverGoodsDetailList;
+    /**
+     * 到货记录列表
+     */
+    private List<ArrivalDetailVo> arrivalDetailList;
+    /**
+     * 采购退货数量
+     */
+    private BigDecimal purchaseBackQuantity;
+    /**
+     * 采购退货列表
+     */
+    private Object purchaseBackDetailsList;
 
+    /**
+     * 质检数量
+     */
+    private BigDecimal qualityQuantity;
 }

+ 12 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseVo.java

@@ -4,6 +4,8 @@ import com.fjhx.purchase.entity.purchase.po.Purchase;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 采购列表查询返回值实体
  *
@@ -20,4 +22,14 @@ public class PurchaseVo extends Purchase {
      * 到货状态
      */
     private Integer arrivalStatus;
+
+    /**
+     * 采购明细列表
+     */
+    private List<PurchaseDetailVo> purchaseDetailVoList;
+
+    /**
+     * 申购编号
+     */
+    private String subscribeCode;
 }

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/dto/SubscribeDetailSelectDto.java

@@ -48,4 +48,9 @@ public class SubscribeDetailSelectDto extends BaseSelectDto {
      */
     private Long deptId;
 
+    /**
+     * 不显示指定状态
+     */
+    private String neStatus;
+
 }

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java

@@ -97,4 +97,10 @@ public class SubscribeDetail extends BasePo {
      */
     @TableField(exist = false)
     private Long deptId;
+
+    /**
+     * 产品定义
+     */
+    @TableField(exist = false)
+    private Integer productDefinition;
 }

+ 7 - 1
hx-purchase/src/main/java/com/fjhx/purchase/flow/SalesReturnFlow.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.sales.enums.SalesReturnDetailStatusEnum;
 import com.fjhx.purchase.entity.sales.enums.SalesReturnStatusEnum;
@@ -41,6 +43,9 @@ public class SalesReturnFlow extends FlowDelegate {
     @Autowired
     StockWaitDetailsService stockWaitDetailsService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public String getFlowKey() {
         return "sales_return_flow";
@@ -59,7 +64,8 @@ public class SalesReturnFlow extends FlowDelegate {
         SalesReturnService salesReturnService = SpringUtil.getBean(SalesReturnService.class);
         SalesReturnDetailService salesReturnDetailService = SpringUtil.getBean(SalesReturnDetailService.class);
         SalesReturn salesReturn = submitData.toJavaObject(SalesReturn.class);
-        salesReturn.setCode(CodeEnum.SALES_RETURN.getCode());
+//        salesReturn.setCode(CodeEnum.SALES_RETURN.getCode());
+        salesReturn.setCode(codingRuleService.createCode(CodingRuleEnum.SALES_RETURN.getKey(),null));
         salesReturnService.save(salesReturn);
         List<SalesReturnDetail> salesReturnDetailList = salesReturn.getSalesReturnDetailList();
         if (CollectionUtils.isNotEmpty(salesReturnDetailList)) {

+ 8 - 1
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
@@ -16,6 +18,7 @@ import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -29,6 +32,9 @@ import java.util.List;
 @Component
 public class SubscribeFlow extends FlowDelegate {
 
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public String getFlowKey() {
         return "subscribe_flow";
@@ -46,7 +52,8 @@ public class SubscribeFlow extends FlowDelegate {
         SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
         SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
         Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
-        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+//        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(),null));
         subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
         subscribe.setFlowId(flowId);
         subscribeService.save(subscribe);

+ 7 - 1
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlowByWdly.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeStatusEnum;
@@ -31,6 +33,9 @@ import java.util.List;
 public class SubscribeFlowByWdly extends FlowDelegate {
 
     @Autowired
+    private CodingRuleService codingRuleService;
+
+    @Autowired
     private SubscribeFlow subscribeFlow;
 
     @Override
@@ -50,7 +55,8 @@ public class SubscribeFlowByWdly extends FlowDelegate {
         SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
         SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
         Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
-        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+//        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(),null));
         subscribe.setProcessInstanceId("wdly_apply_purchase");
         subscribe.setFlowId(flowId);
         subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());

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

@@ -8,6 +8,7 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 
 /**
@@ -30,4 +31,9 @@ public interface ArrivalDetailMapper extends BaseMapper<ArrivalDetail> {
      * @return
      */
     BigDecimal getSumCount(@Param("purchaseDetailId")Long purchaseDetailId,@Param("businessId")Long businessId);
+
+    /**
+     * 获取到货明细
+     */
+    List<ArrivalDetailVo> getArrivalDetail(@Param("ew") IWrapper<ArrivalDetail> wrapper);
 }

+ 3 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/ArrivalDetailService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
 import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailSelectDto;
 import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -49,8 +50,10 @@ public interface ArrivalDetailService extends BaseService<ArrivalDetail> {
 
     /**
      * 统计到货明细总数
+     *
      * @return
      */
     BigDecimal getSumCount(Long purchaseDetailId, Long businessId);
 
+    List<ArrivalDetailVo> getArrivalDetail(IWrapper<ArrivalDetail> wrapper1);
 }

+ 5 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalDetailServiceImpl.java

@@ -160,4 +160,9 @@ public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, A
         return baseMapper.getSumCount(purchaseDetailId,businessId);
     }
 
+    @Override
+    public List<ArrivalDetailVo> getArrivalDetail(IWrapper<ArrivalDetail> wrapper1) {
+        return baseMapper.getArrivalDetail(wrapper1);
+    }
+
 }

+ 28 - 5
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -10,6 +10,9 @@ 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.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.kd100.entity.company.po.CompanyInfo;
 import com.fjhx.kd100.service.company.CompanyInfoService;
 import com.fjhx.purchase.entity.arrival.dto.ArrivalDto;
@@ -21,6 +24,8 @@ import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.arrival.ArrivalMapper;
@@ -32,9 +37,12 @@ import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
+import com.fjhx.supply.entity.supplier.po.SupplierInfo;
+import com.fjhx.supply.service.supplier.SupplierInfoService;
 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.entity.stock.vo.StockVo;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.obs.services.internal.ServiceException;
@@ -75,14 +83,25 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
 
     @Autowired
     private WdlyService wdlyService;
+
     @Autowired
-    SubscribeDetailService subscribeDetailService;
+    private SubscribeDetailService subscribeDetailService;
+
     @Autowired
-    SubscribeService subscribeService;
+    private SubscribeService subscribeService;
+
     @Autowired
-    PurchaseDetailService purchaseDetailService;
+    private PurchaseDetailService purchaseDetailService;
+
     @Autowired
     private CompanyInfoService companyInfoService;
+    @Autowired
+    private SupplierInfoService supplierInfoService;
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Autowired
+    private CodingRuleService codingRuleService;
 
     @Override
     public Page<ArrivalVo> getPage(ArrivalSelectDto dto) {
@@ -107,7 +126,8 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
     @DSTransactional
     @Override
     public void add(Arrival arrival) {
-        arrival.setCode(CodeEnum.ARRIVAL.getCode());
+        arrival.setCode(codingRuleService.createCode(CodingRuleEnum.ARRIVAL.getKey(),null));
+//        arrival.setCode(CodeEnum.ARRIVAL.getCode());
         this.save(arrival);
         //修改采购状态
         Purchase purchase = new Purchase();
@@ -155,7 +175,8 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
     @DSTransactional
     @Override
     public void addByWdly(Arrival arrival) {
-        arrival.setCode(CodeEnum.ARRIVAL.getCode());
+        arrival.setCode(codingRuleService.createCode(CodingRuleEnum.ARRIVAL.getKey(),null));
+//        arrival.setCode(CodeEnum.ARRIVAL.getCode());
         arrival.setStatus(1);//设置到货
         this.save(arrival);
 
@@ -308,4 +329,6 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
         this.removeById(id);
     }
 
+
+
 }

+ 29 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseServiceImpl.java

@@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
@@ -28,6 +30,8 @@ import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDocumentaryVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.purchase.PurchaseMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.arrival.ArrivalService;
@@ -35,6 +39,8 @@ import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
@@ -89,10 +95,20 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
 
     @Autowired
     private CustomerService customerService;
+
     @Autowired
     WarehouseService warehouseService;
+
     @Autowired
     ArrivalService arrivalService;
+    @Autowired
+    SubscribeDetailService subscribeDetailService;
+    @Autowired
+    SubscribeService subscribeService;
+
+
+    @Autowired
+    private CodingRuleService codingRuleService;
 
     /**
      * 列表
@@ -233,6 +249,16 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
                 list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId, id));
         //查询出产品
         if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
+            //赋值申购编号
+            PurchaseDetail purchaseDetail = purchaseDetailList.get(0);
+            SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
+            if(ObjectUtils.isNotEmpty(subscribeDetail)) {
+                Subscribe subscribe = subscribeService.getById(subscribeDetail.getSubscribeId());
+                if(ObjectUtils.isNotEmpty(subscribe)) {
+                    result.setSubscribeCode(subscribe.getCode());
+                }
+            }
+
             List<Long> productIds = purchaseDetailList.stream().map(PurchaseDetail::getBussinessId).collect(Collectors.toList());
             List<ProductInfoVo> productInfos = productInfoService.getListByProductIds(productIds);
             Map<Long, List<ProductInfoVo>> productMap = productInfos.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
@@ -249,6 +275,7 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
                     p.setProductCategory(vo.getClassifyName());
                     p.setProductUnit(vo.getUnit());
                     p.setProductSpec(vo.getSpec());
+                    p.setProductCustomCode(vo.getCustomCode());
                 }
             }
         }
@@ -265,7 +292,8 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase>
     public void add(Purchase purchase) {
         PurchaseService purchaseService = SpringUtil.getBean(PurchaseService.class);
         PurchaseDetailService purchaseDetailService = SpringUtil.getBean(PurchaseDetailService.class);
-        purchase.setCode(CodeEnum.PURCHASE.getCode());
+//        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(),null));
         purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchaseService.save(purchase);
         if (CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())) {

+ 8 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityServiceImpl.java

@@ -3,6 +3,8 @@ package com.fjhx.purchase.service.quality.impl;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.purchase.entity.arrival.enums.ArrivalDetailStatusEnum;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.quality.po.Quality;
@@ -47,6 +49,10 @@ public class QualityServiceImpl extends ServiceImpl<QualityMapper, Quality> impl
     @Autowired
     private ArrivalDetailService arrivalDetailService;
 
+
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public Page<QualityVo> getPage(QualitySelectDto dto) {
         IWrapper<Quality> wrapper = getWrapper();
@@ -69,7 +75,8 @@ public class QualityServiceImpl extends ServiceImpl<QualityMapper, Quality> impl
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void add(Quality quality) {
-        quality.setCode(CodeEnum.QUALITY.getCode());
+//        quality.setCode(CodeEnum.QUALITY.getCode());
+        quality.setCode(codingRuleService.createCode(CodingRuleEnum.QUALITY.getKey(),null));
         this.save(quality);
         List<QualityDetail> qualityDetailList = quality.getQualityDetailList();
         if(CollectionUtils.isNotEmpty(qualityDetailList)){

+ 8 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/SubscribeService.java

@@ -1,12 +1,15 @@
 package com.fjhx.purchase.service.subscribe;
 
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -47,4 +50,9 @@ public interface SubscribeService extends BaseService<Subscribe> {
      */
     void delete(Long id);
 
+    /**
+     * 获取待采购所有产品的部门列表
+     * @return
+     */
+    List<SysDept> getDepts();
 }

+ 5 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -79,6 +79,10 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
         // 维多利亚扩展根据到货仓库id过滤
         wrapper.eq("json_unquote(t2.victoriatourist_json -> '$.receiptWarehouseId')", dto.getReceiptWarehouseId());
         wrapper.eq("json_unquote(pi.victoriatourist_json -> '$.deptId')", dto.getDeptId());
+        //待采购过滤掉指定状态 例如不要 99 作废
+        wrapper.notIn("t1", SubscribeDetail::getStatus, dto.getNeStatus().split(","));
+
+
         wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
 
         Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
@@ -166,7 +170,7 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
             List<Long> productIds = list.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
             List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
             Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
-            for (SubscribeDetailVo  s: list) {
+            for (SubscribeDetailVo s : list) {
                 if (MapUtils.isNotEmpty(productMap)) {
                     ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
                     s.setProductCategory(p.getClassifyName());

+ 40 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeServiceImpl.java

@@ -4,12 +4,16 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
@@ -24,11 +28,14 @@ import com.fjhx.purchase.util.code.CodeEnum;
 import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.service.ISysDeptService;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -54,6 +61,12 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
 
     @Autowired
     WarehouseService warehouseService;
+    @Autowired
+    ISysDeptService deptService;
+
+    @Autowired
+    private CodingRuleService codingRuleService;
+
 
     @Override
     public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
@@ -95,6 +108,7 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
                     s.setProductUnit(p.getUnit());
                     s.setProductType(p.getType());
                     s.setProductName(p.getName());
+                    s.setProductDefinition(p.getDefinition());
                 }
             }
         }
@@ -124,7 +138,8 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
     public void add(Subscribe subscribe) {
         SubscribeService subscribeService = SpringUtil.getBean(SubscribeService.class);
         SubscribeDetailService subscribeDetailService = SpringUtil.getBean(SubscribeDetailService.class);
-        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+//        subscribe.setCode(CodeEnum.SUBSCRIBE.getCode());
+        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(),null));
         subscribeService.save(subscribe);
         List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
         if (CollectionUtils.isNotEmpty(SubscribeDetails)) {
@@ -151,4 +166,28 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
         this.removeById(id);
     }
 
+    @Override
+    public List<SysDept> getDepts() {
+        List<Long> deptIds = new ArrayList<>();
+        List<SubscribeDetail> list = subscribeDetailService.list();
+        if(ObjectUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        List<Long> ids = list.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
+        List<ProductInfo> list1 = productInfoService.listByIds(ids);
+        for (ProductInfo productInfo : list1) {
+            String victoriatouristJson = productInfo.getVictoriatouristJson();
+            JSONObject json = ObjectUtils.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+            Long deptId = json.getLong("deptId");
+            deptIds.add(deptId);
+        }
+        if(ObjectUtils.isEmpty(deptIds)){
+            return new ArrayList<>();
+        }
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<SysDept> sysDepts = deptService.listByIds(deptIds);
+        DynamicDataSourceContextHolder.poll();
+        return sysDepts;
+    }
+
 }

+ 9 - 0
hx-purchase/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml

@@ -24,4 +24,13 @@
             purchase_detail_id = #{purchaseDetailId}
           AND bussiness_id = #{businessId}
     </select>
+    <select id="getArrivalDetail" resultType="com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo">
+        SELECT
+            a.purchase_id,
+            ad.*
+        FROM
+            arrival a
+                JOIN arrival_detail ad ON ad.arrival_id = a.id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/po/EhsdPurchaseProductMountings.java

@@ -56,6 +56,11 @@ public class EhsdPurchaseProductMountings extends BasePo {
     private BigDecimal amount;
 
     /**
+     * 产品类型
+     */
+    private String productType;
+
+    /**
      * 备注
      */
     private String remark;

+ 10 - 6
hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseFlow.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.po.*;
 import com.fjhx.sale.service.purchase.*;
@@ -62,6 +64,8 @@ public class EhsdPurchaseFlow extends FlowDelegate {
     @Autowired
     private SampleProductService sampleProductService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
 
     @Override
     public String getFlowKey() {
@@ -83,8 +87,8 @@ public class EhsdPurchaseFlow extends FlowDelegate {
         purchase.setSellCityId(purchase.getCityId());
         purchase.setSellCountryId(purchase.getCountryId());
         purchase.setSellProvinceId(purchase.getProvinceId());
-
-        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setCode(codingRuleService.createCode(CodingRuleEnum.EHSD_PURCHASE.getKey(),null));
+//        purchase.setCode(CodeEnum.PURCHASE.getCode());
         purchase.setStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchase.setUserName(SecurityUtils.getUsername());
         purchaseService.save(purchase);
@@ -145,8 +149,8 @@ public class EhsdPurchaseFlow extends FlowDelegate {
                     p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_1.getKey()){//如果采购的是外销合同
                 ContractProduct contractProduct = contractProductService.getById(p.getDataResourceId());
                 BigDecimal expendQuantity = contractProduct.getExpendQuantity().subtract(p.getQuantity());
-                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
-                    throw new ServiceException("采购数量不得大于合同剩余采购数量");
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 0){//小于0不让继续执行
+                    throw new ServiceException("采购数量不得大于合同剩余采购数量,请驳回审批修改");
                 }
                 contractProduct.setExpendQuantity(expendQuantity);
                 upContractProduct.add(contractProduct);
@@ -155,8 +159,8 @@ public class EhsdPurchaseFlow extends FlowDelegate {
                     p.getDataResource()== PurchaseDataResourceEnum.DATA_RESOURCE_2.getKey()){//如果采购的是样品单
                 SampleProduct sampleProduct = sampleProductService.getById(p.getDataResourceId());
                 BigDecimal expendQuantity = sampleProduct.getExpendQuantity().subtract(p.getQuantity());
-                if(expendQuantity.compareTo(BigDecimal.ZERO)< 1){//小于0不让继续执行
-                    throw new ServiceException("采购数量不得大于合同剩余采购数量");
+                if(expendQuantity.compareTo(BigDecimal.ZERO)< 0){//小于0不让继续执行
+                    throw new ServiceException("采购数量不得大于合同剩余采购数量,请驳回审批修改");
                 }
                 sampleProduct.setExpendQuantity(expendQuantity);
                 upSampleProduct.add(sampleProduct);

+ 7 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlow.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
@@ -51,6 +53,9 @@ public class PurchaseFlow extends FlowDelegate {
     @Autowired
     private ContractProductService contractProductService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public String getFlowKey() {
         return "purchase_flow";
@@ -66,7 +71,8 @@ public class PurchaseFlow extends FlowDelegate {
     public Long start(Long flowId, JSONObject submitData) {
         DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
         Purchase purchase = submitData.toJavaObject(Purchase.class);
-        purchase.setCode(CodeEnum.PURCHASE.getCode());
+//        purchase.setCode(CodeEnum.PURCHASE.getCode());
+        purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(),null));
         purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchase.setFlowId(flowId);
         purchaseService.save(purchase);

+ 6 - 2
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlowByWdly.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
@@ -54,7 +56,8 @@ public class PurchaseFlowByWdly extends FlowDelegate {
     private SubscribeDetailService subscribeDetailService;
     @Autowired
     private ContractProductService contractProductService;
-
+    @Autowired
+    private CodingRuleService codingRuleService;
     @Override
     public String getFlowKey() {
         return "wdly_purchase";
@@ -72,7 +75,8 @@ public class PurchaseFlowByWdly extends FlowDelegate {
         DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
         try {
             Purchase purchase = submitData.toJavaObject(Purchase.class);
-            purchase.setCode(CodeEnum.PURCHASE.getCode());
+//            purchase.setCode(CodeEnum.PURCHASE.getCode());
+            purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(),null));
             purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
             purchase.setProcessInstanceId("wdly_purchase");
             purchase.setFlowId(flowId);

+ 8 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/SaleQuotationFlow.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.sale.entity.quotation.po.QuotationPay;
 import com.fjhx.sale.entity.quotation.po.QuotationProduct;
@@ -18,6 +20,7 @@ import com.fjhx.sale.service.quotation.QuotationProductService;
 import com.fjhx.sale.service.sale.SaleQuotationService;
 import com.fjhx.sale.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -28,6 +31,9 @@ import java.util.List;
 @DS(SourceConstant.SALE)
 @Component
 public class SaleQuotationFlow extends FlowDelegate {
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public String getFlowKey() {
         return "sale_quotation_flow";
@@ -51,7 +57,8 @@ public class SaleQuotationFlow extends FlowDelegate {
         saleQuotation.setBuyCountryId(saleQuotation.getCountryId());
         saleQuotation.setBuyProvinceId(saleQuotation.getProvinceId());
         //添加报价编码
-        saleQuotation.setCode(CodeEnum.SALE_QUOTATION.getCode());
+        saleQuotation.setCode(codingRuleService.createCode(CodingRuleEnum.SALE_QUOTATION.getKey(),saleQuotation.getBuyCorporationId()));
+//        saleQuotation.setCode(CodeEnum.SALE_QUOTATION.getCode());
         //添加报价状态
         saleQuotation.setStatus(SaleQuotationEnum.UNDER_REVIEW.getKey());
         //添加报价单信息

+ 7 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/SampleFlow.java

@@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 import com.fjhx.sale.entity.sample.po.Sample;
@@ -26,6 +28,7 @@ import com.fjhx.sale.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -40,6 +43,8 @@ import java.util.List;
 @DS(SourceConstant.SALE)
 public class SampleFlow extends FlowDelegate {
 
+    @Autowired
+    private CodingRuleService codingRuleService;
 
     @Override
     public String getFlowKey() {
@@ -69,7 +74,8 @@ public class SampleFlow extends FlowDelegate {
         sample.setBuyCityId(sample.getCityId());
         sample.setBuyCountryId(sample.getCountryId());
         sample.setBuyProvinceId(sample.getProvinceId());
-        sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
+//        sample.setCode(CodeEnum.SAMPLE_CODE.getCode());
+        sample.setCode(codingRuleService.createCode(CodingRuleEnum.SAMPLE.getKey(),sample.getBuyCorporationId()));
         sample.setStatus(FlowStatusEnum.UNDER_REVIEW.getKey());
         sample.setUserName(SecurityUtils.getUsername());
 

+ 9 - 1
hx-sale/src/main/java/com/fjhx/sale/flow/ServiceContractFlow.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.sale.entity.serviceContract.dto.ServiceContractDto;
 import com.fjhx.sale.entity.serviceContract.po.ServiceContract;
@@ -19,6 +21,7 @@ import com.fjhx.sale.service.serviceContract.ServiceContractProductService;
 import com.fjhx.sale.service.serviceContract.ServiceContractService;
 import com.fjhx.sale.util.code.CodeEnum;
 import com.obs.services.internal.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -29,6 +32,10 @@ import java.util.List;
 @DS(SourceConstant.SALE)
 @Component
 public class ServiceContractFlow extends FlowDelegate {
+
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public String getFlowKey() {
         return "service_contract_flow";
@@ -57,7 +64,8 @@ public class ServiceContractFlow extends FlowDelegate {
         contract.setBuyProvinceId(contract.getProvinceId());
 
         //添加服务合同编码
-        contract.setCode(CodeEnum.SALE_QUOTATION.getCode());
+        contract.setCode(codingRuleService.createCode(CodingRuleEnum.SERVICE_CONTRACT.getKey(),contract.getBuyCorporationId()));
+//        contract.setCode(CodeEnum.SALE_QUOTATION.getCode());
         //添加服务合同状态
         contract.setStatus(ServiceContractEnum.UNDER_REVIEW.getKey());
         //添加服务合同信息

+ 16 - 8
hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimServiceImpl.java

@@ -65,10 +65,17 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
      */
     @Override
     @DSTransactional
-    public void add(Claim claim) {
-        Claim data = this.getOne(Wrappers.<Claim>query().lambda().eq(Claim::getBusinessId,claim.getBusinessId()));
-        if(ObjectUtils.isNotEmpty(data)){
-            throw new ServiceException("当前这笔资金已被认领");
+    public synchronized void add(Claim claim) {
+//        Claim data = this.getOne(Wrappers.<Claim>query().lambda().eq(Claim::getBusinessId,claim.getBusinessId()));
+        if(ObjectUtils.isNotEmpty(claim.getBusinessId())){
+            throw new ServiceException("请选择认领数据");
+        }
+        if(ObjectUtils.isEmpty(claim.getAmount())){
+            throw new ServiceException("认领金额不能为空");
+        }
+        AccountRunningWater water = accountRunningWaterService.getById(claim.getBusinessId());
+        if(water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount())>0){//如果认领金额>流水金额---驳回
+            throw new ServiceException("认领金额不能大于流水金额");
         }
         this.save(claim);
         List<ClaimContract> claimContractList = claim.getClaimContractList();
@@ -78,10 +85,11 @@ public class ClaimServiceImpl extends ServiceImpl<ClaimMapper, Claim> implements
             }
             claimContractService.saveBatch(claimContractList);
         }
-        //更新流水数据为认领状态
-        AccountRunningWater water = new AccountRunningWater();
-        water.setId(claim.getBusinessId());
-        water.setIsClaim(1);//已认领状态
+        //更新流水数据已认领金额
+        if(water.getClaimAmount().add(claim.getAmount()).compareTo(water.getAmount())==0){//如果认领金额=流水金额
+            water.setIsClaim(1);//已认领状态
+        }
+        water.setClaimAmount(water.getClaimAmount().add(claim.getAmount()));
         accountRunningWaterService.updateById(water);
         ObsFileUtil.saveFile(claim.getFileList(),claim.getId());
     }

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

@@ -2,6 +2,8 @@ package com.fjhx.sale.service.pack.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.sale.entity.pack.po.Pack;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailGoods;
@@ -49,6 +51,9 @@ public class PackServiceImpl extends ServiceImpl<PackMapper, Pack> implements Pa
     @Autowired
     private PackDetailGoodsService packDetailGoodsService;
 
+    @Autowired
+    private CodingRuleService codingRuleService;
+
     @Override
     public Page<PackVo> getPage(PackSelectDto dto) {
         IWrapper<Pack> wrapper = getWrapper();
@@ -74,7 +79,8 @@ public class PackServiceImpl extends ServiceImpl<PackMapper, Pack> implements Pa
         if(StringUtils.isEmpty(pack.getContractIds())){
             throw new ServiceException("参数异常");
         }
-        pack.setCode(CodeEnum.PACK.getCode());
+//        pack.setCode(CodeEnum.PACK.getCode());
+        pack.setCode(codingRuleService.createCode(CodingRuleEnum.PACK.getKey(),null));
         this.save(pack);
         List<PackDetail> packDetailList = pack.getPackDetailList();
         if(CollectionUtils.isNotEmpty(packDetailList)){

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/util/code/CodeEnum.java

@@ -34,7 +34,7 @@ public enum CodeEnum {
     //样品单
     SAMPLE_CODE("YP-", "yyMM-", "code", 3, SampleService.class),
     //采购
-    PURCHASE("PO", "yyMM-", "code", 3, EhsdPurchaseService.class),
+    PURCHASE("PO-", "yyMM-", "code", 3, EhsdPurchaseService.class),
     ;
     ;
 

+ 6 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/deliver/DeliverGoodsController.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.controller.deliver;
 
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsDetailsVo;
 import org.springframework.web.bind.annotation.*;
@@ -79,4 +80,9 @@ public class DeliverGoodsController {
         return deliverGoodsService.list(dto.getId());
     }
 
+    @PostMapping("/arrivalDetail")
+    public PurchaseVo arrivalDetail(@RequestBody DeliverGoodsDto dto) {
+        return deliverGoodsService.arrivalDetail(dto.getPurchaseId());
+    }
+
 }

+ 52 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/purchase/PurchaseBackController.java

@@ -0,0 +1,52 @@
+package com.fjhx.victoriatourist.controller.purchase;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackSelectDto;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 采购退货 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@RestController
+@RequestMapping("/purchaseBack")
+public class PurchaseBackController {
+
+    @Autowired
+    private PurchaseBackService purchaseBackService;
+
+    /**
+     * 采购退货分页
+     */
+    @PostMapping("/page")
+    public Page<PurchaseBackVo> page(@RequestBody PurchaseBackSelectDto dto) {
+        return purchaseBackService.getPage(dto);
+    }
+
+    /**
+     * 采购退货明细
+     */
+    @PostMapping("/detail")
+    public PurchaseBackVo detail(@RequestBody BaseSelectDto dto) {
+        return purchaseBackService.detail(dto.getId());
+    }
+
+    /**
+     * 采购退货新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody PurchaseBackDto purchaseBackDto) {
+        purchaseBackService.add(purchaseBackDto);
+    }
+
+}

+ 19 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/purchase/PurchaseBackDetailsController.java

@@ -0,0 +1,19 @@
+package com.fjhx.victoriatourist.controller.purchase;
+
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ * 采购退货明细 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@RestController
+@RequestMapping("/purchaseBackDetails")
+public class PurchaseBackDetailsController {
+
+
+}

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/deliver/vo/DeliverGoodsDetailsVo.java

@@ -56,4 +56,9 @@ public class DeliverGoodsDetailsVo extends DeliverGoodsDetails {
      */
     private BigDecimal transitQuantity;
 
+    /**
+     * 物流单号
+     */
+    private String logisticsCode;
+
 }

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDetailsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.purchase.dto;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购退货明细新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackDetailsDto extends PurchaseBackDetails {
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDetailsSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购退货明细列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackDetailsSelectDto extends BaseSelectDto {
+
+}

+ 25 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackDto.java

@@ -0,0 +1,25 @@
+package com.fjhx.victoriatourist.entity.purchase.dto;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 采购退货新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackDto extends PurchaseBack {
+
+    /**
+     * 退货明细
+     */
+    List<PurchaseBackDetails> purchaseBackDetailsList;
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/dto/PurchaseBackSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.purchase.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购退货列表查询入参实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackSelectDto extends BaseSelectDto {
+
+}

+ 57 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/po/PurchaseBack.java

@@ -0,0 +1,57 @@
+package com.fjhx.victoriatourist.entity.purchase.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 采购退货
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+@TableName("purchase_back")
+public class PurchaseBack extends BasePo {
+
+    /**
+     * 采购id
+     */
+    private Long purchaseId;
+
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 国家id
+     */
+    private Long countryId;
+
+    /**
+     * 省id
+     */
+    private Long provinceId;
+
+    /**
+     * 市id
+     */
+    private Long cityId;
+
+    /**
+     * 详细信息
+     */
+    private String detailedAddress;
+
+}

+ 45 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/po/PurchaseBackDetails.java

@@ -0,0 +1,45 @@
+package com.fjhx.victoriatourist.entity.purchase.po;
+
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 采购退货明细
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+@TableName("purchase_back_details")
+public class PurchaseBackDetails extends BasePo {
+
+    /**
+     * 采购退货id
+     */
+    private Long purchaseBackId;
+
+    /**
+     * 采购明细id
+     */
+    private Long purchaseDetailsId;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 退货数量
+     */
+    private BigDecimal quantity;
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/vo/PurchaseBackDetailsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.purchase.vo;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 采购退货明细列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackDetailsVo extends PurchaseBackDetails {
+
+}

+ 23 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/purchase/vo/PurchaseBackVo.java

@@ -0,0 +1,23 @@
+package com.fjhx.victoriatourist.entity.purchase.vo;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 采购退货列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+public class PurchaseBackVo extends PurchaseBack {
+
+    List<PurchaseBackDetailsVo> purchaseBackDetailsList;
+
+
+}

+ 3 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/deliver/DeliverGoodsMapper.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.mapper.deliver;
 
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -28,4 +29,6 @@ public interface DeliverGoodsMapper extends BaseMapper<DeliverGoods> {
 
     List<DeliverGoodsDetailsVo> listDeliverGoodsDetails(@Param("ew") IWrapper<DeliverGoods> wrapper);
 
+    List<QualityDetail> getQualityInfoByPurchaseId(@Param("id") Long id);
+
 }

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/purchase/PurchaseBackDetailsMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.mapper.purchase;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * <p>
+ * 采购退货明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+public interface PurchaseBackDetailsMapper extends BaseMapper<PurchaseBackDetails> {
+
+}

+ 26 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/purchase/PurchaseBackMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.victoriatourist.mapper.purchase;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 采购退货 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+public interface PurchaseBackMapper extends BaseMapper<PurchaseBack> {
+
+    /**
+     * 采购退货分页
+     */
+    Page<PurchaseBackVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<PurchaseBack> wrapper);
+
+}

+ 7 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/DeliverGoodsService.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.service.deliver;
 
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsDetailsVo;
 import com.ruoyi.common.core.service.BaseService;
@@ -53,4 +54,10 @@ public interface DeliverGoodsService extends BaseService<DeliverGoods> {
      */
     List<DeliverGoods> list(Long id);
 
+    /**
+     * 维多利亚到货明细
+     *
+     * @return
+     */
+    PurchaseVo arrivalDetail(Long purchaseId);
 }

+ 135 - 6
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fjhx.victoriatourist.service.deliver.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
@@ -9,10 +10,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
+import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.supply.entity.supplier.po.SupplierInfo;
+import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.fjhx.victoriatourist.entity.deliver.dto.DeliverGoodsDto;
 import com.fjhx.victoriatourist.entity.deliver.dto.DeliverGoodsSelectDto;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
@@ -21,18 +30,22 @@ import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsDetailsVo;
 import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsVo;
 import com.fjhx.victoriatourist.entity.logistics.po.LogisticsDetails;
 import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
 import com.fjhx.victoriatourist.mapper.deliver.DeliverGoodsMapper;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsDetailsService;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackDetailsService;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -62,6 +75,14 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
     LogisticsDetailsService logisticsDetailsService;
     @Autowired
     PurchaseService purchaseService;
+    @Autowired
+    private SupplierInfoService supplierInfoService;
+    @Autowired
+    private ArrivalDetailService arrivalDetailService;
+    @Autowired
+    private PurchaseBackDetailsService purchaseBackDetailsService;
+    @Autowired
+    private PurchaseBackService purchaseBackService;
 
     @Override
     public Page<DeliverGoodsVo> getPage(DeliverGoodsSelectDto dto) {
@@ -81,7 +102,7 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
         //获取采购明细列表
         //赋值产品信息
         List<Long> pdids = deliverGoodsDetailsVos.stream().map(DeliverGoodsDetails::getPurchaseDetailId).collect(Collectors.toList());
-        if(ObjectUtil.isEmpty(pdids)){
+        if (ObjectUtil.isEmpty(pdids)) {
             return deliverGoodsDetailsVos;
         }
         List<PurchaseDetail> purchaseDetailList = purchaseDetailService.listByIds(pdids);
@@ -90,7 +111,7 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
         List<ProductInfo> productInfos = productInfoService.listByIds(goodids);
         Map<Long, ProductInfo> productInfoMap = productInfos.stream().collect(Collectors.toMap(ProductInfo::getId, Function.identity()));
         //获取采购明细信息
-        Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId,Function.identity()));
+        Map<Long, PurchaseDetail> purchaseDetailMap = purchaseDetailList.stream().collect(Collectors.toMap(PurchaseDetail::getId, Function.identity()));
 
         for (DeliverGoodsDetailsVo deliverGoodsDetailsVo : deliverGoodsDetailsVos) {
             //赋值产品信息
@@ -110,8 +131,8 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
             deliverGoodsDetailsVo.setCount(purchaseDetail.getCount());
             //赋值在途数量
             IWrapper<DeliverGoods> wrapper1 = IWrapper.getWrapper();
-            wrapper1.eq("dgd",DeliverGoodsDetails::getPurchaseDetailId, deliverGoodsDetailsVo.getPurchaseDetailId());
-            wrapper1.eq("dg.status",0);
+            wrapper1.eq("dgd", DeliverGoodsDetails::getPurchaseDetailId, deliverGoodsDetailsVo.getPurchaseDetailId());
+            wrapper1.eq("dg.status", 0);
             List<DeliverGoodsDetailsVo> list = baseMapper.listDeliverGoodsDetails(wrapper1);
             BigDecimal count = list.stream()
                     .map(DeliverGoodsDetails::getDeliverGoodsQuantity)
@@ -135,7 +156,7 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
         logisticsInfos.setBusinessId(deliverGoodsDto.getId());//设置业务id为发货id
 //        logisticsInfos.setBusinessCode(purchase.getCode());//设置采购单号为业务单号
         String victoriatouristJson2 = purchase.getVictoriatouristJson();
-        JSONObject json2 = ObjectUtil.isNotEmpty(victoriatouristJson2) ? JSONObject.parseObject(victoriatouristJson2):new JSONObject();
+        JSONObject json2 = ObjectUtil.isNotEmpty(victoriatouristJson2) ? JSONObject.parseObject(victoriatouristJson2) : new JSONObject();
         logisticsInfos.setBusinessCode(json2.getString("contractCode"));
         logisticsInfos.setBusinessType(1);//采购到货
         logisticsInfos.setStatus(0);
@@ -180,4 +201,112 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
         return list;
     }
 
+    @Override
+    public PurchaseVo arrivalDetail(Long purchaseId) {
+        Purchase purchase = purchaseService.getById(purchaseId);
+        PurchaseVo result = BeanUtil.toBean(purchase, PurchaseVo.class);
+        //赋值供应商信息
+        SupplierInfo supplierInfo = supplierInfoService.getById(purchase.getSupplyId());
+        if (ObjectUtil.isNotEmpty(supplierInfo)) {
+            result.setSupplyName(supplierInfo.getName());
+        }
+        //赋值采购明细
+        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchase.getId()));
+        List<PurchaseDetailVo> purchaseDetailVoList = BeanUtil.copyToList(purchaseDetailList, PurchaseDetailVo.class);
+        //赋值产品信息
+        productInfoService.attributeAssign(purchaseDetailVoList, PurchaseDetailVo::getBussinessId, (item, productInfo) -> {
+            item.setProductCode(productInfo.getCode());
+            item.setProductName(productInfo.getName());
+            item.setProductCustomCode(productInfo.getCustomCode());
+        });
+        //赋值质检信息
+        List<QualityDetail> qualityInfoByPurchaseId = baseMapper.getQualityInfoByPurchaseId(purchase.getId());
+        if (ObjectUtil.isNotEmpty(qualityInfoByPurchaseId)) {
+            Map<Long, QualityDetail> qualityDetailsMap = qualityInfoByPurchaseId.stream().collect(Collectors.toMap(QualityDetail::getBussinessId, Function.identity()));
+            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+                QualityDetail qualityDetails = qualityDetailsMap.get(purchaseDetailVo.getBussinessId());
+                if (ObjectUtil.isEmpty(qualityDetails)) {
+                    purchaseDetailVo.setQualifiedCount(BigDecimal.ZERO);
+                    purchaseDetailVo.setNoQualifiedCount(BigDecimal.ZERO);
+                    purchaseDetailVo.setQualityQuantity(BigDecimal.ZERO);
+                    continue;
+                }
+                purchaseDetailVo.setQualifiedCount(qualityDetails.getQualifiedCount());
+                purchaseDetailVo.setNoQualifiedCount(qualityDetails.getNoQualifiedCount());
+                purchaseDetailVo.setQualityQuantity(qualityDetails.getQualifiedCount().add(qualityDetails.getNoQualifiedCount()));
+            }
+        }
+        //赋值发货信息
+        IWrapper<DeliverGoods> wrapper = getWrapper();
+        wrapper.eq("dg", DeliverGoods::getPurchaseId, purchaseId);
+        List<DeliverGoodsDetailsVo> list = baseMapper.listDeliverGoodsDetails(wrapper);
+        if (ObjectUtil.isNotEmpty(list)) {
+            Map<Long, List<DeliverGoodsDetailsVo>> collect = list.stream().collect(Collectors.groupingBy(DeliverGoodsDetailsVo::getPurchaseDetailId));
+            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+                List<DeliverGoodsDetailsVo> list1 = collect.get(purchaseDetailVo.getId());
+                if (ObjectUtil.isEmpty(list1)) {
+                    purchaseDetailVo.setDeliverGoodsQuantity(BigDecimal.ZERO);
+                    continue;
+                }
+                //发货数量求和
+                BigDecimal dgdCount = list1.stream()
+                        .map(DeliverGoodsDetailsVo::getDeliverGoodsQuantity)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                purchaseDetailVo.setDeliverGoodsQuantity(dgdCount);
+                purchaseDetailVo.setDeliverGoodsDetailList(list1);
+            }
+        }
+        //赋值到货信息
+        IWrapper<ArrivalDetail> wrapper1 = arrivalDetailService.getWrapper();
+        wrapper1.eq("a.purchase_id", purchaseId);
+        List<ArrivalDetailVo> arrivalDetail = arrivalDetailService.getArrivalDetail(wrapper1);
+        if (ObjectUtil.isNotEmpty(arrivalDetail)) {
+            Map<Long, List<ArrivalDetailVo>> collect = arrivalDetail.stream().collect(Collectors.groupingBy(ArrivalDetailVo::getBussinessId));
+
+            Map<Long, String> dgdMap = list.stream().collect(Collectors.toMap(DeliverGoodsDetailsVo::getId, DeliverGoodsDetailsVo::getLogisticsCode));
+            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+                List<ArrivalDetailVo> list1 = collect.get(purchaseDetailVo.getBussinessId());
+                if (ObjectUtil.isEmpty(list1)) {
+                    purchaseDetailVo.setArrivalQuantity(BigDecimal.ZERO);
+                    continue;
+                }
+
+                //赋值发货单号
+                for (ArrivalDetailVo arrivalDetailVo : list1) {
+                    arrivalDetailVo.setLogisticsCode(dgdMap.get(arrivalDetailVo.getDeliverGoodsDetailsId()));
+                }
+
+                //到货数量求和
+                BigDecimal arrCount = list1.stream()
+                        .map(ArrivalDetailVo::getCount)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                purchaseDetailVo.setArrivalQuantity(arrCount);
+                purchaseDetailVo.setArrivalDetailList(list1);
+            }
+        }
+        //赋值退货信息
+        List<PurchaseBack> list1 = purchaseBackService.list(q -> q.eq(PurchaseBack::getPurchaseId, purchaseId));
+        if (ObjectUtil.isNotEmpty(list1)) {
+            List<Long> ids = list1.stream().map(PurchaseBack::getId).collect(Collectors.toList());
+            Map<Long, List<PurchaseBackDetails>> longListMap = purchaseBackDetailsService.mapKGroup(PurchaseBackDetails::getPurchaseDetailsId, q -> q.in(PurchaseBackDetails::getPurchaseBackId, ids));
+
+            for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
+                List<PurchaseBackDetails> purchaseBackDetails = longListMap.get(purchaseDetailVo.getId());
+
+                if (ObjectUtil.isEmpty(purchaseBackDetails)) {
+                    purchaseDetailVo.setPurchaseBackQuantity(BigDecimal.ZERO);
+                    continue;
+                }
+                //退货数量求和
+                BigDecimal backCount = purchaseBackDetails.stream()
+                        .map(PurchaseBackDetails::getQuantity)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                purchaseDetailVo.setPurchaseBackQuantity(backCount);
+                purchaseDetailVo.setPurchaseBackDetailsList(purchaseBackDetails);
+            }
+        }
+        result.setPurchaseDetailVoList(purchaseDetailVoList);
+        return result;
+    }
+
 }

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/PurchaseBackDetailsService.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.service.purchase;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 采购退货明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+public interface PurchaseBackDetailsService extends BaseService<PurchaseBackDetails> {
+
+}

+ 36 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/PurchaseBackService.java

@@ -0,0 +1,36 @@
+package com.fjhx.victoriatourist.service.purchase;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackSelectDto;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackDto;
+
+
+/**
+ * <p>
+ * 采购退货 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+public interface PurchaseBackService extends BaseService<PurchaseBack> {
+
+    /**
+     * 采购退货分页
+     */
+    Page<PurchaseBackVo> getPage(PurchaseBackSelectDto dto);
+
+    /**
+     * 采购退货明细
+     */
+    PurchaseBackVo detail(Long id);
+
+    /**
+     * 采购退货新增
+     */
+    void add(PurchaseBackDto purchaseBackDto);
+
+}

+ 21 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackDetailsServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.victoriatourist.service.purchase.impl;
+
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import com.fjhx.victoriatourist.mapper.purchase.PurchaseBackDetailsMapper;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 采购退货明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Service
+public class PurchaseBackDetailsServiceImpl extends ServiceImpl<PurchaseBackDetailsMapper, PurchaseBackDetails> implements PurchaseBackDetailsService {
+
+}

+ 63 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/purchase/impl/PurchaseBackServiceImpl.java

@@ -0,0 +1,63 @@
+package com.fjhx.victoriatourist.service.purchase.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackDto;
+import com.fjhx.victoriatourist.entity.purchase.dto.PurchaseBackSelectDto;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
+import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
+import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackDetailsVo;
+import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
+import com.fjhx.victoriatourist.mapper.purchase.PurchaseBackMapper;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackDetailsService;
+import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 采购退货 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-05-19
+ */
+@Service
+public class PurchaseBackServiceImpl extends ServiceImpl<PurchaseBackMapper, PurchaseBack> implements PurchaseBackService {
+    @Autowired
+    PurchaseBackDetailsService purchaseBackDetailsService;
+
+    @Override
+    public Page<PurchaseBackVo> getPage(PurchaseBackSelectDto dto) {
+        IWrapper<PurchaseBack> wrapper = getWrapper();
+        wrapper.orderByDesc("pb", PurchaseBack::getId);
+        Page<PurchaseBackVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public PurchaseBackVo detail(Long id) {
+        PurchaseBack PurchaseBack = this.getById(id);
+        PurchaseBackVo result = BeanUtil.toBean(PurchaseBack, PurchaseBackVo.class);
+        List<PurchaseBackDetails> purchaseBackDetails = purchaseBackDetailsService.list(q -> q.eq(PurchaseBackDetails::getPurchaseBackId, result.getId()));
+        List<PurchaseBackDetailsVo> purchaseBackDetailsVos = BeanUtil.copyToList(purchaseBackDetails, PurchaseBackDetailsVo.class);
+        result.setPurchaseBackDetailsList(purchaseBackDetailsVos);
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(PurchaseBackDto purchaseBackDto) {
+        this.save(purchaseBackDto);
+        List<PurchaseBackDetails> purchaseBackDetailsList = purchaseBackDto.getPurchaseBackDetailsList();
+        purchaseBackDetailsList.forEach(purchaseBackDetails -> purchaseBackDetails.setPurchaseBackId(purchaseBackDto.getId()));
+        purchaseBackDetailsService.saveBatch(purchaseBackDetailsList);
+    }
+
+}

+ 16 - 0
hx-victoriatourist/src/main/resources/mapper/deliver/DeliverGoodsMapper.xml

@@ -18,11 +18,27 @@
     <select id="listDeliverGoodsDetails"
             resultType="com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsDetailsVo">
         SELECT
+            dg.code logisticsCode,
             dgd.*
         FROM
             deliver_goods dg
                 JOIN deliver_goods_details dgd ON dgd.deliver_goods_id = dg.id
             ${ew.customSqlSegment}
     </select>
+    <select id="getQualityInfoByPurchaseId" resultType="com.fjhx.purchase.entity.quality.po.QualityDetail">
+        SELECT
+            qd.product_info_id bussiness_id,
+            sum( qd.qualified_quantity ) qualifiedCount,
+            sum( qd.disqualification_quantity ) noQualifiedCount
+        FROM
+            bytesailing_wms.stock_wait sw
+                JOIN bytesailing_wms.arrival_stock_records asr ON asr.stock_wait_id = sw.id
+                JOIN bytesailing_wms.arrival_stock_records_details asrd ON asrd.arrival_stock_records_id = asr.id
+                JOIN bytesailing_victoriatourist.quality_details qd ON qd.arrival_stock_records_details_id = asrd.id
+        WHERE
+            sw.business_id = #{id}
+        GROUP BY
+            qd.product_info_id
+    </select>
 
 </mapper>

+ 4 - 0
hx-victoriatourist/src/main/resources/mapper/purchase/PurchaseBackDetailsMapper.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.victoriatourist.mapper.purchase.PurchaseBackDetailsMapper">
+</mapper>

+ 22 - 0
hx-victoriatourist/src/main/resources/mapper/purchase/PurchaseBackMapper.xml

@@ -0,0 +1,22 @@
+<?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.victoriatourist.mapper.purchase.PurchaseBackMapper">
+    <select id="getPage" resultType="com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo">
+        select
+            pb.id,
+            pb.purchase_id,
+            pb.contacts,
+            pb.phone,
+            pb.countryId,
+            pb.provinceId,
+            pb.cityId,
+            pb.detailedAddress,
+            pb.create_user,
+            pb.create_time,
+            pb.update_user,
+            pb.update_time
+        from purchase_back pb
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>