Browse Source

2023年11月17日17:32:04

纪新园 2 years ago
parent
commit
deeafb5422
13 changed files with 170 additions and 202 deletions
  1. 16 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/ListAccBillVO.java
  2. 0 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java
  3. 2 0
      blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java
  4. 20 7
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/controller/ReportsController.java
  5. 5 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/IReportsService.java
  6. 72 2
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  7. 0 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.java
  8. 14 142
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  9. 9 11
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java
  10. 0 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFinAccBillsService.java
  11. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  12. 5 6
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  13. 25 27
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

+ 16 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/ListAccBillVO.java

@@ -10,7 +10,7 @@ import java.util.List;
  * @date : 2023/11/14
  */
 @Data
-public class ListAccBillVO {
+public class ListAccBillVO extends FinAccBills {
 
 	/**
 	 * 审核状态 0 新建费用 1 已请核 2 审核中 3 驳回 4 通过
@@ -28,6 +28,11 @@ public class ListAccBillVO {
 	private Integer isSignfor;
 
 	/**
+	 * 签收日期
+	 */
+	private List<String> signforDateList;
+
+	/**
 	 * 收付 D=收 C=付
 	 */
 	private String dc;
@@ -77,6 +82,11 @@ public class ListAccBillVO {
 	private Integer isChecked;
 
 	/**
+	 * 对账单编号
+	 */
+	private String checkBillNo;
+
+	/**
 	 * 财务日期
 	 */
 	private List<String> billDateList;
@@ -136,4 +146,9 @@ public class ListAccBillVO {
 	 */
 	private String bookingNo;
 
+	/**
+	 * 业务类型,1=对账单 2=结算单
+	 */
+	private String type;
+
 }

+ 0 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java

@@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.los.finance.fee.entity.FinAccBills;
@@ -103,7 +102,6 @@ public class FinAccBillsVO extends FinAccBills {
 	private String lineEnName;
 
 	/**
-	 *
 	 * 箱号
 	 */
 	private String cntrNo;

+ 2 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -765,6 +765,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 						archivesR.setUpdateUser(AuthUtil.getUserId());
 						archivesR.setAddress(tradingBox.getAddress());
 						archivesR.setAddressId(tradingBox.getAddressId());
+						archivesR.setNewDate(tradingBox.getRentDate());
 						archivesMapper.updateById(archivesR);
 					} else {
 						archivesR.setBoxAccessStatus("空箱入场");
@@ -774,6 +775,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 						archivesR.setUpdateUser(AuthUtil.getUserId());
 						archivesR.setAddress(tradingBox.getAddress());
 						archivesR.setAddressId(tradingBox.getAddressId());
+						archivesR.setNewDate(tradingBox.getRentDate());
 						archivesMapper.updateById(archivesR);
 					}
 					archivesTrajectory.setStatus("退租");

+ 20 - 7
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/controller/ReportsController.java

@@ -16,23 +16,23 @@
  */
 package org.springblade.los.basic.reports.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
-import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.basic.reports.entity.Reports;
-import org.springblade.los.basic.reports.vo.ReportsVO;
 import org.springblade.los.basic.reports.service.IReportsService;
-import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.los.basic.reports.vo.ReportsVO;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
 
 /**
  * 基础资料-报表管理 控制器
@@ -122,5 +122,18 @@ public class ReportsController extends BladeController {
 		return R.status(reportsService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 获取模本数据加信息
+	 */
+	@GetMapping("/getReportData")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入reports")
+	public R getReportData(@RequestParam(value = "billId") String billId,
+						   @RequestParam(value = "reportCode", required = false) String reportCode,
+						   @RequestParam(value = "groupCode", required = false) String groupCode
+	) {
+		return reportsService.getReportData(billId, reportCode, groupCode);
+	}
+
 
 }

+ 5 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/IReportsService.java

@@ -45,4 +45,9 @@ public interface IReportsService extends IService<Reports> {
 	 * @return
 	 */
 	R submit(Reports reports);
+
+	/**
+	 * 获取模本数据加信息
+	 */
+    R getReportData(String billId, String reportCode, String groupCode);
 }

+ 72 - 2
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.basic.reports.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,11 +27,15 @@ import org.springblade.los.basic.reports.entity.Reports;
 import org.springblade.los.basic.reports.mapper.ReportsMapper;
 import org.springblade.los.basic.reports.service.IReportsService;
 import org.springblade.los.basic.reports.vo.ReportsVO;
+import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.service.IBillsService;
+import org.springblade.los.finance.fee.entity.FeeCenter;
+import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 基础资料-报表管理 服务实现类
@@ -44,6 +49,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 
 	private final ISysClient sysClient;
 
+	private final IBillsService billsService;
+
+	private final IFeeCenterService feeCenterService;
+
 	@Override
 	public IPage<ReportsVO> selectReportsPage(IPage<ReportsVO> page, ReportsVO reports) {
 		return page.setRecords(baseMapper.selectReportsPage(page, reports));
@@ -72,4 +81,65 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 		return R.data(reports);
 	}
 
+	@Override
+	public R getReportData(String billId, String reportCode, String groupCode) {
+		Map<String, Object> map = new HashMap<>();
+		Reports reports = baseMapper.selectOne(new LambdaQueryWrapper<Reports>()
+			.eq(Reports::getCode, reportCode)
+			.eq(Reports::getGroupCode, groupCode)
+			.eq(Reports::getTenantId, AuthUtil.getTenantId())
+			.eq(Reports::getIsDeleted, 0)
+			.eq(Reports::getStatus, 0));
+		if (reports == null) {
+			return R.data(map);
+		}
+		List<Bills> list = new ArrayList<>();
+		if ("SE".equals(reports.getBusinessType())) {
+			Bills bills = billsService.getById(billId);
+			if (bills != null) {
+				List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getPid, bills.getId())
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0));
+				if (feeCenterList.size() > 0) {
+					bills.setFeeCenterListC(feeCenterList.stream()
+						.filter(e -> "C".equals(e.getDc()) && e.getPid().equals(bills.getId()))
+						.collect(Collectors.toList()));
+					bills.setFeeCenterListD(feeCenterList.stream()
+						.filter(e -> "D".equals(e.getDc()) && e.getPid().equals(bills.getId()))
+						.collect(Collectors.toList()));
+				}
+				if (!"DD".equals(bills.getBillType())) {
+					List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
+						.eq(Bills::getMasterId, bills.getId())
+						.eq(Bills::getTenantId, AuthUtil.getTenantId())
+						.eq(Bills::getIsDeleted, 0));
+					if (billsList.size() > 0) {
+						List<Long> ids = billsList.stream().map(Bills::getId).filter(Objects::nonNull).collect(Collectors.toList());
+						if (ids.size() > 0) {
+							List<FeeCenter> feeCenterListMh = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+								.in(FeeCenter::getPid, ids)
+								.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+								.eq(FeeCenter::getIsDeleted, 0)
+								.eq(FeeCenter::getDc, "C"));
+							for (Bills item : billsList) {
+								item.setFeeCenterListC(feeCenterListMh.stream()
+									.filter(e -> "C".equals(e.getDc()) && e.getPid().equals(item.getId()))
+									.collect(Collectors.toList()));
+								item.setFeeCenterListD(feeCenterListMh.stream()
+									.filter(e -> "D".equals(e.getDc()) && e.getPid().equals(item.getId()))
+									.collect(Collectors.toList()));
+							}
+						}
+						list.addAll(billsList);
+					}
+				}
+				list.add(0, bills);
+			}
+		}
+		map.put("data", list);
+		map.put("url", reports.getUrl());
+		return R.data(map);
+	}
+
 }

+ 0 - 2
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.java

@@ -45,6 +45,4 @@ public interface BillsMapper extends BaseMapper<Bills> {
 	List<BillsVO> selectBillsPage(IPage page, BillsVO bills);
 
     List<FinAccBillsVO> listAccBill(@Param("acc") ListAccBillVO finAccBills);
-
-    List<FinAccBillsVO> listAccBillV2(@Param("acc") ListAccBillVO listAccBillVO);
 }

+ 14 - 142
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -323,149 +323,15 @@
         acc.is_deleted = '0'
         AND fee.is_deleted = '0'
         and bill.is_deleted = '0'
-        <if test="acc.auditStatus != null and acc.auditStatus !=''">
-            and fee.audit_status = #{acc.auditStatus}
+        <if test='acc.type != null and acc.type != "" and acc.type == "2"'>
+            and acc.amount_dr_loc != acc.stl_amount_dr_loc
         </if>
-        <if test="acc.corpCnName != null and acc.corpCnName != ''">
-            and fee.corp_id = #{acc.corpCnName}
-        </if>
-        <if test="acc.isSignfor != null">
-            and fee.is_signfor = #{acc.isSignfor}
+        <if test='acc.type != null and acc.type != "" and acc.type == "3"'>
+            and acc.amount_cr_loc != acc.stl_amount_cr_loc
         </if>
         <if test="acc.dc != null and acc.dc != ''">
             and fee.dc = #{acc.dc}
         </if>
-        <if test="acc.curCode != null and acc.curCode != ''">
-            and fee.cur_code = #{acc.curCode}
-        </if>
-        <if test="acc.srcType != null and acc.srcType != ''">
-            and fee.src_type = #{acc.srcType}
-        </if>
-        <if test="acc.srcCnName != null and acc.srcCnName != ''">
-            and fee.src_id = #{acc.srcCnName}
-        </if>
-        <if test="acc.isCleared != null">
-            and acc.is_cleared = #{acc.isCleared}
-        </if>
-        <if test="acc.billNo != null and acc.billNo != ''">
-            and fee.bill_no like concat('%', #{acc.billNo}, '%')
-        </if>
-        <if test="acc.accBillNo != null and acc.accBillNo != ''">
-            and fee.acc_bill_no like concat('%', #{acc.accBillNo}, '%')
-        </if>
-        <if test="acc.mblno != null and acc.mblno != ''">
-            and fee.mblno like concat('%', #{acc.mblno}, '%')
-        </if>
-        <if test="acc.hblno != null and acc.hblno != ''">
-            and fee.hblno like concat('%', #{acc.hblno}, '%')
-        </if>
-        <if test="acc.isChecked != null">
-            and acc.is_checked = #{acc.isChecked}
-        </if>
-        <if test="acc.billDateList != null and acc.billDateList != '' and acc.billDateList[0] != ''">
-            and acc.bill_date &gt;= #{acc.billDateList[0]}
-        </if>
-        <if test="acc.billDateList != null and acc.billDateList != '' and acc.billDateList[1] != ''">
-            and acc.bill_date &lt;= #{acc.billDateList[1]}
-        </if>
-        <if test="acc.approveTimeList != null and acc.approveTimeList != '' and acc.approveTimeList[0] != ''">
-            and fee.approve_time &gt;= #{acc.approveTimeList[0]}
-        </if>
-        <if test="acc.approveTimeList != null and acc.approveTimeList != '' and acc.approveTimeList[1] != ''">
-            and fee.approve_time &lt;= #{acc.approveTimeList[1]}
-        </if>
-        <if test="acc.queryAmount != null and acc.queryAmount != ''">
-            and (acc.amount_dr_loc = #{acc.queryAmount} or acc.amount_cr_loc = #{acc.queryAmount})
-        </if>
-        <if test="acc.businessType != null and acc.businessType != ''">
-            and fee.business_type = #{acc.businessType}
-        </if>
-        <if test="acc.invoiceStatus != null">
-            and fee.invoice_status = #{acc.invoiceStatus}
-        </if>
-        <if test="acc.vesselCnName != null and acc.vesselCnName != ''">
-            and ( acc.vessel_cn_name like concat('%', #{acc.vesselCnName}, '%') or acc.vessel_en_name like concat('%',
-            #{acc.vesselCnName}, '%') )
-        </if>
-        <if test="acc.voyageNo != null and acc.voyageNo != ''">
-            and acc.voyage_no like concat('%', #{acc.voyageNo}, '%')
-        </if>
-        <if test="acc.threeInspectionsNo != null and acc.threeInspectionsNo != ''">
-            and acc.three_inspections_no like concat('%', #{acc.threeInspectionsNo}, '%')
-        </if>
-        <if test="acc.receivableAdvance != null">
-            and (acc.amount_dr_loc = #{acc.receivableAdvance} or acc.amount_cr_loc = #{acc.receivableAdvance})
-        </if>
-        <if test="acc.invoiceNo != null and acc.invoiceNo != ''">
-            and fee.invoice_no like concat('%', #{acc.invoiceNo}, '%')
-        </if>
-        <if test="acc.createUserName != null and acc.createUserName != ''">
-            and acc.create_user = #{acc.createUserName}
-        </if>
-        <if test="acc.bookingNo != null and acc.bookingNo != ''">
-            and acc.booking_no like concat('%', #{acc.bookingNo}, '%')
-        </if>
-        GROUP BY acc.bill_no
-        ORDER BY acc.create_time
-    </select>
-    <select id="listAccBillV2" resultType="org.springblade.los.finance.fee.vo.FinAccBillsVO">
-        SELECT DISTINCT
-        acc.*,
-        fee.business_type as businessType,
-        fee.bill_type as billType,
-        fee.cur_code as curCode,
-        fee.id as sourceId,
-        fee.account_year as accountYear,
-        fee.account_month as accountMonth,
-        fee.account_day as accountDay,
-        fee.src_type as srcType,
-        fee.src_id as srcId,
-        fee.src_cn_name as srcCnName,
-        fee.src_en_name as srcEnName,
-        fee.line_id as lineId,
-        fee.line_cn_name as lineCnName,
-        fee.line_en_name as lineEnName,
-        fee.cntr_no as cntrNo,
-        SUM(fee.quantity) as quantity,
-        fee.unit_no as unitNo,
-        SUM(fee.price) as price,
-        fee.fee_id as feeId,
-        fee.fee_code as feeCode,
-        fee.fee_cn_name as feeCnName,
-        fee.fee_en_name as feeEnName,
-        fee.exrate as exrate,
-        fee.is_tax as isTax,
-        fee.tax_type as taxType,
-        fee.tax_rate as taxRate,
-        fee.surcharge_rate as surchargeRate,
-        SUM(fee.amount_discount) as amountDiscount,
-        SUM(fee.amount_net) as amountNet,
-        SUM(fee.amount_tax) as amountTax,
-        SUM(fee.amount) as amount,
-        SUM(fee.amount_tax_loc) as amountTaxLoc,
-        SUM(fee.amount_net_loc) as amountNetLoc,
-        SUM(fee.amount_discount_loc) as amountDiscountLoc,
-        SUM(fee.amount_loc) as amountLoc,
-        SUM(fee.stl_ttl_amount) as stlTtlAmount,
-        IF(SUM(fee.unsettled_amount),SUM(fee.unsettled_amount),0.00) as unsettledAmount,
-        fee.is_signfor as isSignfor,
-        fee.signfor_id as signforId,
-        fee.signfor_name as signforName,
-        fee.signfor_date as signforDate,
-        bill.operator_id as operatorId,
-        bill.operator_name as operatorName,
-        bill.quantity_packing_descr as quantityPackingDescr,
-        bill.quantity_cntr_types_descr as quantityCntrTypesDescr,
-        corp.account_period_type as accountPeriodType
-        FROM
-        los_fee_center fee
-        JOIN los_sea_bills bill ON bill.id = fee.pid
-        LEFT JOIN los_b_corps corp ON corp.id = fee.corp_id
-        LEFT JOIN los_fin_acc_bills acc ON acc.id = fee.acc_bill_id
-        WHERE
-        acc.is_deleted = '0'
-        AND fee.is_deleted = '0'
-        and bill.is_deleted = '0'
         <if test="acc.auditStatus != null and acc.auditStatus !=''">
             and fee.audit_status = #{acc.auditStatus}
         </if>
@@ -475,9 +341,6 @@
         <if test="acc.isSignfor != null">
             and fee.is_signfor = #{acc.isSignfor}
         </if>
-        <if test="acc.dc != null and acc.dc != ''">
-            and fee.dc = #{acc.dc}
-        </if>
         <if test="acc.curCode != null and acc.curCode != ''">
             and fee.cur_code = #{acc.curCode}
         </if>
@@ -517,6 +380,12 @@
         <if test="acc.approveTimeList != null and acc.approveTimeList != '' and acc.approveTimeList[1] != ''">
             and fee.approve_time &lt;= #{acc.approveTimeList[1]}
         </if>
+        <if test="acc.signforDateList != null and acc.signforDateList != '' and acc.signforDateList[0] != ''">
+            and fee.signfor_date &gt;= #{acc.signforDateList[0]}
+        </if>
+        <if test="acc.signforDateList != null and acc.signforDateList != '' and acc.signforDateList[1] != ''">
+            and fee.signfor_date &lt;= #{acc.signforDateList[1]}
+        </if>
         <if test="acc.queryAmount != null and acc.queryAmount != ''">
             and (acc.amount_dr_loc = #{acc.queryAmount} or acc.amount_cr_loc = #{acc.queryAmount})
         </if>
@@ -533,6 +402,9 @@
         <if test="acc.voyageNo != null and acc.voyageNo != ''">
             and acc.voyage_no like concat('%', #{acc.voyageNo}, '%')
         </if>
+        <if test="acc.checkBillNo != null and acc.checkBillNo != ''">
+            and fee.check_bill_no like concat('%', #{acc.checkBillNo}, '%')
+        </if>
         <if test="acc.threeInspectionsNo != null and acc.threeInspectionsNo != ''">
             and acc.three_inspections_no like concat('%', #{acc.threeInspectionsNo}, '%')
         </if>
@@ -548,7 +420,7 @@
         <if test="acc.bookingNo != null and acc.bookingNo != ''">
             and acc.booking_no like concat('%', #{acc.bookingNo}, '%')
         </if>
-        GROUP BY fee.id
+        GROUP BY acc.bill_no
         ORDER BY acc.create_time
     </select>
 

+ 9 - 11
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java

@@ -300,20 +300,18 @@ public class FinAccBillsController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "类别", notes = "传入finAccBills")
 	public R<List<FinAccBillsVO>> listAccBillV1(ListAccBillVO listAccBillVO) {
+		if ("2".equals(listAccBillVO.getType())) {
+			if ("D".equals(listAccBillVO.getDc())) {
+				listAccBillVO.setType("2");
+			} else if ("C".equals(listAccBillVO.getDc())) {
+				listAccBillVO.setType("3");
+			} else {
+				listAccBillVO.setType(null);
+			}
+		}
 		List<FinAccBillsVO> list = finAccBillsService.listAccBill(listAccBillVO);
 		return R.data(list);
 	}
 
-	/**
-	 * 财务账单(结算)
-	 */
-	@GetMapping("/listAccBillV2")
-	@ApiOperationSupport(order = 2)
-	@ApiOperation(value = "类别", notes = "传入finAccBills")
-	public R<List<FinAccBillsVO>> listAccBillV2(ListAccBillVO listAccBillVO) {
-		List<FinAccBillsVO> list = finAccBillsService.listAccBillV2(listAccBillVO);
-		return R.data(list);
-	}
-
 
 }

+ 0 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFinAccBillsService.java

@@ -69,6 +69,4 @@ public interface IFinAccBillsService extends IService<FinAccBills> {
 	 * @return
 	 */
     List<FinAccBillsVO> listAccBill(ListAccBillVO finAccBills);
-
-    List<FinAccBillsVO> listAccBillV2(ListAccBillVO listAccBillVO);
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -113,6 +113,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
 		feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
 		feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
+		feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
 
 		amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
 			.setScale(2, RoundingMode.HALF_UP);
@@ -136,6 +137,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		feeCenter.setAmountNet(amountNet);
 		feeCenter.setAmountTax(amountTax);
 		feeCenter.setAmount(amount);
+		feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
 		this.saveOrUpdate(feeCenter);
 		return R.data(feeCenter);
 	}

+ 5 - 6
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

@@ -232,15 +232,19 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			if ("CNY".equals(item.getCurCode())) {
 				if ("D".equals(item.getDc())) {
 					data.setAmountDr(amountCNY);
+					data.setAmountCr(new BigDecimal("0.00"));
 				} else {
 					data.setAmountCr(amountCNY);
+					data.setAmountDr(new BigDecimal("0.00"));
 				}
 				data.setAmountDrUsd(new BigDecimal("0.00"));
 				data.setAmountCrUsd(new BigDecimal("0.00"));
 			} else {
 				if ("D".equals(item.getDc())) {
 					data.setAmountDrUsd(amountUSD);
+					data.setAmountCrUsd(new BigDecimal("0.00"));
 				} else {
+					data.setAmountDrUsd(new BigDecimal("0.00"));
 					data.setAmountCrUsd(amountUSD);
 				}
 				data.setAmountDr(new BigDecimal("0.00"));
@@ -249,7 +253,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 
 			if (ObjectUtils.isNotNull(data.getAmountCrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
 				BigDecimal crCny = data.getAmountCrUsd().multiply(item.getExrate());
-				amountCrLoc = amountCrLoc.add(data.getAmountDr()).add(crCny);
+				amountCrLoc = amountCrLoc.add(data.getAmountCr()).add(crCny);
 			}
 			if (ObjectUtils.isNotNull(data.getAmountDrUsd()) && ObjectUtils.isNotNull(item.getExrate())) {
 				BigDecimal drCny = data.getAmountDrUsd().multiply(item.getExrate());
@@ -324,11 +328,6 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 		return billsMapper.listAccBill(finAccBills);
 	}
 
-	@Override
-	public List<FinAccBillsVO> listAccBillV2(ListAccBillVO listAccBillVO) {
-		return billsMapper.listAccBillV2(listAccBillVO);
-	}
-
 	private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
 		Set<Object> seen = ConcurrentHashMap.newKeySet();
 		return t -> seen.add(keyExtractor.apply(t));

+ 25 - 27
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -214,20 +214,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			finStlBills.setAmountDrLocNet(amountDrCNYTax.add(bCurrencyService.converterCny("USD", amountDrUSDTax)));
 			finStlBills.setAmountCrLocNet(amountCrCNYTax.add(bCurrencyService.converterCny("USD", amountCrUSDTax)));
 
-			List<Long> ids = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getAccBillId).collect(Collectors.toList());
-			if (ids.size() > 0) {
-				List<FinAccBills> finAccBills = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-					.eq(FinAccBills::getId, ids)
-					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-					.eq(FinAccBills::getIsDeleted, 0));
-				if (finAccBills.size() > 0) {
-					List<FinAccBills> accBillsList = finAccBills.stream().filter(e -> e.getIsChecked() == 1).collect(Collectors.toList());
-					if (accBillsList.size() > 0) {
-						String billNos = accBillsList.stream().map(FinAccBills::getBillNo).filter(Objects::nonNull).collect(Collectors.joining(","));
-						throw new RuntimeException("账单号" + billNos + "已对账,保存失败");
-					}
-				}
-			}
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
 				//计算字段null值处理
 				item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
@@ -617,6 +603,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					boolean status = Boolean.FALSE;
 
 					//计算字段null值处理
+					item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
+					item.setUnsettledAmount(ObjectUtils.isNotNull(item.getUnsettledAmount()) ? item.getUnsettledAmount() : new BigDecimal("0.00"));
 					item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
 					item.setCurrentStlDiscount(ObjectUtils.isNotNull(item.getCurrentStlDiscount()) ? item.getCurrentStlDiscount() : new BigDecimal("0.00"));
 					finAccBills.setStlAmountDr(ObjectUtils.isNotNull(finAccBills.getStlAmountDr()) ? finAccBills.getStlAmountDr() : new BigDecimal("0.00"));
@@ -629,12 +617,9 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 						item.getCurrentStlAmount().compareTo(item.getUnsettledAmount()) > 0) {
 						throw new RuntimeException("本次结算金额不能为零或大于未结算金额");
 					}
+					item.setStlTtlAmount(item.getStlTtlAmount().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
+					item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
 					/**-----------------------账单数据处理 收--------------------------- */
-					if (curCode.size() > 1) {
-
-					} else {
-
-					}
 					if ("D".equals(item.getDc())) {
 						if ("CNY".equals(item.getCurCode())) {
 							finAccBills.setStlAmountDr(finAccBills.getStlAmountDr().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
@@ -664,8 +649,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 							finAccBills.getAmountCrUsd().compareTo(finAccBills.getStlAmountCrUsd()) == 0) {
 							status = true;
 						}
-					} else {
-						//todo 收付相抵
 					}
 					/**-----------------------账单数据处理 付--------------------------- */
 					if (finAccBills.getStlAmountCr().compareTo(finAccBills.getAmountCr()) > 0 ||
@@ -852,6 +835,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					boolean status = Boolean.FALSE;
 
 					//计算字段null值处理
+					item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
+					item.setUnsettledAmount(ObjectUtils.isNotNull(item.getUnsettledAmount()) ? item.getUnsettledAmount() : new BigDecimal("0.00"));
 					item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
 					item.setCurrentStlDiscount(ObjectUtils.isNotNull(item.getCurrentStlDiscount()) ? item.getCurrentStlDiscount() : new BigDecimal("0.00"));
 					finAccBills.setStlAmountDr(ObjectUtils.isNotNull(finAccBills.getStlAmountDr()) ? finAccBills.getStlAmountDr() : new BigDecimal("0.00"));
@@ -864,6 +849,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 						item.getCurrentStlAmount().compareTo(item.getUnsettledAmount()) > 0) {
 						throw new RuntimeException("本次结算金额不能为零或大于未结算金额");
 					}
+					item.setStlTtlAmount(item.getStlTtlAmount().subtract(item.getCurrentStlAmount().subtract(item.getCurrentStlDiscount())));
+					item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
 					/**-----------------------账单数据处理 收--------------------------- */
 					if ("D".equals(item.getDc())) {
 						if ("CNY".equals(item.getCurCode())) {
@@ -920,8 +907,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 								finAccBills.setIsCleared(3);
 							}
 						}
-					} else {
-						//todo 收付相抵
 					}
 					/**-----------------------账单数据处理 付--------------------------- */
 
@@ -1035,8 +1020,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finStlBillsItemsService.saveOrUpdateBatch(finStlBills.getFinStlBillsItemsList());
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
-				detail.setStatus(3);
-				detail.setIsCleared(1);
+				detail.setStatus(0);
+				detail.setIsCleared(0);
 			}
 		}
 		baseMapper.updateById(detail);
@@ -1068,10 +1053,25 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				throw new RuntimeException("未找到账单明细,操作失败");
 			}
 			boolean status = Boolean.FALSE;
+
+			item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
+			item.setUnsettledAmount(ObjectUtils.isNotNull(item.getUnsettledAmount()) ? item.getUnsettledAmount() : new BigDecimal("0.00"));
+			item.setCurrentStlAmount(ObjectUtils.isNotNull(item.getCurrentStlAmount()) ? item.getCurrentStlAmount() : new BigDecimal("0.00"));
+			item.setCurrentStlDiscount(ObjectUtils.isNotNull(item.getCurrentStlDiscount()) ? item.getCurrentStlDiscount() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountDr(ObjectUtils.isNotNull(finAccBills.getStlAmountDr()) ? finAccBills.getStlAmountDr() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountDrLoc(ObjectUtils.isNotNull(finAccBills.getStlAmountDrLoc()) ? finAccBills.getStlAmountDrLoc() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountDrUsd(ObjectUtils.isNotNull(finAccBills.getStlAmountDrUsd()) ? finAccBills.getStlAmountDrUsd() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountCr(ObjectUtils.isNotNull(finAccBills.getStlAmountCr()) ? finAccBills.getStlAmountCr() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountCrLoc(ObjectUtils.isNotNull(finAccBills.getStlAmountCrLoc()) ? finAccBills.getStlAmountCrLoc() : new BigDecimal("0.00"));
+			finAccBills.setStlAmountCrUsd(ObjectUtils.isNotNull(finAccBills.getStlAmountCrUsd()) ? finAccBills.getStlAmountCrUsd() : new BigDecimal("0.00"));
+
 			if (item.getCurrentStlAmount().compareTo(new BigDecimal("0.00")) == 0 ||
 				item.getCurrentStlAmount().compareTo(item.getUnsettledAmount()) > 0) {
 				throw new RuntimeException("本次结算金额不能为零或大于未结算金额");
 			}
+
+			item.setStlTtlAmount(item.getStlTtlAmount().add(item.getCurrentStlAmount().add(item.getCurrentStlDiscount())));
+			item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
 			/**-----------------------账单数据处理 收--------------------------- */
 			if ("D".equals(item.getDc())) {
 				if ("CNY".equals(item.getCurCode())) {
@@ -1102,8 +1102,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					finAccBills.getAmountCrUsd().compareTo(finAccBills.getStlAmountCrUsd()) == 0) {
 					status = true;
 				}
-			} else {
-				//todo 收付相抵
 			}
 			if (finAccBills.getStlAmountCr().compareTo(finAccBills.getAmountCr()) > 0 ||
 				finAccBills.getStlAmountCrUsd().compareTo(finAccBills.getAmountCrUsd()) > 0 ||