Browse Source

添加 销售合同和样品单合并下拉

yzc 1 year ago
parent
commit
b8463fe738

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -46,6 +46,14 @@ public class ContractController {
     }
     }
 
 
     /**
     /**
+     * 外销合同与样品单合并分页
+     */
+    @PostMapping("/contractAndSamplePage")
+    public Page<ContractVo> getContractAndSamplePage(@RequestBody ContractSelectDto dto) {
+        return contractService.getContractAndSamplePage(dto);
+    }
+
+    /**
      * 外销合同表分页 不过滤权限
      * 外销合同表分页 不过滤权限
      */
      */
     @PostMapping("/page1")
     @PostMapping("/page1")

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

@@ -96,4 +96,7 @@ public interface ContractMapper extends BaseMapper<Contract> {
      */
      */
     List<AccountRunningWaterVo> getAccountRunningWaterByContractId(@Param("contractId") Long contractId);
     List<AccountRunningWaterVo> getAccountRunningWaterByContractId(@Param("contractId") Long contractId);
 
 
+
+    Page<ContractVo> getContractAndSamplePagez(@Param("page") Page<Object> page, @Param("ew") IWrapper<Contract> wrapper);
+
 }
 }

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

@@ -29,6 +29,8 @@ import java.util.Map;
  */
  */
 public interface ContractService extends BaseService<Contract> {
 public interface ContractService extends BaseService<Contract> {
 
 
+    Page<ContractVo> getContractAndSamplePage(ContractSelectDto dto);
+
     /**
     /**
      * 外销合同表分页
      * 外销合同表分页
      */
      */

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

@@ -170,6 +170,27 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private DictTenantDataService dictTenantDataService;
     private DictTenantDataService dictTenantDataService;
 
 
     /**
     /**
+     * 合同和样品单 下拉分页
+     */
+    @Override
+    public Page<ContractVo> getContractAndSamplePage(ContractSelectDto dto) {
+        IWrapper<Contract> wrapper = getWrapper();
+        Page<ContractVo> contractAndSamplePage = baseMapper.getContractAndSamplePagez(dto.getPage(), wrapper);
+        List<ContractVo> records = contractAndSamplePage.getRecords();
+        //赋值原卖方公司名称 多公司
+        DynamicDataSourceContextHolder.push(SourceConstant.COMMON);
+        corporationService.attributeAssign(records, ContractVo::getSellCorporationId, (item, corporation) -> {
+            item.setSellCorporationName(corporation.getName());
+        });
+        DynamicDataSourceContextHolder.poll();
+        //赋值客户名称
+        customerService.attributeAssign(records, ContractVo::getBuyCorporationId, (item, customer) -> {
+            item.setBuyCorporationName(customer.getName());
+        });
+        return contractAndSamplePage;
+    }
+
+    /**
      * 分页
      * 分页
      *
      *
      * @param dto
      * @param dto

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

@@ -209,5 +209,65 @@
                  LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
                  LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
         WHERE c.id = #{contractId}
         WHERE c.id = #{contractId}
     </select>
     </select>
+    <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+        SELECT
+            t1.id,
+            t1.sell_corporation_id,
+            t1.contract_type,
+            t1.`code`,
+            t1.buy_corporation_id,
+            t1.version,
+            t1.amount,
+            t1.create_user,
+            t1.create_time,
+            t1.refund_status,
+            t1.`status`,
+            (
+                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
+            ${ew.customSqlSegment}
+        UNION
+        SELECT
+            t1.id,
+            t1.sell_corporation_id,
+            3 AS contract_type,
+            t1.`code`,
+            t1.buy_corporation_id,
+            t1.versions AS version,
+            t1.amount,
+            t1.sumClaimMoney,
+            t1.create_user,
+            t1.create_time,
+            t1.`status`,
+            IF
+                ( sumClaimMoney >= t1.amount, 20, IF ( sumClaimMoney != 0, 10, 0 ) ) AS refund_status
+        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
+                    sample t1
+            ) AS t1
+            ${ew.customSqlSegment}
+    </select>
 
 
 </mapper>
 </mapper>