财务小工具问题修改

This commit is contained in:
cwchen 2024-07-12 10:48:37 +08:00
parent f03db9da75
commit da2a2accf6
7 changed files with 148 additions and 18 deletions

View File

@ -10,8 +10,8 @@ public class SupplierInfoBean {
String address;//联系地址
String telphone;//联系电话
String contacts;//联系人
float openDept;//期初欠款
float openNotInv;//期初未开票
Double openDept;//期初欠款
Double openNotInv;//期初未开票
String czy;//操作人
String czyName;//操作人名称
String czsj;//操作时间

View File

@ -7,6 +7,7 @@ import com.bonus.boot.manager.ca.stas.service.SupplierReconciliationService;
import com.bonus.boot.manager.manager.table.PageTableRequest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -14,8 +15,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Api(tags = "供应商对账")
@ -89,8 +90,16 @@ public class SupplierReconciliationController {
String sqjz=request.getParams().get("sqjz").toString();
List<PayablePartBean> beanList = service.getListForOrg(startTime,endTime,request.getParams());
// 上期结余明细
List<Map<String, Object>> lastBalance = getLastBalance(startTime, endTime, request.getParams());
if (CollectionUtils.isNotEmpty(beanList)) {
beanList.get(0).setDataMapList(lastBalance);
}
for (PayablePartBean one : beanList){
// 按组织和合同名称 (项目名称) 将期初应付款添加到应付金额中
BigDecimal value = handleData(one);
one.setJe(value);
one.setZqk(value.subtract(one.getYfje()));
request.getParams().put("sqjz",sqjz);
request.getParams().put("departmentId",one.getDepartmentId());
startDate = LocalDate.parse(startDateStr);
@ -126,4 +135,64 @@ public class SupplierReconciliationController {
list.add(beanList);
return list;
}
public BigDecimal handleData(PayablePartBean bean){
// 按组织和合同名称 (项目名称) 将期初应付款添加到应付金额中
BigDecimal value = new BigDecimal("0.00");
try {
BigDecimal initialAccountsPayable = dao.getInitialAccountsPayable(bean);
BigDecimal je = bean.getJe();
if(initialAccountsPayable!=null){
value = je.add(initialAccountsPayable);
}
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
public List<Map<String,Object>> getLastBalance(String startTime, String endTime, Map<String, Object> params){
List<Map<String,Object>> dataList = new ArrayList<>();
try {
List<Map<String,Object>> list = dao.getLastBalance(startTime,endTime,params);
Map<String, List<Map<String, Object>>> mapData = list.stream().collect(Collectors.groupingBy(item -> {
return String.valueOf(item.get("id")) ;
}));
mapData.forEach((k, v) -> {
Map<String, Object> dataMap = new HashMap<>(16);
// 初期欠款应付已付上期结余
BigDecimal initialDebt = new BigDecimal("0.00");
BigDecimal meet = new BigDecimal("0.00");
BigDecimal paid = new BigDecimal("0.00");
BigDecimal total = new BigDecimal("0.00");
for (int i = 0; i < v.size(); i++) {
// 初期欠款
Map<String, Object> map = v.get(i);
if (Objects.equals(Integer.parseInt(String.valueOf(map.get("type"))),0)){
dataMap.put("department",map.get("department"));
dataMap.put("proName",map.get("proName"));
initialDebt = initialDebt.add(BigDecimal.valueOf(Double.parseDouble(String.valueOf(map.get("amount")))));
break;
}
}
for (int i = 0; i < v.size(); i++) {
// 应付已付
Map<String, Object> map = v.get(i);
BigDecimal amount = BigDecimal.valueOf(Double.parseDouble(String.valueOf(map.get("amount"))));
if (Objects.equals(Integer.parseInt(String.valueOf(map.get("type"))),1)){
meet = meet.add(amount);
}
if (Objects.equals(Integer.parseInt(String.valueOf(map.get("type"))),2)){
paid = paid.add(amount);
}
}
total = initialDebt.add(meet).subtract(paid);
dataMap.put("total",total.doubleValue());
dataList.add(dataMap);
});
} catch (Exception e) {
e.printStackTrace();
}
return dataList;
}
}

View File

@ -41,4 +41,8 @@ public interface SupplierReconciliationDao {
BigDecimal getYearYfje(@Param("startTime") String startData, @Param("endTime") String endTime, @Param("params") Map<String, Object> params);
List<SupplierReconciliationBean> getSupplierInformation2(@Param("params") Map<String, Object> params);
BigDecimal getInitialAccountsPayable(PayablePartBean bean);
List<Map<String, Object>> getLastBalance(String startTime, String endTime, Map<String, Object> params);
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class PayablePartBean {
@ -29,5 +30,9 @@ public class PayablePartBean {
String departmentId;//组织机构
List<List<PayablePartBean>> subList;
/**
* 上期结余明细
* */
List<Map<String,Object>> dataMapList;
}

View File

@ -10,7 +10,7 @@
SELECT
GYSMC,
HTMC,
COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) AS bqyfk
COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) AS bqyfk
FROM
ca_im_payable
WHERE
@ -27,7 +27,7 @@
where IS_ACTIVE = '1' and id = #{htmc}
</select>
<select id="getPaid" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as paid
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as paid
from ca_im_payment_details
where IS_ACTIVE = '1' and htmc = #{htmc}
<if test="params.startTime != null and params.startTime !=''and params.endTime != null and params.endTime !='' ">
@ -36,7 +36,7 @@
</select>
<select id="getyfk" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as yfk
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as yfk
from ca_im_payable
WHERE
IS_ACTIVE = '1'
@ -44,14 +44,14 @@
</select>
<select id="getyifk" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2)) ),0) as yifk
select COALESCE(sum(CONVERT(je, DECIMAL(18,2)) ),0) as yifk
from ca_im_payment_details
WHERE
IS_ACTIVE = '1'
AND gysmc = #{params.gysmc}
</select>
<select id="getyfkBefor" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as yfkBefor
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as yfkBefor
from ca_im_payable
WHERE
IS_ACTIVE = '1'
@ -61,7 +61,7 @@
</if>
</select>
<select id="getyifkBefor" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as yifkBefor
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as yifkBefor
from ca_im_payment_details
WHERE
IS_ACTIVE = '1'
@ -102,7 +102,8 @@
round(sum(cip.je),2) je,
cbsi.CONTRACT_OR_PRO_NAME as htmc,
cbsi.department as departmentId,
po.name as department
po.name as department,
ANY_VALUE(cbsi.ID) AS id
from ca_im_payable cip
left join ca_bm_supplier_info cbsi on cbsi.is_active = '1' and cbsi.id = cip.htmc
left join pm_organization po on po.id = cbsi.department and po.is_active = '1'
@ -127,7 +128,7 @@
</select>
<select id="getyfje" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as je
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as je
from ca_im_payable
WHERE
IS_ACTIVE = '1'
@ -151,14 +152,14 @@
ORDER BY cipd.rq asc
</select>
<select id="getqcyfkNum" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(OPEN_DEBT, DECIMAL(10,2))),0) as qcyfk
select COALESCE(sum(CONVERT(OPEN_DEBT, DECIMAL(18,2))),0) as qcyfk
from ca_bm_supplier_info
WHERE
IS_ACTIVE = '1'
AND name = #{params.gysmc}
</select>
<select id="getYearJe" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as je
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as je
from ca_im_payable
WHERE
IS_ACTIVE = '1'
@ -168,7 +169,7 @@
</if>
</select>
<select id="getYearYfje" resultType="java.math.BigDecimal">
select COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) as yfje
select COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) as yfje
from ca_im_payment_details
WHERE
IS_ACTIVE = '1'
@ -182,7 +183,7 @@
SELECT
GYSMC,
HTMC,
COALESCE(sum(CONVERT(je, DECIMAL(10,2))),0) AS paid
COALESCE(sum(CONVERT(je, DECIMAL(18,2))),0) AS paid
FROM
ca_im_payment_details
WHERE
@ -193,4 +194,44 @@
</if>
GROUP BY HTMC
</select>
<!--按组织和合同名称 (项目名称) 查询期初应付款-->
<select id="getInitialAccountsPayable" resultType="java.math.BigDecimal">
SELECT OPEN_DEBT AS openDebt
FROM ca_bm_supplier_info
WHERE IS_ACTIVE = '1' AND ID = #{id}
</select>
<!--上期结余-->
<select id="getLastBalance" resultType="java.util.Map">
SELECT cbsi.CONTRACT_OR_PRO_NAME AS proName,
po.name AS department,
cbsi.department AS departmentId,
cbsi.OPEN_DEBT AS amount,
0 AS type,
cbsi.id
FROM ca_bm_supplier_info cbsi
LEFT JOIN pm_organization po on po.id = cbsi.department and po.is_active = '1'
WHERE cbsi.NAME = #{params.gysmc} AND cbsi.IS_ACTIVE = '1'
UNION ALL
SELECT cbsi.CONTRACT_OR_PRO_NAME AS proName,
po.name AS department,
cbsi.department AS departmentId,
cip.JE AS amount,
1 AS type,
cbsi.id
FROM ca_bm_supplier_info cbsi
LEFT JOIN pm_organization po on po.id = cbsi.department and po.is_active = '1'
INNER JOIN ca_im_payable cip on cip.htmc = cbsi.id AND cip.IS_ACTIVE = '1' AND RQ &lt; #{params.startTime}
WHERE cbsi.NAME = #{params.gysmc} AND cbsi.IS_ACTIVE = '1'
UNION ALL
SELECT cbsi.CONTRACT_OR_PRO_NAME AS proName,
po.name AS department,
cbsi.department AS departmentId,
cipd.JE AS amount,
2 AS type,
cbsi.id
FROM ca_bm_supplier_info cbsi
LEFT JOIN pm_organization po ON po.id = cbsi.department and po.is_active = '1'
INNER JOIN ca_im_payment_details cipd ON cipd.htmc = cbsi.id AND cipd.IS_ACTIVE = '1' AND RQ &lt; #{params.startTime}
WHERE cbsi.NAME = #{params.gysmc} AND cbsi.IS_ACTIVE = '1'
</select>
</mapper>

View File

@ -190,10 +190,19 @@ function listForOrg(gysmc,startTime,endTime,sqjz) {
function getListForOrg(data) {
$("#dd-table").empty();
var html="";
let cent = '';
for (var i = 0; i < data.length; i++) {
var list = data[i];
for (var j =0;j<list.length;j++){
if(j === 0){
const dataMapList =list[0].dataMapList;
if(dataMapList && dataMapList.length > 0){
$.each(dataMapList,function (index,item){
cent += '<tr class="lastBalance-td" style="font-size: 17px;"><td colspan="3">'+item.department+'</td><td colspan="3">'+item.proName+'</td><td colspan="3">'+item.total+'</td></tr>';
})
}
}
html +="<tr>";
// html +="<td colspan='3' attr-index='"+j+"' class='showOrHide' onclick='showOrHide("+j+")'>"+list[j].department+"</td>";
html +="<td style='background-color: #ffffff !important;' colspan='3' ><i class='layui-icon layui-icon-triangle-r main-color main-cursor showOrHide' attr-index='"+j+"'></i>"+list[j].department+"</td>";
@ -269,6 +278,8 @@ function getListForOrg(data) {
}
}
$("#dd-table").append(html);
$('#dt-table thead').find('.lastBalance-td').remove();
$("#lastBalance").before(cent);
}
//点击箭头隐藏或显示

View File

@ -192,7 +192,7 @@
<!-- <th>总欠款</th>-->
<!-- </tr>-->
<tr>
<tr id="lastBalance">
<th colspan="5">上期结余</th>
<th colspan="4" >
<input type="text" name="sqjz" id="sqjz" readonly class="layui-input" style="text-align: center">