Browse Source

历史付款记录

caozj 2 years ago
parent
commit
cc6d7167a3

+ 55 - 0
hx-common/hx-tool/src/main/java/com/fjhx/utils/DateUtil.java

@@ -0,0 +1,55 @@
+package com.fjhx.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * @Author:caozj
+ * @DATE:2022/7/14 17:23
+ */
+public class DateUtil {
+    /**
+     * 时间添加或减少
+     *
+     * @param str
+     * @param day
+     * @return
+     */
+    public static String dateMinusMonth(String str, int day) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            Date dt = null;//将字符串生成Date
+            dt = sdf.parse(str);
+            Calendar rightNow = Calendar.getInstance();
+            rightNow.setTime(dt);//使用给定的 Date 设置此 Calendar 的时间。
+            rightNow.add(Calendar.DAY_OF_MONTH, day);
+            Date dt1 = rightNow.getTime();//返回一个表示此 Calendar 时间值的 Date 对象。
+            String reStr = sdf.format(dt1);//将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer。
+            return reStr;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 判断日期距离现在多少天
+     * @param date
+     * @return
+     * @throws ParseException
+     */
+    public static String differenceDate(String date) throws ParseException {
+        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");//指定格式时间转换
+        Date d=simpleDateFormat.parse(date);//转换成日期
+        long datetime=d.getTime();//时间转换成毫秒值
+        long todaytime=new Date().getTime();//获取当前日期毫秒值
+        long Difference=todaytime-datetime;//差值
+        return String.valueOf(Difference/1000/60/60/24);
+    }
+
+    public static void main(String[] args) throws ParseException {
+
+    }
+}

+ 10 - 0
hx-common/hx-tool/src/main/java/com/fjhx/utils/ListUtil.java

@@ -1,6 +1,7 @@
 package com.fjhx.utils;
 
 import io.swagger.models.auth.In;
+import org.springblade.core.tool.utils.StringUtil;
 
 import java.util.HashMap;
 import java.util.List;
@@ -24,4 +25,13 @@ public class ListUtil {
         return map;
     }
 
+    public static Boolean checkList(List<String> list,String eq){
+        for(String i:list){
+            if(!StringUtil.equals(i,eq)){
+               return false;
+            }
+        }
+        return true;
+    }
+
 }

+ 43 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/purchase/PurchaseContract.java

@@ -3,6 +3,8 @@ package com.fjhx.entity.purchase;
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import java.util.Date;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fjhx.base.BaseEntity;
@@ -192,4 +194,45 @@ public class PurchaseContract extends BasicEntity {
     @TableField(exist = false)
     private String supplierName;
 
+    /**
+     * 物料名称
+     */
+    @TableField(exist = false)
+    private String materialSpec;
+
+    /**
+     * 入库时间
+     */
+    @TableField(exist = false)
+    private String completeStockTime;
+
+    /**
+     * 质检状态集合
+     */
+    @TableField(exist = false)
+    private String quantityStatus;
+
+    /**
+     * 合同状态集合
+     */
+    @TableField(exist = false)
+    private String contractStatus;
+
+    /**
+     * 发票总金额
+     */
+    @TableField(exist = false)
+    private BigDecimal contractAmount;
+
+    /**
+     * 校验参数
+     */
+    @TableField(exist = false)
+    private Map<String,Object> check;
+
+    /**
+     * 交期
+     */
+    @TableField(exist = false)
+    private Integer accountDate;
 }

+ 37 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/controller/PurchaseContractController.java

@@ -1,12 +1,15 @@
 package com.fjhx.purchase.controller;
 
+import com.fjhx.base.ListPageMap;
 import com.fjhx.entity.purchase.PurchaseContract;
 import com.fjhx.entity.supplier.Supplier;
+import oracle.jdbc.proxy.annotation.Post;
 import org.springblade.core.tool.api.R;
 import com.fjhx.purchase.service.PurchaseContractService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -59,6 +62,40 @@ public class PurchaseContractController {
         return R.success(data);
     }
 
+    /**
+     * 列表
+     * @param condition
+     * @return
+     */
+    @PostMapping("/pay/list")
+    public R list(@RequestBody Map<String, Object> condition) throws ParseException {
+        ListPageMap.getListPageMap(condition);
+        List<PurchaseContract> result = purchaseContractService.getPayList(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 列表条数
+     * @param condition
+     * @return
+     */
+    @PostMapping("/pay/list/count")
+    public R listCount(@RequestBody Map<String, Object> condition){
+        ListPageMap.getListPageMap(condition);
+        Integer count = purchaseContractService.getPayListCount(condition);
+        return R.success(count);
+    }
+
+    /**
+     * 列表条数
+     * @param condition
+     * @return
+     */
+    @PostMapping("/pay/statistics")
+    public R statistics(@RequestBody Map<String, Object> condition){
+        Map<String,Object> map = purchaseContractService.getPayGroupBySu(condition);
+        return R.success(map);
+    }
 
 }
 

+ 24 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.java

@@ -31,4 +31,28 @@ public interface PurchaseContractMapper extends BaseMapper<PurchaseContract> {
      */
     @TenantIgnore
     List<Map<String,Object>> historyPayList();
+
+    /**
+     * 历史付款列表
+     * @param condition
+     * @return
+     */
+    @TenantIgnore
+    List<PurchaseContract> getPayList(Map<String,Object> condition);
+
+    /**
+     * 历史付款列表-条数
+     * @param condition
+     * @return
+     */
+    @TenantIgnore
+    Integer getPayListCount(Map<String,Object> condition);
+
+    /**
+     * 统计供应商总付款金额
+     * @param condition
+     * @return
+     */
+    @TenantIgnore
+    Map<String,Object> getPayGroupBySu(Map<String,Object> condition);
 }

+ 66 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/mapper/PurchaseContractMapper.xml

@@ -43,4 +43,70 @@
         WHERE
             fac.seq = 1
     </select>
+
+    <select id="getPayList" resultType="com.fjhx.entity.purchase.PurchaseContract">
+        SELECT
+           <include refid="sql_filed"/>
+        FROM
+            apply_purchase_pay t5
+        LEFT JOIN purchase_contract t1 ON t5.PurchaseBillNo = t1.PurchaseBillNo
+        LEFT JOIN supplier t2 ON t1.SupplierId = t2.ID
+        LEFT JOIN material t3 ON t1.MaterialCode = t3.`Code`
+        LEFT JOIN stock_inoutbill t4 ON t1.PurchaseBillNo = t4.FromBillNo
+        <include refid="pay_condition"/>
+        ORDER BY t5.ApprovalTime DESC
+        <include refid="com.fjhx.supplier.mapper.SupplierMapper.sql_limit"/>
+    </select>
+    <select id="getPayListCount" resultType="java.lang.Integer">
+        SELECT
+            count (1)
+        FROM
+        apply_purchase_pay t5
+        LEFT JOIN purchase_contract t1 ON t5.PurchaseBillNo = t1.PurchaseBillNo
+        LEFT JOIN supplier t2 ON t1.SupplierId = t2.ID
+        LEFT JOIN material t3 ON t1.MaterialCode = t3.`Code`
+        LEFT JOIN stock_inoutbill t4 ON t1.PurchaseBillNo = t4.FromBillNo
+        <include refid="pay_condition"/>
+    </select>
+    <select id="getPayGroupBySu" resultType="java.util.Map">
+        SELECT
+            IFNULL( SUM( t1.HadPayAmount ), 0 ) AS sumMoney,
+            IFNULL( t2.`Name`, '' ) AS supplierName,
+            IFNULL(t2.`id`,'') AS supplierId
+        FROM
+            apply_purchase_pay t5
+        LEFT JOIN purchase_contract t1 ON t5.PurchaseBillNo = t1.PurchaseBillNo
+        LEFT JOIN supplier t2 ON t1.SupplierId = t2.ID
+        LEFT JOIN material t3 ON t1.MaterialCode = t3.`Code`
+        <include refid="pay_condition"/>
+        GROUP BY t2.ID
+    </select>
+    <sql id="pay_condition">
+        <where>
+            t5.ApplyPayState = 2
+            <if test="supplierName neq null and supplierName neq '' ">
+                AND (INSTR(t2.`Name`, #{supplierName}) > 0)
+            </if>
+            <if test="materialName neq null and materialName neq '' ">
+                AND (INSTR(t3.`Name`, #{materialName}) > 0)
+            </if>
+            <if test="strTime neq null and strTime neq '' ">
+                and t5.ApprovalTime &gt;= #{strTime,jdbcType=VARCHAR}
+            </if>
+            <if test="endTime neq null and endTime neq '' ">
+                and t5.ApprovalTime &lt;= #{endTime,jdbcType=VARCHAR}
+            </if>
+        </where>
+    </sql>
+    <sql id="sql_filed">
+        t1.*,
+        t2.`Name` AS supplierName,
+        t3.`Name` AS materialName,
+        t3.Spec AS materialSpec,
+        DATE_FORMAT(t4.CompleteStockTime,'%Y-%m-%d') AS completeStockTime,
+        IFNULL(t2.AccountDate,0) AS accountDate,
+        ( SELECT GROUP_CONCAT( CheckFinish ) FROM stock_quantitycheck WHERE PurchaseBillNo = t1.PurchaseBillNo ) AS quantityStatus,
+        ( SELECT GROUP_CONCAT( ContractDocType ) FROM purchase_contractdetail WHERE PurchaseBillNo = t1.PurchaseBillNo ) AS contractStatus,
+        ( SELECT SUM( Amount ) FROM purchase_contractdetail WHERE PurchaseBillNo = t1.PurchaseBillNo AND ContractDocType = 1 ) AS contractAmount
+    </sql>
 </mapper>

+ 22 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/service/PurchaseContractService.java

@@ -3,6 +3,7 @@ package com.fjhx.purchase.service;
 import com.fjhx.entity.purchase.PurchaseContract;
 import com.fjhx.base.BaseService;
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -35,4 +36,25 @@ public interface PurchaseContractService extends BaseService<PurchaseContract> {
      * @return
      */
     List<Map<String,Object>> historyPayList();
+
+    /**
+     * 获取历史付款列表
+     * @param condition
+     * @return
+     */
+    List<PurchaseContract> getPayList(Map<String,Object> condition) throws ParseException;
+
+    /**
+     * 获取历史付款列表--条数
+     * @param condition
+     * @return
+     */
+    Integer getPayListCount(Map<String,Object> condition);
+
+    /**
+     * 统计供应商总付款金额
+     * @param condition
+     * @return
+     */
+    Map<String,Object> getPayGroupBySu(Map<String,Object> condition);
 }

+ 71 - 0
hx-service/storage/src/main/java/com/fjhx/purchase/service/impl/PurchaseContractServiceImpl.java

@@ -3,13 +3,19 @@ package com.fjhx.purchase.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.utils.DateUtil;
+import com.fjhx.utils.ListUtil;
 import com.fjhx.utils.WrapperUtil;
 import com.fjhx.entity.purchase.PurchaseContract;
 import com.fjhx.purchase.mapper.PurchaseContractMapper;
 import com.fjhx.purchase.service.PurchaseContractService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -56,4 +62,69 @@ public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMap
     public List<Map<String,Object>> historyPayList() {
         return baseMapper.historyPayList();
     }
+
+    /**
+     * 历史付款列表
+     * @param condition
+     * @return
+     */
+    @Override
+    public List<PurchaseContract> getPayList(Map<String, Object> condition) throws ParseException {
+        List<PurchaseContract> list = baseMapper.getPayList(condition);
+        Map<String,Object> map = new HashMap<>();
+        //初始化map集合
+        map.put("subscribeCheck",true);
+        map.put("inoutBillCheck",false);
+        map.put("quantityCheck",false);
+        map.put("ContractCheck",false);
+        map.put("invoiceCheck",false);
+        map.put("payDate",null);
+        for(PurchaseContract p:list){
+            //处理是否入库判定
+            if(ObjectUtil.isNotEmpty(p.getPurContractState())&&p.getPurContractState()==3){
+                map.put("inoutBillCheck",true);
+            }
+            //处理是否质检判定
+            if(ObjectUtil.isNotEmpty(p.getQuantityStatus())){
+                map.put("quantityCheck",ListUtil.checkList(Arrays.asList(p.getQuantityStatus()),"1"));
+            }
+            //处理合同判定
+            if(ObjectUtil.isNotEmpty(p.getContractStatus())&&
+                    p.getContractStatus().contains("3")){
+                map.put("ContractCheck",true);
+            }
+            //处理发票判定
+            if(ObjectUtil.isNotEmpty(p.getContractAmount())
+                &&p.getContractAmount().compareTo(p.getApplyPayAmount())>-1){
+                map.put("invoiceCheck",true);
+            }
+            //处理付款期限
+            if(ObjectUtil.isNotEmpty(p.getCompleteStockTime())){
+                String date = DateUtil.dateMinusMonth(p.getCompleteStockTime(),p.getAccountDate());
+                map.put("payDate",DateUtil.differenceDate(date));
+            }
+            p.setCheck(map);
+        }
+        return list;
+    }
+
+    /**
+     * 历史付款列表--条数
+     * @param condition
+     * @return
+     */
+    @Override
+    public Integer getPayListCount(Map<String, Object> condition) {
+        return baseMapper.getPayListCount(condition);
+    }
+
+    /**
+     * 统计供应商总付款金额
+     * @param condition
+     * @return
+     */
+    @Override
+    public Map<String, Object> getPayGroupBySu(Map<String, Object> condition) {
+        return baseMapper.getPayGroupBySu(condition);
+    }
 }