zxz 3 år sedan
förälder
incheckning
9f7741e1af

+ 34 - 3
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/SalesClosingReportController.java

@@ -1,9 +1,11 @@
 package com.yh.saas.plugin.yiliangyiyun.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.yh.saas.plugin.yiliangyiyun.entity.SalesClosingReport;
+import com.yh.saas.plugin.yiliangyiyun.service.ISalesClosingReportService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
@@ -16,6 +18,35 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/salesClosingReport")
 public class SalesClosingReportController {
+    @Autowired
+    private ISalesClosingReportService salesClosingReportService;
+    /**
+     * 销售平仓统计列表
+     * @param salesClosingReport
+     * @return
+     */
+    @GetMapping("/selectSalesClosingOrder")
+    public Page<SalesClosingReport> selectSalesClosingOrder(SalesClosingReport salesClosingReport){
+        return salesClosingReportService.selectSalesClosingOrder(salesClosingReport);
+    }
+    /**
+     * 出纳付款
+     * @param salesClosingReport
+     * @return
+     */
+    @PostMapping("/api/payMoney")
+    public String payMoney(@RequestBody SalesClosingReport salesClosingReport){
+        return salesClosingReportService.payMoney(salesClosingReport);
+    }
+    /**
+     * 出纳收款
+     * @param salesClosingReport
+     * @return
+     */
+    @PostMapping("/api/collectMoney")
+    public String collectMoney(@RequestBody SalesClosingReport salesClosingReport){
+        return salesClosingReportService.collectMoney(salesClosingReport);
+    }
 
 }
 

+ 22 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/SalesClosingReport.java

@@ -3,7 +3,9 @@ package com.yh.saas.plugin.yiliangyiyun.entity;
 import java.util.Date;
 import com.baomidou.mybatisplus.activerecord.Model;
 import java.io.Serializable;
+import java.util.List;
 
+import com.baomidou.mybatisplus.annotations.TableField;
 import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
 import com.baomidou.mybatisplus.annotations.Version;
@@ -132,6 +134,26 @@ public class SalesClosingReport extends BaseModel<SalesClosingReport> {
      */
     private String workflowId;
 
+    /**
+     * 模糊查询
+     */
+    @TableField(exist = false)
+    private String searchKeyWord;
+
+    /**
+     *查询类型
+     */
+    @TableField(exist = false)
+    private String searchType;
+
+    @TableField(exist = false)
+    private List<SalesClosingReport> salesClosingReportList;
+
+    /**
+     *本次付款/收款金额
+     */
+    @TableField(exist = false)
+    private Float money;
 
     @Override
     protected Serializable pkVal() {

+ 17 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/mapper/SalesClosingReportMapper.java

@@ -3,6 +3,9 @@ package com.yh.saas.plugin.yiliangyiyun.mapper;
 import com.yh.saas.plugin.yiliangyiyun.entity.SalesClosingReport;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 销售平仓报表 Mapper 接口
@@ -12,5 +15,19 @@ import com.baomidou.mybatisplus.mapper.BaseMapper;
  * @since 2021-08-05
  */
 public interface SalesClosingReportMapper extends BaseMapper<SalesClosingReport> {
+    /**
+     * 根据条件查询销售平仓统计总数
+     *
+     * @param pageView
+     * @return
+     */
+    Integer getCountByCondition(Map<String, Object> pageView);
 
+    /**
+     * 根据条件查询销售平仓统计列表
+     *
+     * @param pageView
+     * @return
+     */
+    List<SalesClosingReport> getListByCondition(Map<String, Object> pageView);
 }

+ 19 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ISalesClosingReportService.java

@@ -1,5 +1,6 @@
 package com.yh.saas.plugin.yiliangyiyun.service;
 
+import com.baomidou.mybatisplus.plugins.Page;
 import com.yh.saas.plugin.yiliangyiyun.entity.SalesClosingReport;
 import com.baomidou.mybatisplus.service.IService;
 
@@ -13,4 +14,22 @@ import com.baomidou.mybatisplus.service.IService;
  */
 public interface ISalesClosingReportService extends IService<SalesClosingReport> {
 
+    /**
+     * 销售平仓统计列表
+     *
+     * @param salesClosingReport
+     * @return
+     */
+    Page<SalesClosingReport> selectSalesClosingOrder(SalesClosingReport salesClosingReport);
+    /**
+     * 出纳付款
+     * @param salesClosingReport
+     */
+    String payMoney(SalesClosingReport salesClosingReport);
+    /**
+     * 出纳收款
+     * @param salesClosingReport
+     */
+    String collectMoney(SalesClosingReport salesClosingReport);
+
 }

+ 147 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/SalesClosingReportServiceImpl.java

@@ -1,10 +1,28 @@
 package com.yh.saas.plugin.yiliangyiyun.service.impl;
 
+import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.google.common.collect.Lists;
+import com.winsea.svc.base.base.entity.CommonRoleResource;
+import com.winsea.svc.base.base.service.ICommonRoleResourceService;
+import com.winsea.svc.base.security.entity.User;
+import com.winsea.svc.base.security.util.AuthSecurityUtils;
+import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
 import com.yh.saas.plugin.yiliangyiyun.entity.SalesClosingReport;
 import com.yh.saas.plugin.yiliangyiyun.mapper.SalesClosingReportMapper;
 import com.yh.saas.plugin.yiliangyiyun.service.ISalesClosingReportService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.toolkit.workflow.service.IWorkflowService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +35,133 @@ import org.springframework.stereotype.Service;
 @Service
 public class SalesClosingReportServiceImpl extends ServiceImpl<SalesClosingReportMapper, SalesClosingReport> implements ISalesClosingReportService {
 
+    @Autowired
+    private IWorkflowService workflowService;
+
+    @SofaReference
+    private ICommonRoleResourceService roleResourceService;
+
+
+    /**
+     * 销售平仓统计列表
+     *
+     * @param salesClosingReport
+     * @return
+     */
+    @Override
+    public Page<SalesClosingReport> selectSalesClosingOrder(SalesClosingReport salesClosingReport) {
+        Map<String, Object> pageView = new HashMap<>();
+        pageView.put("startRecord", (salesClosingReport.getCurrentPage() - 1)
+                * salesClosingReport.getPageSize());
+        List<String> businessKeys = null;
+        businessKeys = workflowService.getTaskBusinessKeysByCode("PURCHASE-CLOSE-REPORT");
+        List<String> statusSet = new ArrayList<>();
+        List<String> resourceIdList = this.getResourceIdList();
+        if (resourceIdList.contains("PURCHAS")) { // 填写,提交    权限做完以后替换
+            List<String> statusList = Lists.newArrayList(StatusEnum.PUR_RETURN.getFlag());
+            statusSet.addAll(statusList);
+        }
+
+        //公司id
+        pageView.put("compId", salesClosingReport.getCompId());
+        pageView.put("searchKeyWord", salesClosingReport.getSearchKeyWord());
+        pageView.put("searchType", salesClosingReport.getSearchType());
+        pageView.put("pageSize", salesClosingReport.getPageSize());
+        pageView.put("currentPage", salesClosingReport.getCurrentPage());
+        pageView.put("contractNo", salesClosingReport.getContractNo());
+        pageView.put("businessKeys", businessKeys);
+        pageView.put("statusSet", statusSet);
+
+
+        // 查询销售订单总数
+        Integer dataCount = baseMapper.getCountByCondition(pageView);
+        List<SalesClosingReport> dataList = baseMapper.getListByCondition(pageView);
+        Page<SalesClosingReport> page = new Page<>();
+        page.setRecords(dataList == null ? Lists.newArrayList() : dataList);
+        page.setTotal(dataCount == null ? 0 : dataCount);
+        page.setCurrent(salesClosingReport.getCurrentPage());
+        page.setSize(salesClosingReport.getPageSize());
+        return page;
+    }
+
+    /**
+     * 出纳付款
+     * @param salesClosingReport
+     */
+    @Override
+    public String payMoney(SalesClosingReport salesClosingReport) {
+        List<SalesClosingReport> salesClosingReportList=salesClosingReport.getSalesClosingReportList();
+        Float money = salesClosingReport.getMoney();
+        //付款多条
+        if (!CollectionUtils.isEmpty(salesClosingReportList)) {
+            for (SalesClosingReport salesClosingReport1 : salesClosingReportList) {
+                //付款金额大于本次循环未付金额
+                if (money >= salesClosingReport1.getAmountNotPayable()) {
+                    money = money - salesClosingReport1.getAmountNotPayable();
+                    //全部付款
+                    salesClosingReport1.setStatus(StatusEnum.PUR_PAYaLL.getName());
+                    salesClosingReport1.setStatusFlag(StatusEnum.PUR_PAYaLL.getFlag());
+                    salesClosingReport1.setAmountEdPayable(salesClosingReport1.getAmountEdPayable() + salesClosingReport1.getAmountNotPayable());
+                    salesClosingReport1.setAmountNotPayable(0.0f);
+                    this.updateById(salesClosingReport1);
+                } else if (money > 0) {
+                    Float moneyTmp = money - salesClosingReport1.getAmountNotPayable();
+                    //部分付款
+                    salesClosingReport1.setStatus(StatusEnum.PUR_PAY.getName());
+                    salesClosingReport1.setStatusFlag(StatusEnum.PUR_PAY.getFlag());
+                    salesClosingReport1.setAmountEdPayable(salesClosingReport1.getAmountEdPayable() + money);
+                    salesClosingReport1.setAmountNotPayable(salesClosingReport1.getAmountNotPayable() - money);
+                    this.updateById(salesClosingReport1);
+                    money = moneyTmp;
+                } else {
+                    break;
+                }
+            }
+        }
+        return "OK";
+    }
+
+    /**
+     * 出纳收款
+     * @param salesClosingReport
+     */
+    @Override
+    public String collectMoney(SalesClosingReport salesClosingReport) {
+        List<SalesClosingReport> salesClosingReportList=salesClosingReport.getSalesClosingReportList();
+        Float money = salesClosingReport.getMoney();
+        //收款多条
+        if (!CollectionUtils.isEmpty(salesClosingReportList)) {
+            for (SalesClosingReport salesClosingReport1 : salesClosingReportList) {
+                //收款金额大于本次循环未收金额
+                if (money >= salesClosingReport1.getCollectionNotPayable()) {
+                    money = money - salesClosingReport1.getCollectionNotPayable();
+                    //全部收款
+                    salesClosingReport1.setStatus(StatusEnum.PUR_COLLECTaLL.getName());
+                    salesClosingReport1.setStatusFlag(StatusEnum.PUR_COLLECTaLL.getFlag());
+                    salesClosingReport1.setCollectionEdPayable(salesClosingReport1.getCollectionEdPayable() + salesClosingReport1.getCollectionNotPayable());
+                    salesClosingReport1.setCollectionNotPayable(0.0f);
+                    this.updateById(salesClosingReport1);
+                } else if (money > 0) {
+                    Float moneyTmp = money - salesClosingReport1.getCollectionNotPayable();
+                    //部分收款
+                    salesClosingReport1.setStatus(StatusEnum.PUR_COLLECT.getName());
+                    salesClosingReport1.setStatusFlag(StatusEnum.PUR_COLLECT.getFlag());
+                    salesClosingReport1.setCollectionEdPayable(salesClosingReport1.getCollectionEdPayable() + money);
+                    salesClosingReport1.setCollectionNotPayable(salesClosingReport1.getCollectionNotPayable() - money);
+                    this.updateById(salesClosingReport1);
+                    money = moneyTmp;
+                } else {
+                    break;
+                }
+            }
+        }
+        return "OK";
+    }
+    private List<String> getResourceIdList() {
+        User currentUser = AuthSecurityUtils.getCurrentUserInfo();
+        // 当前登录人主要角色
+        return roleResourceService.getBindResourcesByUserId(currentUser.getUserId()).stream()
+                .map(CommonRoleResource::getResourceId).collect(Collectors.toList());
+
+    }
 }

+ 106 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/SalesClosingReportMapper.xml

@@ -1,5 +1,110 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yh.saas.plugin.yiliangyiyun.mapper.SalesClosingReportMapper">
-
+    <!-- 获得销售平仓统计总数 -->
+    <select id="getCountByCondition" parameterType="Map" resultType="java.lang.Integer">
+        SELECT
+        COUNT(id)
+        FROM sales_closing_report
+        WHERE
+        delete_flag = '0'
+        AND comp_id = #{compId}
+        <if test="businessKeys != null and businessKeys.size > 0">
+            and(
+            <foreach collection="businessKeys" item="businessValue" open="(" close=")" separator="or">
+                id = #{businessValue}
+            </foreach>
+            )
+        </if>
+        <if test="statusSet != null and statusSet.size > 0">
+            or (
+            <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
+                t1.status_flag =
+                <if test="statusId != null">
+                    #{statusId}
+                </if>
+            </foreach>
+            )
+        </if>
+        <if test="searchType != null and searchType != ''">
+            <if test="searchType == 1">
+                AND status_flag = '1'
+            </if>
+            <if test="searchType == 2">
+                AND amount_ing_payable-amount_ed_payable>0
+            </if>
+            <if test="searchType == 3">
+                AND amount_ing_payable-amount_ed_payable=0
+            </if>
+        </if>
+        <if test="contractNo != null and contractNo != ''">
+            contract_no = #{contractNo}
+        </if>
+    </select>
+    <!-- 获得销售平仓统计列表 -->
+    <select id="getListByCondition" parameterType="Map"
+            resultType="com.yh.saas.plugin.yiliangyiyun.entity.SalesClosingReport">
+        SELECT
+        id,
+        comp_id as compId,
+        contract_no as contractNo,
+        close_position_date as closePositionDate,
+        closing_quantity as closingQuantity,
+        transaction_price as transactionPrice,
+        close_rate as closeRate,
+        basis_price as basisPrice,
+        amount_ing_payable as amountIngPayable,
+        amount_ed_payable as amountEdPayable,
+        amount_not_payable as amountNotPayable,
+        payment_date as paymentDate,
+        collection_ing_payable as collectionIngPayable,
+        collection_ed_payable as collectionEdPayable,
+        collection_not_payable as collectionNotPayable,
+        collection_date as collectionDate,
+        customer_name as customerName,
+        warehouse_name as warehouseName,
+        status,
+        status_flag as statusFlag,
+        approve_status as approveStatus,
+        workflow_id as workflowId
+        FROM sales_closing_report
+        WHERE
+        delete_flag = '0'
+        AND comp_id = #{compId}
+        <if test="businessKeys != null and businessKeys.size > 0">
+            and(
+            <foreach collection="businessKeys" item="businessValue" open="(" close=")" separator="or">
+                id = #{businessValue}
+            </foreach>
+            )
+        </if>
+        <if test="statusSet != null and statusSet.size > 0">
+            or (
+            <foreach collection="statusSet" item="statusId" separator="or" open="(" close=")">
+                t1.status_flag =
+                <if test="statusId != null">
+                    #{statusId}
+                </if>
+            </foreach>
+            )
+        </if>
+        <if test="searchType != null and searchType != ''">
+            <if test="searchType == 1">
+                AND status_flag = '1'
+            </if>
+            <if test="searchType == 2">
+                AND amount_ing_payable-amount_ed_payable>0
+            </if>
+            <if test="searchType == 3">
+                AND amount_ing_payable-amount_ed_payable=0
+            </if>
+        </if>
+        <if test="contractNo != null and contractNo != ''">
+            contract_no = #{contractNo}
+        </if>
+        ORDER BY update_date DESC
+        <if test="currentPage != null and currentPage != ''">
+            LIMIT ${startRecord}, ${pageSize}
+        </if>
+    </select>
 </mapper>