shenziyin-gh преди 1 година
родител
ревизия
57723d9f56

+ 6 - 0
pom.xml

@@ -55,6 +55,12 @@
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>${druid.version}</version>
         </dependency>
+        <!-- 工具类-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.5</version>
+        </dependency>
         <!-- 数 据 库 操 作 框 架 -->
         <dependency>
             <groupId>org.mybatis.spring.boot</groupId>

+ 40 - 8
src/main/java/com/cool/bang/api/DataMatch.java

@@ -122,14 +122,6 @@ public class DataMatch {
         mySQLService.htTo();
     }
 
-    /**
-     * 合同逾期
-     */
-    @GetMapping("contractOverdueTo")
-    public void contractOverdueTo(){
-        mySQLService.contractOverdueTo();
-    }
-
 
     /**
      *交存
@@ -223,4 +215,44 @@ public class DataMatch {
     }
 
 
+
+    /**
+     * 处理 2022年07月之前的合同 处理交存状态为 1 但是贷款已经放款了的 老的合同  变为状态 为交存完成
+     * 操作-1
+     */
+    @GetMapping("updateOldContractPaymentStatus")
+    public void updateOldContractPaymentStatus(){
+        mySQLService.updateOldContractPaymentStatus();
+    }
+
+
+    /**
+     * 更新现有合同的首次交存时间
+     * 操作-2
+     */
+    @GetMapping("updateContractPaymentTime")
+    public void updateContractPaymentTime(){
+        mySQLService.updateContractPaymentTime();
+    }
+
+
+    /**
+     * 合同逾期数据导入
+     * 操作-3
+     */
+    @GetMapping("contractOverdueTo")
+    public void contractOverdueTo(){
+        mySQLService.contractOverdueTo();
+    }
+
+    /**
+     * 处理 合同交存首期款交存 但是没有交易的 zjjgflag = 0 的是  改成免存状态
+     * 只处理拉取合同产生新的新的交存的数据
+     */
+    @GetMapping("checkFundContractChangeIsExempt")
+    public void checkFundContractChangeIsExempt(){
+        mySQLService.checkFundContractChangeIsExempt();
+    }
+
+
 }

+ 21 - 0
src/main/java/com/cool/bang/modules/mysql/domain/Contract.java

@@ -203,6 +203,8 @@ public class Contract {
      */
     private Integer delFlag;
 
+    private Integer isExempt;//免存
+
     private Date createTime;
 
     //是否逾期
@@ -211,6 +213,9 @@ public class Contract {
     //交存状态 0 待缴存  1首期已交存  2交存完成或不需要交存
     private Integer paymentStatus;
 
+    //首期款交存时间
+    private Date paymentTime;
+
     public Date getCreateTime() {
         return createTime;
     }
@@ -688,4 +693,20 @@ public class Contract {
     public void setPaymentStatus(Integer paymentStatus) {
         this.paymentStatus = paymentStatus;
     }
+
+    public Date getPaymentTime() {
+        return paymentTime;
+    }
+
+    public void setPaymentTime(Date paymentTime) {
+        this.paymentTime = paymentTime;
+    }
+
+    public Integer getIsExempt() {
+        return isExempt;
+    }
+
+    public void setIsExempt(Integer isExempt) {
+        this.isExempt = isExempt;
+    }
 }

+ 41 - 0
src/main/java/com/cool/bang/modules/mysql/domain/ContractOverdue.java

@@ -26,6 +26,15 @@ public class ContractOverdue {
 
     private Integer isOverdue;
 
+    private Integer paymentStatus;//0待缴存 1首期款已交存 2 交存完成或不需要交存
+
+    private Integer delFlag;
+
+    private Integer isExist; //1现房合同 0 期房合同
+    ////合同首次交存时间
+    private Date paymentTime;
+
+
     public Long getContractId() {
         return contractId;
     }
@@ -113,4 +122,36 @@ public class ContractOverdue {
     public void setIsOverdue(Integer isOverdue) {
         this.isOverdue = isOverdue;
     }
+
+    public Integer getPaymentStatus() {
+        return paymentStatus;
+    }
+
+    public void setPaymentStatus(Integer paymentStatus) {
+        this.paymentStatus = paymentStatus;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getIsExist() {
+        return isExist;
+    }
+
+    public void setIsExist(Integer isExist) {
+        this.isExist = isExist;
+    }
+
+    public Date getPaymentTime() {
+        return paymentTime;
+    }
+
+    public void setPaymentTime(Date paymentTime) {
+        this.paymentTime = paymentTime;
+    }
 }

+ 1 - 0
src/main/java/com/cool/bang/modules/mysql/domain/Fund.java

@@ -7,6 +7,7 @@ import org.springframework.util.StringUtils;
 import java.math.BigDecimal;
 import java.util.List;
 
+
 public class Fund {
 
 

+ 59 - 1
src/main/java/com/cool/bang/modules/mysql/mapper/MySqlMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -183,6 +184,63 @@ public interface MySqlMapper {
      *
      * @return
      */
-    ContractOverdue getOverdueContract(@Param("contractNumber") String contractNumber);
+    ContractOverdue getOverdueContractInfo(@Param("contractNumber") String contractNumber);
 
+
+    /**
+     * 校验这些 逾期的合同 是否有已经解除楼栋 的 或者是 贷款已经放款的
+     * @param contractNumber
+     * @return
+     */
+    ContractOverdue checkOverdueContractIsRealOverdue(@Param("contractNumber") String contractNumber);
+
+    /**
+     * 获取 交存状态为首次已交存 的合同 并且没有首次交存时间的
+     * @return
+     */
+    List<Contract> getContractBySqyjc();
+
+    /**
+     * 更新 合同首期款交存时间
+     * @param data
+     */
+    int updatePaymeTime(@Param("params") List<Contract> data);
+
+    /**
+     * 获取 2022年07月之前的合同 处理交存状态为 1 但是贷款已经放款了的 老的合同  变为状态 为交存完成
+     * @return
+     */
+    List<Contract> getOldContract();
+
+    Integer checkSdJcByContractId(@Param("contractId") Long contractId);
+
+    Integer checkGjjJcByContractId(@Param("contractId") Long contractId);
+
+    void updatPaymentStatus(@Param("params") List<Contract> oldContract);
+
+    /**
+     * 更新所有的合同逾期状态为 0  正常
+     */
+    void updateContractSetOverdue();
+
+    /**
+     * 查询首期交存时间
+     * @param id
+     * @return
+     */
+    Date getFundTradeByContractId(@Param("id") Long id);
+
+    /**
+     * 查询 fund del_flag = 0
+     * 并且  payment_type = 1
+     * payment_status > 0
+     * @return
+     */
+    List<Map<String,Object>>  getFundDelflag_0();
+
+    /**
+     * 更新合同免存状态
+     * @param numbers
+     */
+    void updateIsExempt(@Param("params")List<Long> numbers);
 }

+ 252 - 16
src/main/java/com/cool/bang/modules/mysql/service/MySQLService.java

@@ -20,10 +20,7 @@ import javax.swing.event.ListDataEvent;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -67,6 +64,16 @@ public class MySQLService {
     @Autowired
     private FWMapper fwMapper;
 
+
+    public static Date getMonthDay(Date date, Integer month) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.add(Calendar.MONTH, month);
+        Date result = cal.getTime();
+        return result;
+    }
+
+
     /**
      * 项目表 数据匹配
      */
@@ -233,7 +240,7 @@ public class MySQLService {
 
         List<Bxmxy> xmxyList = bxmxyMapper.selectFromBxmxy();
 
-        System.out.println("查询出项目协议信息共"+ xmxyList.size() + "条");
+        System.out.println("查询出项目协议信息共" + xmxyList.size() + "条");
 
         //查询流程信息
         ApprovalFlow approvalFlow = flowMapper.selectFlowByType(1); //托管申请flowType = 1
@@ -1425,14 +1432,14 @@ public class MySQLService {
             StringBuffer str = new StringBuffer();
             str.append(item.getId());
             str.append(";").append(item.getAmount());
-                for (ProjectAccountTrade balance : projectBalances) {
-                    if (balance.getId().equals(item.getId())) {
-                        str.append(";").append(balance.getAmount())
-                                .append(";").append(item.getAmount().compareTo(balance.getAmount()))
-                                .append(";").append(item.getAmount().subtract(balance.getAmount()));
+            for (ProjectAccountTrade balance : projectBalances) {
+                if (balance.getId().equals(item.getId())) {
+                    str.append(";").append(balance.getAmount())
+                            .append(";").append(item.getAmount().compareTo(balance.getAmount()))
+                            .append(";").append(item.getAmount().subtract(balance.getAmount()));
 
-                    }
                 }
+            }
             strs.add(str.toString());
         }
 
@@ -1444,26 +1451,255 @@ public class MySQLService {
      */
     @Transactional
     public void contractOverdueTo() {
+        System.out.println("===============逾期合同导入开始=================");
+
         List<HtInfo> htInfoList = oracleMapper.selectYqHtInfo();
         List<ContractOverdue> list = new ArrayList<>();
+        List<Contract> contractList = new ArrayList<>();
+        Contract contract = null;
+        Date currentDate = new Date();
+        Date date = null;
         for (HtInfo yqht : htInfoList) {
-            //获取逾期合同
-            ContractOverdue overdue = mySqlMapper.getOverdueContract(yqht.getHTBH());
+            //获取逾期合同信息
+            ContractOverdue overdue = mySqlMapper.getOverdueContractInfo(yqht.getHTBH());
             if (null == overdue) {
                 continue;
             }
+            //校验这些逾期合同是否是真的逾期的情况
+            ContractOverdue check = mySqlMapper.checkOverdueContractIsRealOverdue(yqht.getHTBH());
+            if (null == check) {
+                continue;
+            }
+
+            if (overdue.getContractNumber().equals("sgctys202300326")) {
+                int a = 0;
+            }
+
+            contract = new Contract();
             //延期次数大于6次的设置成0次
+            //默认显示逾期
+            overdue.setIsOverdue(1);//逾期
             overdue.setOverdueCount(yqht.getCount() > 6 ? 0 : yqht.getCount());
             overdue.setLoanValidity(yqht.getSdyqdate());
             overdue.setAccumulationFundValidity(yqht.getGjjyqdate());
-            //查看是否已经交完款  交完款的 逾期设置为
-            overdue.setIsOverdue(0);//逾期
+            overdue.setDelFlag(1);//正常
+            overdue.setIsExist(0);//默认期房合同
+/*          如果是 当前合同已经交存完成或者不需要交存的 设置为 删除
+            if (2 == overdue.getPaymentStatus()) {
+                overdue.setDelFlag(0);
+                overdue.setIsOverdue(1);//逾期状态为正常
+            }*/
+
+
+            //查看 合同pay_way 付款方式 如果是 商贷 查看商贷逾期时间超过当前时间 设为逾期状态   公积金 查看公积金时间设超过当前时间设为 逾期状态  组合贷 有任何一个时间超过当前时间 设为逾期状态
+            if (3 == overdue.getPayWay()) {
+                //如果是没有商贷时间的 看首期款交存时间 是否超过三个月
+                if (null == overdue.getLoanValidity()) {
+                    if (cn.hutool.core.date.DateUtil.compare(getMonthDay(overdue.getPaymentTime(), 3), currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else if (cn.hutool.core.date.DateUtil.compare(overdue.getLoanValidity(), currentDate, "yyyy-MM-dd") >= 0) {
+                    overdue.setIsOverdue(0);//逾期状态为正常
+                } else {
+                    overdue.setIsOverdue(1);//逾期状态为逾期
+                }
+                date = null != overdue.getLoanValidity() ? overdue.getLoanValidity() : overdue.getPaymentTime();
+            } else if (4 == overdue.getPayWay()) {
+                if (null == overdue.getAccumulationFundValidity()) {
+                    if (cn.hutool.core.date.DateUtil.compare(getMonthDay(overdue.getPaymentTime(), 3), currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else if (cn.hutool.core.date.DateUtil.compare(overdue.getAccumulationFundValidity(), currentDate, "yyyy-MM-dd") >= 0) {
+                    overdue.setIsOverdue(0);//逾期状态为正常
+                } else {
+                    overdue.setIsOverdue(1);//逾期状态为逾期
+                }
+                date = null != overdue.getAccumulationFundValidity() ? overdue.getAccumulationFundValidity() : overdue.getPaymentTime();
+            } else if (5 == overdue.getPayWay()) {
+                if (null == overdue.getLoanValidity() && null == overdue.getAccumulationFundValidity()) {
+                    if (cn.hutool.core.date.DateUtil.compare(getMonthDay(overdue.getPaymentTime(), 3), currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else if (null != overdue.getLoanValidity() && null != overdue.getAccumulationFundValidity()) {
+                    Date selectOne = cn.hutool.core.date.DateUtil.compare(overdue.getLoanValidity(), overdue.getAccumulationFundValidity(), "yyyy-MM-dd") <= 0 ? overdue.getLoanValidity() : overdue.getAccumulationFundValidity();
+                    if (cn.hutool.core.date.DateUtil.compare(selectOne, currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else if (null == overdue.getLoanValidity() && null != overdue.getAccumulationFundValidity()) {
+                    if (cn.hutool.core.date.DateUtil.compare(overdue.getAccumulationFundValidity(), currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else if (null == overdue.getAccumulationFundValidity() && null != overdue.getLoanValidity()) {
+                    if (cn.hutool.core.date.DateUtil.compare(overdue.getLoanValidity(), currentDate, "yyyy-MM-dd") >= 0) {
+                        overdue.setIsOverdue(0);//逾期状态为正常
+                    } else {
+                        overdue.setIsOverdue(1);//逾期状态为逾期
+                    }
+                } else {
+                }
+
+                //获取逾期时间
+                if (null != overdue.getLoanValidity() && null != overdue.getAccumulationFundValidity()) {
+                    date = cn.hutool.core.date.DateUtil.compare(overdue.getLoanValidity(), overdue.getAccumulationFundValidity(), "yyyy-MM-dd") <= 0 ? overdue.getLoanValidity() : overdue.getAccumulationFundValidity();
+                } else if (null == overdue.getLoanValidity() && null == overdue.getAccumulationFundValidity()) {
+                    date = overdue.getPaymentTime();
+                } else if (null != overdue.getLoanValidity() && null == overdue.getAccumulationFundValidity()) {
+                    date = overdue.getLoanValidity();
+                } else if (null != overdue.getAccumulationFundValidity() && null == overdue.getLoanValidity()) {
+                    date = overdue.getAccumulationFundValidity();
+                }
+
+            } else {
+            }
+            //如果是 现房合同的 删除
+            if (null != yqht.getFWTYPE() && 0 == yqht.getFWTYPE()) {
+                overdue.setIsExist(1);//现房合同
+                overdue.setDelFlag(0);//默认删除
+                overdue.setIsOverdue(0);//默认逾期状态为正常
+            }
+            contract.setId(overdue.getContractId());
+            contract.setIsOverdue(overdue.getIsOverdue());
+            contract.setPaymentTime(date);
+            contractList.add(contract);
             list.add(overdue);
         }
 
-        if(!list.isEmpty()){
+        //先把合同的逾期状态置0  到初始数据的时候  逾期数据跟随范哥数据库设置了值
+        mySqlMapper.updateContractSetOverdue();
+
+        if (!list.isEmpty()) {
             mySqlMapper.insertBatchContractOverdue(list);
+            //根据逾期合同 重置 逾期
+            mySqlMapper.updatePaymeTime(contractList);
+        }
+
+        System.out.println("===============保存逾期合同结束=================");
+    }
+
+    /**
+     * 更新现有合同的首次交存时间
+     */
+    @Transactional
+    public void updateContractPaymentTime() {
+        System.out.println("===============更新首期款交存时间开始=================");
+        //获取首期已交存的合同
+        List<Contract> list = mySqlMapper.getContractBySqyjc();
+        List<Contract> data = new ArrayList<>();
+        Contract item = null;
+        for (Contract contract : list) {
+            //先从 范哥库查首期交存时间
+            Date paymentTime = oracleMapper.getTradeDateByBHP_jkbh(contract.getContractNumber());
+            if (null != paymentTime) {
+                item = new Contract();
+                item.setId(contract.getId());
+                item.setPaymentTime(paymentTime);
+                data.add(item);
+                continue;
+            }
+            //如果没有 在从自己库里查 首期交存时间
+            Date paymentTime2 = mySqlMapper.getFundTradeByContractId(contract.getId());
+            if (null != paymentTime2) {
+                item = new Contract();
+                item.setId(contract.getId());
+                item.setPaymentTime(paymentTime2);
+                data.add(item);
+                continue;
+            }
+
+            //处理免存的  初次按照创建时间
+            if (null != contract.getIsExempt() && 1 == contract.getIsExempt()) {
+                item = new Contract();
+                item.setId(contract.getId());
+                item.setPaymentTime(contract.getCreateTime());
+                data.add(item);
+                continue;
+            }
+
+        }
+
+        if (!data.isEmpty()) {
+            mySqlMapper.updatePaymeTime(data);
+        }
+
+        System.out.println("===============更新合同首次交存时间结束,共处理:" + data.size() + "条。=================");
+
+    }
+
+
+    /**
+     * 处理 2022年07月之前的合同 处理交存状态为 1 但是贷款已经放款了的 老的合同  变为状态 为交存完成
+     */
+    public void updateOldContractPaymentStatus() {
+        System.out.println("==============更新老合同交存状态=================");
+        //获取老合同
+        List<Contract> oldContract = mySqlMapper.getOldContract();
+        List<Contract> ids = new ArrayList<>();
+        Integer status = null;
+        for (Contract oc : oldContract) {
+            status = oc.getPaymentStatus();
+            //商贷
+            if (3 == oc.getPayWay()) {
+                Integer have = mySqlMapper.checkSdJcByContractId(oc.getId());
+                oc.setPaymentStatus(null == have ? oc.getPaymentStatus() : 2);
+            }//公积金贷款
+            else if (4 == oc.getPayWay()) {
+                Integer have = mySqlMapper.checkGjjJcByContractId(oc.getId());
+                oc.setPaymentStatus(null == have ? oc.getPaymentStatus() : 2);
+            }//组合贷
+            else if (5 == oc.getPayWay()) {
+                Integer sdhave = mySqlMapper.checkSdJcByContractId(oc.getId());
+                Integer gjjhave = mySqlMapper.checkGjjJcByContractId(oc.getId());
+                oc.setPaymentStatus((null == sdhave || null == gjjhave) ? oc.getPaymentStatus() : 2);
+            } else {
+
+            }
+
+            if (status != oc.getPaymentStatus()) {
+                ids.add(oc);
+            }
+        }
+
+        if (!ids.isEmpty()) {
+            mySqlMapper.updatPaymentStatus(ids);
+            System.out.println("==============更新老合同交存状态" + ids.size() + "条=================");
+        }
+    }
+
+    /**
+     * 处理 合同交存首期款交存 但是没有交易的 zjjgflag = 0 的是  改成免存状态
+     * 只处理拉取合同产生新的新的交存的数据
+     */
+    public void checkFundContractChangeIsExempt() {
+        System.out.println("==============更新合同免存状态开始=================");
+        List<Map<String,Object>> contractNumbers = mySqlMapper.getFundDelflag_0();
+        List<Long> numbers = new ArrayList<>();
+        for (Map<String,Object> item : contractNumbers) {
+            if (item.get("businessNumber").toString().startsWith("ZJ")) {
+                continue;
+            }
+
+            Integer zjjgflag = oracleMapper.getTradeCheckIsZjjgFlag_0(item.get("businessNumber").toString());
+            if (null == zjjgflag || zjjgflag == 1) {
+                continue;
+            }
+
+            numbers.add((Long) item.get("contractId"));
+        }
+
+        if(!numbers.isEmpty()){
+            mySqlMapper.updateIsExempt(numbers);
         }
 
+        System.out.println("==============更新合同免存状态结束,共处理:"+numbers.size()+"条=================");
     }
 }

+ 9 - 0
src/main/java/com/cool/bang/modules/oracle/domain/po/HtInfo.java

@@ -79,6 +79,7 @@ public class HtInfo {
     //实际交款
     private BigDecimal tradeAmount;
 
+    private Integer FWTYPE;//0 现房合同  1期房合同
 
     public String getHTBH() {
         return HTBH;
@@ -271,4 +272,12 @@ public class HtInfo {
     public void setTradeAmount(BigDecimal tradeAmount) {
         this.tradeAmount = tradeAmount;
     }
+
+    public Integer getFWTYPE() {
+        return FWTYPE;
+    }
+
+    public void setFWTYPE(Integer FWTYPE) {
+        this.FWTYPE = FWTYPE;
+    }
 }

+ 14 - 0
src/main/java/com/cool/bang/modules/oracle/mapper/OracleMapper.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -119,4 +120,17 @@ public interface OracleMapper {
      * @return
      */
     List<HtInfo> selectYqHtInfo();
+
+    /**
+     * 根据合同编号 查询第一次交存 的时间
+     * @param contractNumber
+     * @return
+     */
+    Date getTradeDateByBHP_jkbh(@Param("contractNumber") String contractNumber);
+
+    /**
+     * 根据业务编号查询 是否有 zjjgflag = 0的数据 置为 首付免存
+     * @return
+     */
+    Integer getTradeCheckIsZjjgFlag_0(@Param("number") String number);
 }

+ 126 - 4
src/main/resources/mapper/mysql/MySQLMapper.xml

@@ -127,14 +127,25 @@
         </foreach>
     </insert>
 
+    <update id="updateContractSetOverdue" >
+        update fc_contract set is_overdue = 0
+    </update>
+
+    <select id="getFundTradeByContractId" resultType="date">
+        select  cast(MAX(t.transaction_time) as date)
+            from fc_fund  f
+            left join fc_trade t on f.business_number = t.business_number
+            where f.payment_type = 1 AND payment_status IN(1,2) AND f.del_flag = 1 AND t.del_flag = 1 and contract_id = #{id}
+    </select>
+
     <insert id="insertBatchContractOverdue">
         insert into
         fc_contract_overdue (org_id,org_name,project_id,project_name,contract_id,contract_number,loan_validity,accumulation_fund_validity,
-                             pay_way,overdue_count,is_overdue,del_flag)
+                             pay_way,overdue_count,is_overdue,del_flag,is_exist)
         values
         <foreach collection="list" item="item" separator=",">
             (#{item.orgId},#{item.orgName},#{item.projectId},#{item.projectName},#{item.contractId},#{item.contractNumber},#{item.loanValidity},
-             #{item.accumulationFundValidity},#{item.payWay},#{item.overdueCount},#{item.isOverdue},1)
+             #{item.accumulationFundValidity},#{item.payWay},#{item.overdueCount},#{item.isOverdue},#{item.delFlag},#{item.isExist})
         </foreach>
     </insert>
 
@@ -473,11 +484,122 @@
         update fc_project t, p_lpb_xmxx t2 set t2.tgzt = 1 where t2.xmbh = t.project_number;
     </update>
 
-    <select id="getOverdueContract" resultType="com.cool.bang.modules.mysql.domain.ContractOverdue">
+    <select id="getOverdueContractInfo" resultType="com.cool.bang.modules.mysql.domain.ContractOverdue">
         select
             id AS contractId,contract_number AS contractNumber,org_id AS orgId,org_name AS orgName,project_id AS projectId,project_name AS projectName,
-            pay_way AS payWay
+            pay_way AS payWay,payment_status AS paymentStatus,payment_time AS paymentTime
         from fc_contract
         where contract_number = #{contractNumber} and is_refund = 0
     </select>
+
+    <select id="checkOverdueContractIsRealOverdue" resultType="com.cool.bang.modules.mysql.domain.ContractOverdue">
+        SELECT
+        c.id AS contractId,c.contract_number AS contractNumber,c.org_id AS orgId,c.org_name AS orgName,c.project_id AS projectId,
+        c.project_name AS projectName,c.pay_way AS payWay,c.payment_status AS paymentStatus
+        FROM
+        fc_contract c
+        LEFT JOIN fc_building_account ba ON c.building_account_id = ba.id
+        <where>
+            c.contract_number = #{contractNumber}
+            and c.is_refund = 0
+            AND c.payment_status = 1
+            AND c.pay_way IN (3,4,5)
+            <!-- 判断商贷贷款-->
+            AND IF((c.pay_way = 3),c.id NOT IN (SELECT contract_id FROM fc_fund WHERE payment_type = 3 AND payment_status = 2),1=1)
+            <!-- 判断公积金贷款-->
+            AND IF((c.pay_way = 4),c.id NOT IN (SELECT contract_id FROM fc_fund WHERE payment_type = 4 AND payment_status = 2),1=1)
+            <!-- 判断组合贷-->
+            AND IF(c.pay_way = 5,c.id NOT IN (
+            SELECT a.contract_id
+            FROM (
+            SELECT f1.contract_id
+            FROM
+            fc_fund f1
+            WHERE
+            f1.payment_type = 3
+            AND f1.payment_status = 2
+            UNION ALL
+            SELECT f2.contract_id
+            FROM
+            fc_fund f2
+            WHERE
+            f2.payment_type = 4
+            AND f2.payment_status = 2
+            ) a
+            GROUP BY
+            a.contract_id
+            HAVING
+            COUNT(a.contract_id)>1
+            ),1=1)
+            AND ba.state = 1
+            /*          AND DATE_FORMAT( date_add(c.sign_time, INTERVAL 3 MONTH ), '%Y-%m-%d' ) &lt;= DATE_FORMAT( SYSDATE(), '%Y-%m-%d' )*/
+/*            AND ( SELECT COUNT(1) FROM fc_contract_overdue o WHERE c.Id = o.contract_id )= 0;*/
+        </where>
+    </select>
+
+    <select id="getContractBySqyjc" resultType="com.cool.bang.modules.mysql.domain.Contract">
+        select id,contract_number AS contractNumber,is_exempt AS isExempt,create_time AS createTime
+        from fc_contract where payment_status = 1 and (payment_time is null  OR  payment_time = '')
+    </select>
+
+    <!--  更新合同首次交存时间  -->
+    <update id="updatePaymeTime" parameterType="java.util.List">
+        <foreach collection="params" item="item" index="index" open="" close="" separator=";">
+            update fc_contract
+            <set>
+                <if test="item.paymentTime != null">
+                    payment_time = #{item.paymentTime},
+                </if>
+                <if test="item.isOverdue != null">
+                    is_overdue = #{item.isOverdue},
+                </if>
+                update_time =sysdate()
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+
+    <update id="updateIsExempt"  parameterType="java.util.List">
+        <foreach collection="params" item="item" index="index" open="" close="" separator=";">
+            update fc_contract
+            set is_exempt = 1
+            where id = #{item}
+        </foreach>
+    </update>
+
+    <update id="updatPaymentStatus" parameterType="java.util.List">
+        <foreach collection="params" item="item" index="index" open="" close="" separator=";">
+            update fc_contract
+            <set>
+                payment_status = #{item.paymentStatus}
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
+
+    <select id="getOldContract" resultType="com.cool.bang.modules.mysql.domain.Contract">
+        select
+            c.id AS id,c.contract_number AS contractNumber,c.org_id AS orgId,c.org_name AS orgName,c.project_id AS projectId,
+            c.project_name AS projectName,c.pay_way AS payWay,c.payment_status AS paymentStatus
+        from
+            fc_contract c
+        where
+            c.payment_status = 1 and pay_way IN(3,4,5) and DATE_FORMAT(c.sign_time, '%Y-%m-%d' ) &lt; DATE_FORMAT('2022-07-01', '%Y-%m-%d' )
+    </select>
+
+    <select id="checkSdJcByContractId" resultType="integer">
+        SELECT 1 FROM fc_fund WHERE payment_type = 3 AND payment_status = 2 AND contract_id = #{contractId} LIMIT 1
+    </select>
+
+    <select id="checkGjjJcByContractId" resultType="integer">
+        SELECT 1 FROM fc_fund WHERE payment_type = 4 AND payment_status = 2 AND contract_id = #{contractId} LIMIT 1
+    </select>
+
+    <select id="getFundDelflag_0" resultType="hashmap">
+        SELECT business_number AS businessNumber,contract_id AS contractId
+        FROM fc_fund
+        WHERE del_flag = 0 and payment_type = 1 AND payment_status > 0
+        GROUP BY contract_id
+    </select>
+
 </mapper>

+ 14 - 0
src/main/resources/mapper/oracle/OracleMapper.xml

@@ -92,6 +92,7 @@
         t.sdyqdate AS sdyqdate,
         t.gjjyqdate AS gjjyqdate,
         t.htzj AS HTZJ,
+        t.FWTYPE,
         NVL(t.count,0) AS count
         FROM
         Bht t
@@ -365,4 +366,17 @@
             LEFT JOIN AREGITEM  ai ON a.AREGID = ai.AREGID AND ai.STATE = 1
         WHERE a.XMBH =#{xmbh} AND a.STATE = 1
     </select>
+
+    <select id="getTradeDateByBHP_jkbh" resultType="date">
+        SELECT MAX(t.TRADEDATE)
+            FROM BHT h
+            LEFT JOIN (SELECT * FROM BHTPAY WHERE PAYTYPE = 1 and STATE = 1 ) hp ON h.HTID = hp.HTID
+            LEFT JOIN (SELECT * FROM TRADE WHERE  TRADESTATE = 1  AND PAYTYPE != '09') t ON hp.JKBH = t.TRADENUM
+        WHERE h.HTBH = #{contractNumber} AND  h.STATE =1
+    </select>
+
+    <select id="getTradeCheckIsZjjgFlag_0" resultType="Integer">
+        select  ZJJGFLAG from trade where TRADENUM = #{number}
+    </select>
+
 </mapper>