Переглянути джерело

Merge branch 'test' into dev

yzc 1 рік тому
батько
коміт
614c40752d

+ 6 - 1
hx-purchase/src/main/java/com/fjhx/purchase/entity/pay/po/Pay.java

@@ -115,11 +115,16 @@ public class Pay extends BasePo {
     private String payStatus;
 
     /**
-     * 
+     * 
      */
     private BigDecimal rate;
 
     /**
+     * 税率
+     */
+    private BigDecimal taxRate;
+
+    /**
      * 付款类型  0:未核销  1发票核销
      */
     private String type;

+ 2 - 1
hx-purchase/src/main/java/com/fjhx/purchase/flow/PayFlow.java

@@ -96,6 +96,7 @@ public class PayFlow extends FlowDelegate {
             Assert.notEmpty(pay.getId(), "采购付款id不能为空");
         }
         pay.setCurrency("CNY");//默认币种人民币
+        pay.setRate(new BigDecimal("1"));//默认币种人民币
         pay.setStatus(PayStatusEnum.UNDER_REVIEW.getKey());
         payService.saveOrUpdate(pay);
 
@@ -137,7 +138,7 @@ public class PayFlow extends FlowDelegate {
         pay.setStatus(PayStatusEnum.PASS.getKey());
         pay.setApprovedDate(new Date());
         payService.updateById(pay);
-        if(!StringUtils.equals(pay.getPayType(),"3")){
+        if(!StringUtils.equals(pay.getType(),"3")){
 
             // 添加一条付款流水
             AccountPayment payment = new AccountPayment();

+ 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>
-            pay_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 String isArrival;
+
 }

+ 25 - 12
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -9,6 +9,7 @@ import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
+import com.fjhx.sale.entity.claim.po.Claim;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -16,6 +17,7 @@ import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProject;
 import com.fjhx.sale.entity.contract.po.ContractShipment;
 import com.fjhx.sale.service.claim.ClaimContractService;
+import com.fjhx.sale.service.claim.ClaimService;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.contract.ContractProjectService;
 import com.fjhx.sale.service.contract.ContractService;
@@ -51,9 +53,12 @@ public class ContractUpdateFlow extends FlowDelegate {
 
     @Autowired
     private ContractProductService contractProductService;
+
     @Autowired
     private ClaimContractService claimContractService;
 
+    @Autowired
+    private ClaimService claimService;
 
     @Autowired
     private ContractProjectService contractProjectService;
@@ -119,22 +124,22 @@ public class ContractUpdateFlow extends FlowDelegate {
             newCp.setExpendQuantity(newCp.getQuantity());
             if (ObjectUtil.isNotEmpty(newCp.getId())) {//如果新合同产品ID不为空
                 //取出旧合同
-                ContractProduct oldContractProduct = oldContractProductMap.getOrDefault(newCp.getId(), null).get(0);
-                //取出旧合同包装方式
-                JSONObject oldJson = JSONObject.parseObject(oldContractProduct.getEhsdJson());
-                String oldPackMethod = oldJson.getOrDefault("packMethod", null) == null ? null : oldJson.getOrDefault("packMethod", null).toString();
-                //取出新合同包装方式
-                JSONObject newJson = JSONObject.parseObject(newCp.getEhsdJson());
-                String newPackMethod = newJson.getOrDefault("packMethod", null) == null ? null : oldJson.getOrDefault("packMethod", null).toString();
+                ContractProduct oldContractProduct = oldContractProductMap.getOrDefault(newCp.getId(),null).get(0);
+//                //取出旧合同包装方式
+//                JSONObject oldJson = JSONObject.parseObject(oldContractProduct.getEhsdJson());
+//                String oldPackMethod = oldJson.getOrDefault("packMethod",null)==null?null:oldJson.getOrDefault("packMethod",null).toString();
+//                //取出新合同包装方式
+//                JSONObject newJson = JSONObject.parseObject(newCp.getEhsdJson());
+//                String newPackMethod = newJson.getOrDefault("packMethod",null)==null?null:oldJson.getOrDefault("packMethod",null).toString();
                 /**
                  * 商品英文名、尺寸、包装方式、数量 没有变更---取原本的剩余数量
                  */
-                if (oldContractProduct.getQuantity().compareTo(newCp.getQuantity()) == 0
-                        && StringUtils.equals(oldContractProduct.getProductName(), newCp.getProductName())
-                        && StringUtils.equals(oldContractProduct.getProductModel(), newCp.getProductModel())
-                        && StringUtils.equals(oldPackMethod, newPackMethod)) {
+                if(oldContractProduct.getQuantity().compareTo(newCp.getQuantity())==0){//如果数量没有变动
                     //取出旧的剩余数量
                     newCp.setExpendQuantity(oldContractProduct.getExpendQuantity());
+                }else{//变动了
+                    BigDecimal quantity = newCp.getQuantity().subtract(oldContractProduct.getQuantity()).subtract(oldContractProduct.getExpendQuantity());//剩余数量
+                    newCp.setExpendQuantity(quantity);
                 }
             }
         }
@@ -275,8 +280,16 @@ public class ContractUpdateFlow extends FlowDelegate {
         oldContract.setIsChange("1");
         contractService.updateById(oldContract);
 
+
+        List<ClaimContract> claimContractList = claimContractService.list(Wrappers.<ClaimContract>query().lambda().eq(ClaimContract::getContractId,oldContractId));
+        List<Long> claimIds = claimContractList.stream().map(ClaimContract::getClaimId).collect(Collectors.toList());
+        List<Long> claimContractIds = claimContractList.stream().map(ClaimContract::getId).collect(Collectors.toList());
         //删除到账认领数据
-        claimContractService.remove(q -> q.eq(ClaimContract::getContractId, oldContractId));
+        claimContractService.remove(q -> q.in(ClaimContract::getId, claimContractIds));
+        //删除到账认领数据
+        claimService.remove(q -> q.in(Claim::getId, claimIds));
+
+
         oldContract.setUpId(temOldId);
         oldContract.setIsShow(1);//隐藏旧合同
         contractService.updateContract(oldContract);

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

+ 40 - 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;
@@ -112,6 +114,7 @@ import java.util.stream.Collectors;
 public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         implements ContractService, GetDocumentaryBusinessTemplate {
 
+    public static final int VALUE = 20;
     private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy", Locale.ENGLISH);
 
     @Qualifier(ThreadPoolConfig.threadPoolTaskExecutor)
@@ -196,6 +199,43 @@ 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(StringUtils.isNotEmpty(dto.getIsArrival())){
+            if(StringUtils.equals(dto.getIsArrival(),"1")){//已到账----//预付比例等于0||到账认领金额 >= 合同金额 * 预付比例%
+                wrapper.and(c -> {
+                    c.eq(Contract::getAdvanceRatio, "0").or();
+                    c.eq("t1.refundStatusNew", 20);
+                });
+
+            }else{
+                wrapper.ne("t1",Contract::getAdvanceRatio,"0");
+                wrapper.ne("t1.refundStatusNew",20);
+            }
+        }
+        Page<ContractVo> page = baseMapper.getProfitSettlement(dto.getPage(),wrapper);
+        return page;
+    }
+
+    /**
      * 不过滤权限的分页接口
      */
     @Override

+ 30 - 20
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<>();
 
@@ -158,26 +160,34 @@ public class SaleStatementServiceImpl implements SaleStatementService {
         return result;
     }
 
-    /**
-     * 获取合同分页
-     */
-    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())
-        );
-
-        return page;
-    }
+//    /**
+//     * 获取合同分页
+//     */
+//    private Page<Contract> getContractPage(ProfitSettlementDto dto) {
+//
+//        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 +554,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.*