浏览代码

利润结算表过滤采购付款打款状态

caozj 1 年之前
父节点
当前提交
a4e1c2b0ee

+ 3 - 1
hx-purchase/src/main/resources/mapper/pay/PayDetailMapper.xml

@@ -47,8 +47,10 @@
         FROM
         pay_detail t1
         LEFT JOIN pay t2 ON t1.pay_id = t2.id
+        LEFT JOIN bytesailing_account.account_payment t3 ON t2.id = t3.business_id
         <where>
-            `type` != 3
+            t2.`type` != 3
+            AND t3 .`status` = 10
             <if test="purchaseIds neq null and purchaseIds.size() > 0">
                 <foreach collection="purchaseIds" item="purchaseId" open="AND purchase_id IN (" separator="," close=")">
                     #{purchaseId}

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/statement/dto/ProfitSettlementDto.java

@@ -18,4 +18,9 @@ public class ProfitSettlementDto extends BaseSelectDto {
      */
     private Long userId;
 
+    /**
+     * 是否到账 0:未到账  1已到账
+     */
+    private Integer isArrival;
+
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java

@@ -33,6 +33,11 @@ public interface ContractMapper extends BaseMapper<Contract> {
     Page<ContractVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Contract> wrapper);
 
     /**
+     * 利润结算表分页
+     */
+    Page<ContractVo> getProfitSettlement(@Param("page") Page<Object> page, @Param("ew") IWrapper<Contract> wrapper);
+
+    /**
      * 利润预算表
      */
     Page<ContractBudgetVo> getProfitBudgetPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Contract> wrapper);

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -13,6 +13,7 @@ import com.fjhx.sale.entity.contract.dto.PayDecisionAidDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
+import com.fjhx.sale.entity.statement.dto.ProfitSettlementDto;
 import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
@@ -35,6 +36,11 @@ public interface ContractService extends BaseService<Contract> {
     Page<ContractVo> getPage(ContractSelectDto dto);
 
     /**
+     * 利润结算表分页
+     */
+    Page<ContractVo> getProfitSettlement(ProfitSettlementDto dto);
+
+    /**
      * 外销合同表分页 不过滤权限
      */
     Page<ContractVo> getPage1(ContractSelectDto dto);

+ 32 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -62,6 +62,7 @@ import com.fjhx.sale.entity.contract.po.ContractShipment;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
+import com.fjhx.sale.entity.statement.dto.ProfitSettlementDto;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -72,6 +73,7 @@ import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
 import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
 import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
+import com.github.pagehelper.util.StringUtil;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
@@ -196,6 +198,36 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     }
 
     /**
+     * 利润结算表分页
+     * @param dto
+     * @return
+     */
+    @Override
+    public Page<ContractVo> getProfitSettlement(ProfitSettlementDto dto) {
+
+        IWrapper<Contract> wrapper = getWrapper();
+        wrapper.orderByDesc("t1", Contract::getCreateTime);
+        wrapper.eq("t1", Contract::getIsChange, "0");//列表只展示未变更得数据
+        wrapper.between("t1", Contract::getStatus, FlowStatusEnum1.DRAFT.getKey(), FlowStatusEnum1.CANCELLATION.getKey() - 1);
+        if(ObjectUtil.isNotEmpty(dto.getSettlementStatus())){
+            wrapper.eq( "t1",Contract::getSettlementStatus, dto.getSettlementStatus());
+        }
+        if(ObjectUtil.isNotEmpty(dto.getUserId())){
+            wrapper.eq( "t1",Contract::getCreateUser, dto.getUserId());
+        }
+        if (StringUtils.isNotEmpty(dto.getKeyword())) {
+            wrapper.keyword(dto.getKeyword(), new SqlField("t1", Contract::getCode));
+        }
+        if(dto.getIsArrival()==1){//已到账----//预付比例等于0||到账认领金额 >= 合同金额 * 预付比例%
+            wrapper.eq("t1",Contract::getAdvanceRatio,"0").or().eq("t1.refundStatusNew",20);
+        }else{
+            wrapper.ne("t1",Contract::getAdvanceRatio,"0").ne("t1.refundStatusNew",20);
+        }
+        Page<ContractVo> page = baseMapper.getProfitSettlement(dto.getPage(),wrapper);
+        return page;
+    }
+
+    /**
      * 不过滤权限的分页接口
      */
     @Override

+ 23 - 12
hx-sale/src/main/java/com/fjhx/sale/service/statement/impl/SaleStatementServiceImpl.java

@@ -29,6 +29,7 @@ import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
 import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
 import com.fjhx.sale.entity.contract.po.Contract;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.statement.dto.ProfitSettlementDto;
 import com.fjhx.sale.entity.statement.vo.ProfitSettlementVo;
@@ -37,6 +38,7 @@ import com.fjhx.sale.service.claim.ClaimService;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.statement.SaleStatementService;
 import com.github.pagehelper.util.StringUtil;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -92,8 +94,8 @@ public class SaleStatementServiceImpl implements SaleStatementService {
     @Override
     public Page<ProfitSettlementVo> getProfitSettlement(ProfitSettlementDto dto) {
 
-        Page<Contract> contractPage = getContractPage(dto);
-        List<Contract> records = contractPage.getRecords();
+        Page<ContractVo> contractPage = contractService.getProfitSettlement(dto);
+        List<ContractVo> records = contractPage.getRecords();
         if (records.size() == 0) {
             return new Page<>();
         }
@@ -128,7 +130,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
      * 获取单条合同汇率
      */
     private Map<Long, Map<String, BigDecimal>> getDetailsRateMap(
-            List<Contract> records, Map<String, BigDecimal> defaultRateMap) {
+            List<ContractVo> records, Map<String, BigDecimal> defaultRateMap) {
 
         HashMap<Long, Map<String, BigDecimal>> result = new HashMap<>();
 
@@ -163,21 +165,30 @@ public class SaleStatementServiceImpl implements SaleStatementService {
      */
     private Page<Contract> getContractPage(ProfitSettlementDto dto) {
 
-        Page<Contract> page = contractService.page(dto.getPage(), q -> q
-                .orderByDesc(Contract::getCreateTime)
-                .between(Contract::getStatus, FlowStatusEnum1.PASS.getKey(), FlowStatusEnum1.UPDATE.getKey() - 1)
-                .eq(ObjectUtil.isNotEmpty(dto.getSettlementStatus()), Contract::getSettlementStatus, dto.getSettlementStatus())
-                .eq(ObjectUtil.isNotEmpty(dto.getUserId()), Contract::getCreateUser, dto.getUserId())
-                .like(StringUtil.isNotEmpty(dto.getKeyword()),Contract::getCode,dto.getKeyword())
-        );
 
+        IWrapper<Contract> wrapper = IWrapper.getWrapper();
+        wrapper.orderByDesc(Contract::getCreateTime);
+        wrapper.between(Contract::getStatus, FlowStatusEnum1.PASS.getKey(), FlowStatusEnum1.UPDATE.getKey() - 1);
+        if(ObjectUtil.isNotEmpty(dto.getSettlementStatus())){
+            wrapper.eq( Contract::getSettlementStatus, dto.getSettlementStatus());
+        }
+        if(ObjectUtil.isNotEmpty(dto.getUserId())){
+            wrapper.eq( Contract::getCreateUser, dto.getUserId());
+        }
+        if(StringUtil.isNotEmpty(dto.getKeyword())){
+            wrapper.like(Contract::getCode,dto.getKeyword());
+        }
+        if(dto.getIsArrival()==1){//已到账----//预付比例等于0||到账认领金额 >= 合同金额 * 预付比例%
+            wrapper.eq(Contract::getAdvanceRatio,"0");
+        }
+        Page<Contract> page = contractService.page(dto.getPage(),wrapper);
         return page;
     }
 
     /**
      * 创建结果集list
      */
-    private List<ProfitSettlementVo> createResultList(List<Contract> records) {
+    private List<ProfitSettlementVo> createResultList(List<ContractVo> records) {
 
         return records.stream().map(item -> {
             ProfitSettlementVo profitSettlementVo = new ProfitSettlementVo();
@@ -544,7 +555,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
     /**
      * 转page
      */
-    private Page<ProfitSettlementVo> toPage(Page<Contract> contractPage, List<ProfitSettlementVo> list) {
+    private Page<ProfitSettlementVo> toPage(Page<ContractVo> contractPage, List<ProfitSettlementVo> list) {
         Page<ProfitSettlementVo> page = new Page<>();
         page.setTotal(contractPage.getTotal());
         page.setCurrent(contractPage.getCurrent());

+ 25 - 0
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -23,6 +23,31 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getProfitSettlement" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+        SELECT
+            *
+        FROM
+            (
+            SELECT *
+            FROM
+                (SELECT t1.*,
+                        CASE
+                            WHEN ( IFNULL( t1.amount, 0 ) * IFNULL( t1.advance_ratio / 100, 0 ) - t1.sumClaimMoney ) &lt;=  0 THEN
+                                20
+                            WHEN t1.sumClaimMoney = 0 THEN
+                                0
+                            ELSE 10
+                            END                                   AS refundStatusNew
+                 FROM (SELECT t1.*,
+                              (SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
+                               FROM claim_contract cc
+                                        left join claim c on cc.claim_id = c.id
+                                        LEFT JOIN bytesailing_account.account_running_water arw on c.business_id = arw.id
+                               WHERE cc.contract_id = t1.id) AS sumClaimMoney
+                       FROM contract t1) t1) t1
+                ) t1
+            ${ew.customSqlSegment}
+    </select>
     <select id="getProfitClearingPage" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
         SELECT t1.id AS contractId,
                t1.*