Browse Source

2024年3月1日17:35:33

纪新园 2 years ago
parent
commit
2cd4bec100
21 changed files with 1049 additions and 196 deletions
  1. 153 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/vo/AccountsDetail.java
  2. 59 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinGenleg.java
  3. 59 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinGenlegCalc.java
  4. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/vouchers/entity/FinVouchers.java
  5. 37 5
      blade-service/blade-los/src/main/java/org/springblade/los/Util/RegularUtils.java
  6. 12 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/controller/AccountsController.java
  7. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/mapper/AccountsMapper.java
  8. 50 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/mapper/AccountsMapper.xml
  9. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/IAccountsService.java
  10. 127 4
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/impl/AccountsServiceImpl.java
  11. 4 1
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  12. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSiDto.java
  13. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSoDto.java
  14. 171 129
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EDISenderServiceImpl.java
  15. 47 44
      blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java
  16. 107 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegCalcController.java
  17. 88 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegController.java
  18. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegCalcService.java
  19. 100 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegCalcServiceImpl.java
  20. 6 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/controller/FinVouchersController.java
  21. 6 6
      blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java

+ 153 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/vo/AccountsDetail.java

@@ -0,0 +1,153 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.acc.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 基础资料-科目代码实体类
+ *
+ * @author BladeX
+ * @since 2023-12-15
+ */
+@Data
+public class AccountsDetail implements Serializable {
+
+	/**
+	 * 年
+	 */
+	private String accountYear;
+	/**
+	 * 月
+	 */
+	private String accountMonth;
+	/**
+	 * 科目代码
+	 */
+	private Long accountId;
+	/**
+	 * 科目代码
+	 */
+	private String code;
+	/**
+	 * 科目名称
+	 */
+	private String accountName;
+	/**
+	 * 借贷方向
+	 */
+	private String dc;
+	/**
+	 * 借贷方向
+	 */
+	private String amountDc;
+	/**
+	 * 凭证号
+	 */
+	private String voucherNo;
+	/**
+	 * 凭证日期
+	 */
+	private String voucherDate;
+	/**
+	 * 摘要
+	 */
+	private String descr;
+	/**
+	 * 借方金额
+	 */
+	private BigDecimal amountDr;
+	/**
+	 * 贷方金额
+	 */
+	private BigDecimal amountCr;
+	/**
+	 * 余额
+	 */
+	private BigDecimal amountBlc;
+	/**
+	 * 外币借方金额
+	 */
+	private BigDecimal amountDrUsd;
+	/**
+	 * 外币贷方金额
+	 */
+	private BigDecimal amountCrUsd;
+	/**
+	 * 外币余额
+	 */
+	private BigDecimal amountUsdBlc;
+	/**
+	 * 币种
+	 */
+	private String curCode;
+
+	/**
+	 * 开始日期
+	 */
+	private String startDate;
+	/**
+	 * 结束日期
+	 */
+	private String endDate;
+
+	/**
+	 * 开始科目
+	 */
+	private String startCode;
+	/**
+	 * 结束科目
+	 */
+	private String endCode;
+	/**
+	 * 是否包含未记账凭证
+	 */
+	private String isAccounting;
+	/**
+	 * 租户
+	 */
+	private String tenantId;
+	/**
+	 * 分公司 Id
+	 */
+	private String branchId;
+	/**
+	 * 是否分组
+	 */
+	private String isPage;
+
+	/**
+	 * 明细
+	 */
+	private List<AccountsDetail> accountsDetailList;
+
+	/**
+	 * 父级
+	 */
+	private Long pid;
+
+	/**
+	 * 排序
+	 */
+	private int sort;
+
+}

+ 59 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinGenleg.java

@@ -17,6 +17,7 @@
 package org.springblade.los.finance.genleg.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -25,8 +26,8 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 财务总账实体类
@@ -424,5 +425,62 @@ public class FinGenleg implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 开始日期
+	 */
+	@TableField(exist = false)
+	private String startDate;
+	/**
+	 * 结束日期
+	 */
+	@TableField(exist = false)
+	private String endDate;
+
+	/**
+	 * 无发生额显示本月本年累计
+	 */
+	@TableField(exist = false)
+	private String isYearMoth;
+	/**
+	 * 无余额无发生显示
+	 */
+	@TableField(exist = false)
+	private String isBalance;
+
+	/**
+	 * 开始科目
+	 */
+	@TableField(exist = false)
+	private String startCode;
+	/**
+	 * 结束科目
+	 */
+	@TableField(exist = false)
+	private String endCode;
+
+	/**
+	 * 显示外币
+	 */
+	@TableField(exist = false)
+	private String isCurCode;
+
+	/**
+	 * 科目方向
+	 */
+	@TableField(exist = false)
+	private String accDc;
+
+	/**
+	 * 明细
+	 */
+	@TableField(exist = false)
+	private List<FinGenleg> finGenlegs;
+
+	/**
+	 * 父级id
+	 */
+	@TableField(exist = false)
+	private Long pid;
+
 
 }

+ 59 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/genleg/entity/FinGenlegCalc.java

@@ -17,6 +17,7 @@
 package org.springblade.los.finance.genleg.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -26,6 +27,7 @@ import lombok.Data;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 财务项目总账实体类
@@ -468,5 +470,62 @@ public class FinGenlegCalc implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 开始日期
+	 */
+	@TableField(exist = false)
+	private String startDate;
+	/**
+	 * 结束日期
+	 */
+	@TableField(exist = false)
+	private String endDate;
+
+	/**
+	 * 无发生额显示本月本年累计
+	 */
+	@TableField(exist = false)
+	private String isYearMoth;
+	/**
+	 * 无余额无发生显示
+	 */
+	@TableField(exist = false)
+	private String isBalance;
+
+	/**
+	 * 开始科目
+	 */
+	@TableField(exist = false)
+	private String startCode;
+	/**
+	 * 结束科目
+	 */
+	@TableField(exist = false)
+	private String endCode;
+
+	/**
+	 * 显示外币
+	 */
+	@TableField(exist = false)
+	private String isCurCode;
+
+	/**
+	 * 科目方向
+	 */
+	@TableField(exist = false)
+	private String accDc;
+
+	/**
+	 * 明细
+	 */
+	@TableField(exist = false)
+	private List<FinGenlegCalc> finGenlegCalcs;
+
+	/**
+	 * 父级id
+	 */
+	@TableField(exist = false)
+	private Long pid;
+
 
 }

+ 10 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/vouchers/entity/FinVouchers.java

@@ -123,6 +123,16 @@ public class FinVouchers implements Serializable {
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date voucherDate;
 	/**
+	 * 凭证日期
+	 */
+	@TableField(exist = false)
+	private String voucherDateStart;
+	/**
+	 * 凭证日期
+	 */
+	@TableField(exist = false)
+	private String voucherDateEnd;
+	/**
 	 * 财务年
 	 */
 	@ApiModelProperty(value = "财务年")

+ 37 - 5
blade-service/blade-los/src/main/java/org/springblade/los/Util/RegularUtils.java

@@ -6,6 +6,7 @@ import org.springblade.los.edi.dto.InttraSiBillDto;
 import org.springblade.los.edi.dto.InttraSiDto;
 import org.springblade.los.edi.dto.InttraSoDto;
 
+import java.math.RoundingMode;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -242,12 +243,16 @@ public class RegularUtils {
 		if (ObjectUtils.isNotNull(inttraSoDto.getPackagesNumber())) {
 			if (regularLength(inttraSoDto.getPackagesNumber().toString(), 18)) {
 				textLength += "包装件数,";
+			}else{
+				inttraSoDto.setPackagesNumber(inttraSoDto.getPackagesNumber().setScale(0, RoundingMode.HALF_UP).abs());
 			}
 		}
 		//货物体积
 		if (ObjectUtils.isNotNull(inttraSoDto.getVolumeOfGoods())) {
 			if (regularLength(inttraSoDto.getVolumeOfGoods().toString(), 18)) {
 				textLength += "货物体积,";
+			}else{
+				inttraSoDto.setVolumeOfGoods(inttraSoDto.getVolumeOfGoods().setScale(0, RoundingMode.HALF_UP).abs());
 			}
 		}
 		//总箱数
@@ -935,10 +940,10 @@ public class RegularUtils {
 			}
 		}
 		//发送方代码
-		if (ObjectUtils.isNull(inttraSoDto.getSenderCode())) {
+		if (ObjectUtils.isNull(inttraSoDto.getSenderCodeS())) {
 			msg += "发送方代码,";
 		} else {
-			Map<String, String> mapString = regularEn(inttraSoDto.getSenderCode());
+			Map<String, String> mapString = regularEn(inttraSoDto.getSenderCodeS());
 			if ("200".equals(mapString.get("code"))) {
 				inttraSoDto.setSenderCode(mapString.get("susscess"));
 			} else {
@@ -1017,6 +1022,8 @@ public class RegularUtils {
 		} else {
 			if (regularLength(inttraSoDto.getPackagesNumbers().toString(), 8)) {
 				textLength += "包装件数,";
+			}else{
+				inttraSoDto.setPackagesNumbers(inttraSoDto.getPackagesNumbers().setScale(0, RoundingMode.HALF_UP).abs());
 			}
 		}
 		//包装代码
@@ -1096,6 +1103,12 @@ public class RegularUtils {
 				character += "麦头,";
 			}
 		}
+		//危险品国际编码
+		if (ObjectUtils.isNotNull(inttraSoDto.getDgUnCode())) {
+			if (regularLength(inttraSoDto.getDgUnCode(), 4)) {
+				textLength += "危险品国际编码,";
+			}
+		}
 		//页号
 		if (ObjectUtils.isNotNull(inttraSoDto.getPageNumber())) {
 			if (regularLength(inttraSoDto.getPageNumber().toString(), 7)) {
@@ -1104,8 +1117,23 @@ public class RegularUtils {
 		}
 		//闪点
 		if (ObjectUtils.isNotNull(inttraSoDto.getDgFlashPoint())) {
-			if (regularLength(inttraSoDto.getDgFlashPoint().toString(), 3)) {
+			// todo
+			StringBuilder data = new StringBuilder();
+			boolean status = false;
+			if (inttraSoDto.getDgFlashPoint().indexOf("-") != 0) {
+				data = new StringBuilder(inttraSoDto.getDgFlashPoint().substring(0, inttraSoDto.getDgFlashPoint().indexOf("-")));
+				status = true;
+			}
+			if (regularLength(data.toString(), 3)) {
 				textLength += "闪点,";
+			} else {
+				int count = 3 - data.length();
+				if (status) {
+					for (int i = 0; i < count; i++) {
+						data.insert(0, "0");
+					}
+					inttraSoDto.setDgFlashPoint("-" + data);
+				}
 			}
 		}
 		//应急措施号
@@ -1446,6 +1474,8 @@ public class RegularUtils {
 		if (ObjectUtils.isNotNull(inttraSoDto.getPackagesNumber())) {
 			if (regularLength(inttraSoDto.getPackagesNumber().toString(), 18)) {
 				textLength += "包装件数,";
+			}else{
+				inttraSoDto.setPackagesNumber(inttraSoDto.getPackagesNumber().setScale(0, RoundingMode.HALF_UP).abs());
 			}
 		}
 		//货物体积
@@ -1941,10 +1971,10 @@ public class RegularUtils {
 			}
 		}
 		//发送方代码
-		if (ObjectUtils.isNull(inttraSoDto.getSenderCode())) {
+		if (ObjectUtils.isNull(inttraSoDto.getSenderCodeS())) {
 			msg += "发送方代码,";
 		} else {
-			Map<String, String> mapString = regularEn(inttraSoDto.getSenderCode());
+			Map<String, String> mapString = regularEn(inttraSoDto.getSenderCodeS());
 			if ("200".equals(mapString.get("code"))) {
 				inttraSoDto.setSenderCode(mapString.get("susscess"));
 			} else {
@@ -2023,6 +2053,8 @@ public class RegularUtils {
 		} else {
 			if (regularLength(inttraSoDto.getPackagesNumbers().toString(), 8)) {
 				textLength += "包装件数,";
+			}else{
+				inttraSoDto.setPackagesNumbers(inttraSoDto.getPackagesNumbers().setScale(0, RoundingMode.HALF_UP).abs());
 			}
 		}
 		//包装代码

+ 12 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/controller/AccountsController.java

@@ -34,6 +34,7 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.basic.acc.entity.Accounts;
 import org.springblade.los.basic.acc.service.IAccountsService;
+import org.springblade.los.basic.acc.vo.AccountsDetail;
 import org.springblade.los.basic.acc.vo.AccountsVO;
 import org.springblade.los.finance.vouchers.entity.FinVouchersItems;
 import org.springblade.los.finance.vouchers.service.IFinVouchersItemsService;
@@ -191,4 +192,15 @@ public class AccountsController extends BladeController {
 		return R.data(accountsCode);
 	}
 
+	/**
+	 * 科目明细账
+	 */
+	@GetMapping("/accountsDetailsList")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入accounts")
+	public R<IPage<AccountsDetail>> accountsDetailsList(AccountsDetail accountsDetail, Query query) {
+		IPage<AccountsDetail> pages = accountsService.accountsDetailsList(Condition.getPage(query), accountsDetail);
+		return R.data(pages);
+	}
+
 }

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/mapper/AccountsMapper.java

@@ -18,6 +18,7 @@ package org.springblade.los.basic.acc.mapper;
 
 import feign.Param;
 import org.springblade.los.basic.acc.entity.Accounts;
+import org.springblade.los.basic.acc.vo.AccountsDetail;
 import org.springblade.los.basic.acc.vo.AccountsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -43,4 +44,6 @@ public interface AccountsMapper extends BaseMapper<Accounts> {
     List<AccountsVO> tree(@Param("tenantId") String tenantId, @Param("deptPid")Long deptPid);
 
 	List<AccountsVO> lazyTree(@Param("tenantId")String tenantId, @Param("parentId")Long parentId, @Param("deptPid")Long deptPid);
+
+	List<AccountsDetail> accountsDetailsList(IPage<AccountsDetail> page, @Param("acc")AccountsDetail accountsDetail);
 }

+ 50 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/mapper/AccountsMapper.xml

@@ -110,5 +110,55 @@
         </if>
         ORDER BY dept.code
     </select>
+    <select id="accountsDetailsList" resultType="org.springblade.los.basic.acc.vo.AccountsDetail">
+        SELECT
+            item.account_year as accountYear,
+            item.account_month as accountMonth,
+            acc.id as accountId,
+            acc.`code` as code,
+            acc.cn_name as accountName,
+            acc.dc as dc,
+            item.voucher_no as voucherNo,
+            item.dc as amountDc,
+            item.voucher_date as voucherDate,
+            item.descr as descr,
+            item.amount_dr as amountDr,
+            item.amount_cr as amountCr,
+            item.amount_dr_usd as amountDrUsd,
+            item.amount_cr_usd as amountCrUsd,
+            item.cur_code  as curCode
+        FROM
+            los_b_accounts acc
+                LEFT JOIN los_fin_vouchers_items item ON acc.id = item.account_id
+        WHERE
+            item.is_deleted = '0'
+        <if test="acc.tenantId!=null and acc.tenantId!=''">
+            and acc.tenant_id = #{acc.tenantId}
+        </if>
+        <if test="acc.curCode!=null and acc.curCode!=''">
+            and item.cur_code = #{acc.curCode}
+        </if>
+        <if test="acc.startDate!=null and acc.startDate!=''">
+            and item.vouchers_date &gt;= #{acc.startDate}
+        </if>
+        <if test="acc.endDate!=null and acc.endDate!=''">
+            and item.vouchers_date &lt;= #{acc.endDate}
+        </if>
+        <if test="acc.startCode!=null and acc.startCode!=''">
+            and acc.code &gt;= #{acc.startCode}
+        </if>
+        <if test="acc.endCode!=null and acc.endCode!=''">
+            and acc.code &lt;= #{acc.endCode}
+        </if>
+        <if test="acc.branchId!=null and acc.branchId!=''">
+            and item.branch_id = #{acc.branchId}
+        </if>
+          <if test="acc.isAccounting!=null and acc.isAccounting!='' and acc.isAccounting !='1'">
+            and item.voucher_status = '1'
+        </if>
+        <if test="acc.isPage!=null and acc.isPage!=''">
+            GROUP BY `code`
+        </if>
+    </select>
 
 </mapper>

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/IAccountsService.java

@@ -18,6 +18,7 @@ package org.springblade.los.basic.acc.service;
 
 import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.acc.entity.Accounts;
+import org.springblade.los.basic.acc.vo.AccountsDetail;
 import org.springblade.los.basic.acc.vo.AccountsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -81,4 +82,6 @@ public interface IAccountsService extends IService<Accounts> {
 	 * @return 新科目代码
 	 */
 	Long getAccountsCode(Long code);
+
+    IPage<AccountsDetail> accountsDetailsList(IPage<AccountsDetail> page, AccountsDetail accountsDetail);
 }

+ 127 - 4
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/impl/AccountsServiceImpl.java

@@ -36,7 +36,10 @@ import org.springblade.los.basic.acc.entity.Accounts;
 import org.springblade.los.basic.acc.mapper.AccountsMapper;
 import org.springblade.los.basic.acc.service.IAccItemsOpenblcService;
 import org.springblade.los.basic.acc.service.IAccountsService;
+import org.springblade.los.basic.acc.vo.AccountsDetail;
 import org.springblade.los.basic.acc.vo.AccountsVO;
+import org.springblade.los.finance.genleg.entity.FinGenleg;
+import org.springblade.los.finance.genleg.mapper.FinGenlegMapper;
 import org.springblade.los.finance.vouchers.entity.FinVouchersItems;
 import org.springblade.los.finance.vouchers.service.IFinVouchersItemsService;
 import org.springblade.system.feign.ISysClient;
@@ -44,6 +47,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -67,6 +71,8 @@ public class AccountsServiceImpl extends ServiceImpl<AccountsMapper, Accounts> i
 
 	private final IFinVouchersItemsService finVouchersItemsService;
 
+	private final FinGenlegMapper finGenlegMapper;
+
 	@Override
 	public IPage<AccountsVO> selectAccountsPage(IPage<AccountsVO> page, AccountsVO accounts) {
 		return page.setRecords(baseMapper.selectAccountsPage(page, accounts));
@@ -239,9 +245,9 @@ public class AccountsServiceImpl extends ServiceImpl<AccountsMapper, Accounts> i
 		}
 		if (baseMapper.selectCount(new LambdaQueryWrapper<Accounts>()
 			.eq(Accounts::getTenantId, AuthUtil.getTenantId())
-			.eq(Accounts::getParentId, accounts.getId())) == 0)  {
+			.eq(Accounts::getParentId, accounts.getId())) == 0) {
 			accounts.setIsDetail(0);
-		}else{
+		} else {
 			accounts.setIsDetail(1);
 		}
 		this.saveOrUpdate(accounts);
@@ -305,9 +311,9 @@ public class AccountsServiceImpl extends ServiceImpl<AccountsMapper, Accounts> i
 			if (code == 0) {
 				accountsCode = Integer.parseInt(number.get(number.size() - 1)) + 1;
 			} else {
-				if (!number.isEmpty()){
+				if (!number.isEmpty()) {
 					accountsCode = Integer.parseInt(number.get(number.size() - 1)) + 1;
-				}else{
+				} else {
 					String codes = code + "001";
 					accountsCode = Long.parseLong(codes);
 				}
@@ -316,6 +322,123 @@ public class AccountsServiceImpl extends ServiceImpl<AccountsMapper, Accounts> i
 		return accountsCode;
 	}
 
+	@Override
+	public IPage<AccountsDetail> accountsDetailsList(IPage<AccountsDetail> page, AccountsDetail accountsDetail) {
+		accountsDetail.setIsPage("1");
+		List<AccountsDetail> accountsDetailList = baseMapper.accountsDetailsList(page, accountsDetail);
+		accountsDetail.setIsPage(null);
+		List<AccountsDetail> accountsDetailList1 = baseMapper.accountsDetailsList(page, accountsDetail);
+		if (!accountsDetailList.isEmpty()) {
+			List<Long> accIds = accountsDetailList.stream().map(AccountsDetail::getAccountId).collect(Collectors.toList());
+			List<FinGenleg> finGenlegList = finGenlegMapper.selectList(new LambdaQueryWrapper<FinGenleg>()
+				.in(FinGenleg::getAccId, accIds));
+			for (AccountsDetail item : accountsDetailList) {
+				FinGenleg finGenleg = finGenlegList.stream()
+					.filter(e -> e.getAccId().equals(item.getAccountId()) && e.getAccyear().toString().equals(item.getAccountYear())
+						&& e.getAccmonth().toString().equals(item.getAccountMonth())).findFirst().orElse(null);
+				if (finGenleg != null) {
+					BigDecimal amountLastBlc = finGenleg.getAmountLastBlc();
+					BigDecimal amountLastBlcUsd = finGenleg.getAmountLastBlcUsd();
+					item.setSort(1);
+					item.setVoucherNo("");
+					item.setVoucherDate(null);
+					item.setAmountDc(item.getDc());
+					item.setAmountCr(null);
+					item.setAmountDr(null);
+					item.setAmountCrUsd(null);
+					item.setAmountDrUsd(null);
+					item.setDescr("上期余额");
+					item.setAmountBlc(amountLastBlc);
+					item.setAmountUsdBlc(amountLastBlcUsd);
+					List<AccountsDetail> accountsDetails = new ArrayList<>();
+
+					List<AccountsDetail> accountsDetailList2 = accountsDetailList1.stream()
+						.filter(e -> e.getAccountId().equals(item.getAccountId())).collect(Collectors.toList());
+					BigDecimal amountDr = new BigDecimal("0");
+					BigDecimal amountCr = new BigDecimal("0");
+					BigDecimal amountDrUsd = new BigDecimal("0");
+					BigDecimal amountCrUsd = new BigDecimal("0");
+					int count = 2;
+					if (!accountsDetailList2.isEmpty()) {
+						amountDr = accountsDetailList2.stream().filter(e -> e.getAccountId().equals(item.getAccountId()) &&
+								e.getDc().equals("D") && "CNY".equals(e.getCurCode())).map(AccountsDetail::getAmountDr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add);
+						amountCr = accountsDetailList2.stream().filter(e -> e.getAccountId().equals(item.getAccountId()) &&
+								e.getDc().equals("C") && "CNY".equals(e.getCurCode())).map(AccountsDetail::getAmountCr)
+							.reduce(BigDecimal.ZERO, BigDecimal::add);
+						amountDrUsd = accountsDetailList2.stream().filter(e -> e.getAccountId().equals(item.getAccountId()) &&
+								e.getDc().equals("D") && "USD".equals(e.getCurCode())).map(AccountsDetail::getAmountDrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add);
+						amountCrUsd = accountsDetailList2.stream().filter(e -> e.getAccountId().equals(item.getAccountId()) &&
+								e.getDc().equals("C") && "USD".equals(e.getCurCode())).map(AccountsDetail::getAmountCrUsd)
+							.reduce(BigDecimal.ZERO, BigDecimal::add);
+						for (AccountsDetail detail : accountsDetailList2) {
+							detail.setCode("");
+							detail.setAccountName("");
+							detail.setDc("");
+							detail.setPid(item.getAccountId());
+							detail.setSort(count);
+							if ("CNY".equals(detail.getCurCode())) {
+								if ("D".equals(detail.getAmountDc())) {
+									item.setAmountBlc(amountLastBlc.add(detail.getAmountDr()));
+								} else {
+									item.setAmountBlc(amountLastBlcUsd.subtract(detail.getAmountCr()));
+								}
+							} else {
+								if ("D".equals(detail.getAmountDc())) {
+									item.setAmountUsdBlc(amountLastBlc.add(detail.getAmountDrUsd()));
+								} else {
+									item.setAmountUsdBlc(amountLastBlcUsd.subtract(detail.getAmountCrUsd()));
+								}
+							}
+							count++;
+						}
+						accountsDetails.addAll(accountsDetailList2);
+					}
+					AccountsDetail accountsDetail1 = new AccountsDetail();
+					accountsDetail1.setAccountYear(item.getAccountYear());
+					accountsDetail1.setPid(item.getAccountId());
+					accountsDetail1.setSort(count);
+					accountsDetail1.setAccountMonth(item.getAccountMonth());
+					accountsDetail1.setCode(item.getCode());
+					accountsDetail1.setAccountName(item.getAccountName());
+					accountsDetail1.setDc(item.getDc());
+					accountsDetail1.setDescr("本期发生");
+					accountsDetail1.setAmountDr(amountDr);
+					accountsDetail1.setAmountCr(amountCr);
+					accountsDetail1.setAmountBlc(amountLastBlcUsd);
+					accountsDetail1.setAmountDrUsd(amountDrUsd);
+					accountsDetail1.setAmountCrUsd(amountCrUsd);
+					accountsDetail1.setAmountUsdBlc(amountLastBlcUsd);
+					accountsDetail1.setAmountDc(item.getAmountDc());
+					accountsDetail1.setCurCode(item.getCurCode());
+					accountsDetails.add(accountsDetail1);
+					AccountsDetail accountsDetail2 = new AccountsDetail();
+					accountsDetail1.setPid(item.getAccountId());
+					accountsDetail1.setSort(count + 1);
+					accountsDetail2.setAccountYear(item.getAccountYear());
+					accountsDetail2.setAccountMonth(item.getAccountMonth());
+					accountsDetail2.setCode(item.getCode());
+					accountsDetail2.setAccountName(item.getAccountName());
+					accountsDetail2.setDc(item.getDc());
+					accountsDetail2.setDescr("本年累计");
+					accountsDetail2.setAmountDr(amountDr);
+					accountsDetail2.setAmountCr(amountCr);
+					accountsDetail2.setAmountBlc(amountLastBlcUsd);
+					accountsDetail2.setAmountDrUsd(amountDrUsd);
+					accountsDetail2.setAmountCrUsd(amountCrUsd);
+					accountsDetail2.setAmountUsdBlc(amountLastBlcUsd);
+					accountsDetail2.setAmountDc(item.getAmountDc());
+					accountsDetail2.setCurCode(item.getCurCode());
+					accountsDetails.add(accountsDetail2);
+					item.setAccountsDetailList(accountsDetails);
+				}
+
+			}
+		}
+		return page.setRecords(accountsDetailList);
+	}
+
 	private void selectSuperiorCode(Accounts accounts, Long parentId) {
 		Accounts accounts1 = baseMapper.selectById(parentId);
 		if (accounts1 != null) {

+ 4 - 1
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -1546,6 +1546,9 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			finVouchersItems.setVoucherType(finVouchers.getVoucherType());
 			finVouchersItems.setVoucherNo(finVouchers.getVoucherNo());
 			finVouchersItems.setVoucherDate(finVouchers.getVoucherDate());
+			finVouchersItems.setAccountYear(finVouchers.getAccountYear());
+			finVouchersItems.setAccountMonth(finVouchers.getAccountMonth());
+			finVouchersItems.setAccountDay(finVouchers.getAccountDay());
 			Accounts accounts = accountsList.stream().filter(e -> e.getCode().equals(item.getSubjectCode()))
 				.findFirst().orElse(null);
 			//获取模板中科目所对应科目信息并赋值
@@ -1624,7 +1627,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				//判断是否核算客户 true 向明细中客户字段复制
 				if (1 == finVouchersItems.getIsCorp()) {
 					if (bCorps != null) {
-						finVouchersItems.setCorpId(bCorps.getCorpId());
+						finVouchersItems.setCorpId(bCorps.getId());
 						finVouchersItems.setCorpCnName(bCorps.getCnName());
 						finVouchersItems.setCorpEnName(bCorps.getEnName());
 					}

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSiDto.java

@@ -296,6 +296,7 @@ public class InttraSiDto {
 	 * 发送方代码
 	 */
 	private String senderCode;
+	private String senderCodeS;
 	/**
 	 * 发送方称呼
 	 */

+ 3 - 2
blade-service/blade-los/src/main/java/org/springblade/los/edi/dto/InttraSoDto.java

@@ -405,6 +405,7 @@ public class InttraSoDto {
 	 * 发送方代码
 	 */
 	private String senderCode;
+	private String senderCodeS;
 	/**
 	 * 发送方称呼
 	 */
@@ -498,11 +499,11 @@ public class InttraSoDto {
 	/**
 	 * 联合国编号
 	 */
-	private Integer dgUnCode;
+	private String dgUnCode;
 	/**
 	 * 闪点
 	 */
-	private Integer dgFlashPoint;
+	private String dgFlashPoint;
 	/**
 	 * 闪点单位
 	 */

+ 171 - 129
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EDISenderServiceImpl.java

@@ -145,20 +145,37 @@ public class EDISenderServiceImpl implements IEDISenderService {
 				count += 1;
 			}
 			/* =================0320=================  */
-			writer.write("CPI+4++" + inttraSoDto.getPaymentType() + "'");
+			if ("PP".equals(inttraSoDto.getPaymentType())) {
+				writer.write("CPI+4++P'");
+			} else if ("CC".equals(inttraSoDto.getPaymentType())) {
+				writer.write("CPI+4++C'");
+			} else {
+				writer.write("CPI+4++" + inttraSoDto.getPaymentType() + "'");
+			}
 			writer.newLine();
 			count += 1;
 			/* =================0480=================  */
 			if (inttraSoDto.getVoyageNo().indexOf("V.") > 0) {
 				throw new RuntimeException("航次中不能存在‘V.’");
 			} else {
-				writer.write("TDT+20+" + inttraSoDto.getVoyageNo() + "+1++");
-				if (ObjectUtils.isNotNull(inttraSoDto.getVesselCarrierCode())) {
-					writer.write(inttraSoDto.getVesselCarrierCode() + ":172+++:::" + inttraSoDto.getVesselName() + "'");
-					writer.newLine();
+				if ("MAEU".equals(inttraSoDto.getCarrierCode())) {
+					writer.write("TDT+20+XXX+1++");
+					if (ObjectUtils.isNotNull(inttraSoDto.getVesselCarrierCode())) {
+						writer.write(inttraSoDto.getVesselCarrierCode() + ":172+++:::XXX'");
+						writer.newLine();
+					} else {
+						writer.write(":172+++:::" + inttraSoDto.getVesselName() + "'");
+						writer.newLine();
+					}
 				} else {
-					writer.write(":172+++:::" + inttraSoDto.getVesselName() + "'");
-					writer.newLine();
+					writer.write("TDT+20+" + inttraSoDto.getVoyageNo() + "+1++");
+					if (ObjectUtils.isNotNull(inttraSoDto.getVesselCarrierCode())) {
+						writer.write(inttraSoDto.getVesselCarrierCode() + ":172+++:::" + inttraSoDto.getVesselName() + "'");
+						writer.newLine();
+					} else {
+						writer.write(":172+++:::" + inttraSoDto.getVesselName() + "'");
+						writer.newLine();
+					}
 				}
 				count += 1;
 			}
@@ -168,9 +185,11 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			count += 1;
 			/* =================0530=================  */
 			if (ObjectUtils.isNotNull(inttraSoDto.getEtd())) {
-				writer.write("DTM+133:" + inttraSoDto.getEtd() + ":102'");
-				writer.newLine();
-				count += 1;
+				if ("MAEU".equals(inttraSoDto.getCarrierCode())) {
+					writer.write("DTM+133:" + inttraSoDto.getEtd() + ":102'");
+					writer.newLine();
+					count += 1;
+				}
 			}
 			/* =================0520=================  */
 			writer.write("LOC+88+" + inttraSoDto.getPlaceReceiptCode() + "::6:" + inttraSoDto.getPlaceReceiptName() + "'");
@@ -351,134 +370,140 @@ public class EDISenderServiceImpl implements IEDISenderService {
 				writer.newLine();
 				count += 1;
 			}
-			/* =================0580=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorName())) {
-				writer.write("NAD+ST+++" + inttraSoDto.getInttraToDoorName());
-				if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrFour())) {
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
-						writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
-					} else {
-						writer.write("+");
-					}
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
-						writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
-					} else {
-						writer.write(":");
-					}
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrThree())) {
-						writer.write(":" + inttraSoDto.getInttraToDoorAddrThree());
-					} else {
-						writer.write(":");
-					}
-					writer.write(":" + inttraSoDto.getInttraToDoorAddrFour());
-				} else {
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrThree())) {
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
-							writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
-						} else {
-							writer.write("+");
-						}
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
-							writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
-						} else {
-							writer.write(":");
-						}
-						writer.write(":" + inttraSoDto.getInttraToDoorAddrThree());
-					} else {
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
-							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
-								writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
+			if (ObjectUtils.isNotNull(inttraSoDto.getTransportTermCode())){
+				if ("DOOR".equals(inttraSoDto.getTransportTermCode().substring(0, 4))) {
+					/* =================0580=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToName())) {
+						writer.write("NAD+SF+++" + inttraSoDto.getInttraDoorToName());
+						if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrFour())) {
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
+								writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
 							} else {
 								writer.write("+");
 							}
-							writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
+								writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
+							} else {
+								writer.write(":");
+							}
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrThree())) {
+								writer.write(":" + inttraSoDto.getInttraDoorToAddrThree());
+							} else {
+								writer.write(":");
+							}
+							writer.write(":" + inttraSoDto.getInttraDoorToAddrFour());
 						} else {
-							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
-								writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrThree())) {
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
+									writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
+								} else {
+									writer.write("+");
+								}
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
+									writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
+								} else {
+									writer.write(":");
+								}
+								writer.write(":" + inttraSoDto.getInttraDoorToAddrThree());
+							} else {
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
+									if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
+										writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
+									} else {
+										writer.write("+");
+									}
+									writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
+								} else {
+									if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
+										writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
+									}
+								}
 							}
 						}
+						writer.write("'");
+						writer.newLine();
+						count += 1;
 					}
-				}
-				writer.write("'");
-				writer.newLine();
-				count += 1;
-			}
-			/* =================0620=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorContacts())) {
-				writer.write("CTA+IC+:" + inttraSoDto.getInttraToDoorContacts() + "'");
-				writer.newLine();
-				count += 1;
-			}
-			/* =================0630=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorTel())) {
-				writer.write("COM+" + inttraSoDto.getInttraToDoorTel() + ":EM'");
-				writer.newLine();
-				count += 1;
-			}
-			/* =================0580=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToName())) {
-				writer.write("NAD+SF+++" + inttraSoDto.getInttraDoorToName());
-				if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrFour())) {
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
-						writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
-					} else {
-						writer.write("+");
-					}
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
-						writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
-					} else {
-						writer.write(":");
+					/* =================0620=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToContacts())) {
+						writer.write("CTA+IC+:" + inttraSoDto.getInttraDoorToContacts() + "'");
+						writer.newLine();
+						count += 1;
 					}
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrThree())) {
-						writer.write(":" + inttraSoDto.getInttraDoorToAddrThree());
-					} else {
-						writer.write(":");
+					/* =================0630=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToTel())) {
+						writer.write("COM+" + inttraSoDto.getInttraDoorToTel() + ":EM'");
+						writer.newLine();
+						count += 1;
 					}
-					writer.write(":" + inttraSoDto.getInttraDoorToAddrFour());
-				} else {
-					if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrThree())) {
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
-							writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
-						} else {
-							writer.write("+");
-						}
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
-							writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
-						} else {
-							writer.write(":");
-						}
-						writer.write(":" + inttraSoDto.getInttraDoorToAddrThree());
-					} else {
-						if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrTwo())) {
-							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
-								writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
+				} else if ("DOOR".equals(inttraSoDto.getTransportTermCode().substring(inttraSoDto.getTransportTermCode().length() - 4))) {
+					/* =================0580=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorName())) {
+						writer.write("NAD+ST+++" + inttraSoDto.getInttraToDoorName());
+						if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrFour())) {
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
+								writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
 							} else {
 								writer.write("+");
 							}
-							writer.write(":" + inttraSoDto.getInttraDoorToAddrTwo());
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
+								writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
+							} else {
+								writer.write(":");
+							}
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrThree())) {
+								writer.write(":" + inttraSoDto.getInttraToDoorAddrThree());
+							} else {
+								writer.write(":");
+							}
+							writer.write(":" + inttraSoDto.getInttraToDoorAddrFour());
 						} else {
-							if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToAddrOne())) {
-								writer.write("+" + inttraSoDto.getInttraDoorToAddrOne());
+							if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrThree())) {
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
+									writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
+								} else {
+									writer.write("+");
+								}
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
+									writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
+								} else {
+									writer.write(":");
+								}
+								writer.write(":" + inttraSoDto.getInttraToDoorAddrThree());
+							} else {
+								if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrTwo())) {
+									if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
+										writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
+									} else {
+										writer.write("+");
+									}
+									writer.write(":" + inttraSoDto.getInttraToDoorAddrTwo());
+								} else {
+									if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorAddrOne())) {
+										writer.write("+" + inttraSoDto.getInttraToDoorAddrOne());
+									}
+								}
 							}
 						}
+						writer.write("'");
+						writer.newLine();
+						count += 1;
+					}
+					/* =================0620=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorContacts())) {
+						writer.write("CTA+IC+:" + inttraSoDto.getInttraToDoorContacts() + "'");
+						writer.newLine();
+						count += 1;
+					}
+					/* =================0630=================  */
+					if (ObjectUtils.isNotNull(inttraSoDto.getInttraToDoorTel())) {
+						writer.write("COM+" + inttraSoDto.getInttraToDoorTel() + ":EM'");
+						writer.newLine();
+						count += 1;
 					}
 				}
-				writer.write("'");
-				writer.newLine();
-				count += 1;
-			}
-			/* =================0620=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToContacts())) {
-				writer.write("CTA+IC+:" + inttraSoDto.getInttraDoorToContacts() + "'");
-				writer.newLine();
-				count += 1;
-			}
-			/* =================0630=================  */
-			if (ObjectUtils.isNotNull(inttraSoDto.getInttraDoorToTel())) {
-				writer.write("COM+" + inttraSoDto.getInttraDoorToTel() + ":EM'");
-				writer.newLine();
-				count += 1;
 			}
+
 			/* =================0580=================  */
 			if (ObjectUtils.isNotNull(inttraSoDto.getFreightForwarderCode())) {
 				writer.write("NAD+FW+" + inttraSoDto.getFreightForwarderCode() + ":160");
@@ -491,7 +516,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 				}
 				count += 1;
 			}
-			writer.write("NAD+HI+" + inttraSoDto.getSenderCode() + ":160:86++" + inttraSoDto.getSenderName() + "'");
+			writer.write("NAD+HI+" + inttraSoDto.getSenderCodeS() + ":160:86++" + inttraSoDto.getSenderCodeS() + "'");
 			writer.newLine();
 			count += 1;
 			/* =================0620=================  */
@@ -880,20 +905,37 @@ public class EDISenderServiceImpl implements IEDISenderService {
 				count += 1;
 			}
 			/* =================0320=================  */
-			writer.write("CPI+4++" + inttraSiDto.getPaymentType() + "'");
+			if ("PP".equals(inttraSiDto.getPaymentType())) {
+				writer.write("CPI+4++P'");
+			} else if ("CC".equals(inttraSiDto.getPaymentType())) {
+				writer.write("CPI+4++C'");
+			} else {
+				writer.write("CPI+4++" + inttraSiDto.getPaymentType() + "'");
+			}
 			writer.newLine();
 			count += 1;
 			/* =================0480=================  */
 			if (inttraSiDto.getVoyageNo().indexOf("V.") > 0) {
 				throw new RuntimeException("航次中不能存在‘V.’");
 			} else {
-				writer.write("TDT+20+" + inttraSiDto.getVoyageNo() + "+1++");
-				if (ObjectUtils.isNotNull(inttraSiDto.getVesselCarrierCode())) {
-					writer.write(inttraSiDto.getVesselCarrierCode() + ":172+++:::" + inttraSiDto.getVesselName() + "'");
-					writer.newLine();
+				if ("MAEU".equals(inttraSiDto.getCarrierCode())) {
+					writer.write("TDT+20+XXX+1++");
+					if (ObjectUtils.isNotNull(inttraSiDto.getVesselCarrierCode())) {
+						writer.write(inttraSiDto.getVesselCarrierCode() + ":172+++:::XXX'");
+						writer.newLine();
+					} else {
+						writer.write(":172+++:::" + inttraSiDto.getVesselName() + "'");
+						writer.newLine();
+					}
 				} else {
-					writer.write(":172+++:::" + inttraSiDto.getVesselName() + "'");
-					writer.newLine();
+					writer.write("TDT+20+" + inttraSiDto.getVoyageNo() + "+1++");
+					if (ObjectUtils.isNotNull(inttraSiDto.getVesselCarrierCode())) {
+						writer.write(inttraSiDto.getVesselCarrierCode() + ":172+++:::" + inttraSiDto.getVesselName() + "'");
+						writer.newLine();
+					} else {
+						writer.write(":172+++:::" + inttraSiDto.getVesselName() + "'");
+						writer.newLine();
+					}
 				}
 				count += 1;
 			}
@@ -1061,7 +1103,7 @@ public class EDISenderServiceImpl implements IEDISenderService {
 			writer.write("NAD+CA+" + inttraSiDto.getCarrierCode() + ":160:86++" + inttraSiDto.getCarrierName() + "'");
 			writer.newLine();
 			count += 1;
-			writer.write("NAD+HI+" + inttraSiDto.getSenderCode() + ":160:86++" + inttraSiDto.getSenderName() + "'");
+			writer.write("NAD+HI+" + inttraSiDto.getSenderCodeS() + ":160:86++" + inttraSiDto.getSenderCodeS() + "'");
 			writer.newLine();
 			count += 1;
 			/* =================0620=================  */

+ 47 - 44
blade-service/blade-los/src/main/java/org/springblade/los/edi/service/impl/EdiTypesServiceImpl.java

@@ -185,7 +185,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						.eq(BPorts::getIsDeleted, 0)
 						.eq(BPorts::getEnName, details.getMpayplace()));
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPaymentLocationCode(ediCode);
 						inttraSoDto.setPaymentLand(bPorts.getEnName());
 					}
@@ -193,7 +193,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getIssueAtId())) {
 					BPorts bPorts = bPortsService.getById(details.getIssueAtId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setIssuanceLandCode(ediCode);
 						inttraSoDto.setIssuanceLand(bPorts.getEnName());
 					}
@@ -203,10 +203,10 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 					inttraSoDto.setIssueDate(sdf2.format(details.getIssueDate()));
 				}
 				inttraSoDto.setBookingNo(details.getBookingNo());
-				inttraSoDto.setBillNo(details.getRefno());
+				inttraSoDto.setBillNo(details.getMblno());
 				inttraSoDto.setFreightProtocolNumber(details.getCorpArgreementNo());
 				inttraSoDto.setMainPinyin("");
-				inttraSoDto.setOrderNo(details.getMblno());
+				inttraSoDto.setOrderNo(details.getBookingNo());
 				inttraSoDto.setJobId(details.getBillNo());
 				inttraSoDto.setPaymentType(details.getMpaymode());
 				inttraSoDto.setVoyageNo(details.getVoyageNo());
@@ -223,7 +223,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPolId())) {
 					BPorts bPorts = bPortsService.getById(details.getPolId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPolCode(ediCode);
 					}
 				}
@@ -235,7 +235,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPlaceReceiptId())) {
 					BPorts bPorts = bPortsService.getById(details.getPlaceReceiptId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPlaceReceiptCode(ediCode);
 						inttraSoDto.setPlaceReceiptName(bPorts.getEnName());
 					}
@@ -243,7 +243,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPodId())) {
 					BPorts bPorts = bPortsService.getById(details.getPodId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPodCode(ediCode);
 					}
 				}
@@ -251,7 +251,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPlaceDeliveryId())) {
 					BPorts bPorts = bPortsService.getById(details.getPlaceDeliveryId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPlaceDeliveryCode(ediCode);
 						inttraSoDto.setPlaceDeliveryName(bPorts.getEnName());
 					}
@@ -279,38 +279,42 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				inttraSoDto.setInttraDoorToTel(details.getInttraDoorToCorpTel());
 				inttraSoDto.setFreightForwarderCode("los-code");
 				inttraSoDto.setFreightForwarderName("los-call");
-				inttraSoDto.setSenderCode("JMSLOGQDSO");
+				inttraSoDto.setSenderCodeS("JMSLOGQINGDAO");
 				inttraSoDto.setSenderName("JMS");
-				inttraSoDto.setSenderContacts("JMS-contacts");
+				inttraSoDto.setSenderContacts("Emma chen");
 				inttraSoDto.setSenderTel("JMS-tel");
-				inttraSoDto.setSenderEmail("JMS-email");
-				inttraSoDto.setBillLadingType(details.getBillType());
-
-//				inttraSoDto.setBillLadingType("706/710");
+				inttraSoDto.setSenderEmail("lag-seataocn@jms-logistics.com");
+				if ("SEA WAY BILL".equals(details.getIssueType())){
+					inttraSoDto.setBillLadingType("710");
+				}else{
+					inttraSoDto.setBillLadingType("706");
+				}
 				if (details.getStlCrStatus() >= 3 || details.getStlDrStatus() >= 3) {
 					inttraSoDto.setPaymentStatus("27");
 				} else {
 					inttraSoDto.setPaymentStatus("26");
 				}
-				inttraSoDto.setBillLadingNumber(new BigDecimal("0"));
+				inttraSoDto.setBillLadingNumber(new BigDecimal(details.getNumberOfOblDigit()));
 				inttraSoDto.setPackagesNumbers(details.getQuantity());
 				inttraSoDto.setPackagesCode(details.getPackingUnit());
 				inttraSoDto.setPackagesDescribe("");//包装描述
-				inttraSoDto.setHsCode(new BigDecimal("001"));
 				inttraSoDto.setProductName(details.getCommodityEnName());
 				inttraSoDto.setGrossWeight(details.getGrossWeight());
 				inttraSoDto.setMeasurement(details.getMeasurement());
 				inttraSoDto.setMarks(details.getMarks());
-				inttraSoDto.setDgImdgCode(details.getDgImdgCode());
-				inttraSoDto.setPageNumber(new BigDecimal("007"));
-				inttraSoDto.setDgUnCode(1);
-				inttraSoDto.setDgFlashPoint(1);
-				inttraSoDto.setDgFlashPointUnit(details.getDgFlashPointUnit());
-				inttraSoDto.setPackingGroup("");//包装组别
-				inttraSoDto.setEmergencyMeasureNo("");//应急措施号
-				inttraSoDto.setDgRemarks(details.getDgRemarks());
-				inttraSoDto.setDgContacts(details.getDgContacts());
-				inttraSoDto.setDgTel(details.getDgTel());
+				if ("danger".equals(details.getCargoType())) {
+					inttraSoDto.setHsCode(new BigDecimal(details.getHscode()));
+					inttraSoDto.setDgImdgCode(details.getDgImdgCode());
+					inttraSoDto.setPageNumber(new BigDecimal("007"));
+					inttraSoDto.setDgUnCode(details.getDgUnCode());
+					inttraSoDto.setDgFlashPoint(details.getDgFlashPoint()+"");
+					inttraSoDto.setDgFlashPointUnit(details.getDgFlashPointUnit());
+					inttraSoDto.setPackingGroup("");//包装组别
+					inttraSoDto.setEmergencyMeasureNo("");//应急措施号
+					inttraSoDto.setDgRemarks(details.getDgRemarks());
+					inttraSoDto.setDgContacts(details.getDgContacts());
+					inttraSoDto.setDgTel(details.getDgTel());
+				}
 				List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
 					.eq(PreContainers::getPid, details.getId())
 					.eq(PreContainers::getIsDeleted, 0));
@@ -322,7 +326,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				for (PreContainers item : preContainersList) {
 					BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCntrType().equals(item.getCntrTypeCode())).findFirst().orElse(null);
 					if (bCntrTypes != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bCntrTypes.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bCntrTypes.getExtendedData());
 						Map<String, Object> map = new HashMap<>();
 						map.put("boxCode", ediCode);
 						map.put("boxNumber", item.getQuantity());
@@ -343,7 +347,6 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				Map<String, Object> status = RegularUtils.notNullInttraSoDto(inttraSoDto);
 				if (200 == Integer.parseInt(status.get("code").toString())) {
 					FilesCenter filesCenter = iediSenderService.sendingInttraSo(inttraSoDto);
-
 					//发送edi记录
 					EdiLog ediLog = new EdiLog();
 					ediLog.setBillId(details.getId());
@@ -424,7 +427,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						.eq(BPorts::getIsDeleted, 0)
 						.eq(BPorts::getEnName, details.getMpayplace()));
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPaymentLocationCode(ediCode);
 						inttraSoDto.setPaymentLand(bPorts.getEnName());
 					}
@@ -432,7 +435,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getIssueAtId())) {
 					BPorts bPorts = bPortsService.getById(details.getIssueAtId());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setIssuanceLandCode(ediCode);
 						inttraSoDto.setIssuanceLand(bPorts.getEnName());
 
@@ -443,10 +446,10 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 					inttraSoDto.setIssueDate(sdf2.format(details.getIssueDate()));
 				}
 				inttraSoDto.setBookingNo(details.getBookingNo());
-				inttraSoDto.setBillNo(details.getRefno());
+				inttraSoDto.setBillNo(details.getMblno());
 				inttraSoDto.setFreightProtocolNumber(details.getCorpArgreementNo());
 				inttraSoDto.setMainPinyin("");
-				inttraSoDto.setOrderNo(details.getMblno());
+				inttraSoDto.setOrderNo(details.getBookingNo());
 				inttraSoDto.setPaymentType(details.getMpaymode());
 				inttraSoDto.setVoyageNo(details.getVoyageNo());
 				if (ObjectUtils.isNotNull(details.getVesselId())) {
@@ -462,7 +465,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPolCode())) {
 					BPorts bPorts = bPortsService.getById(details.getPolCode());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPolName(ediCode);
 					}
 				}
@@ -470,7 +473,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPlaceReceiptCode())) {
 					BPorts bPorts = bPortsService.getById(details.getPlaceReceiptCode());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPlaceReceiptCode(ediCode);
 						inttraSoDto.setPlaceReceiptName(bPorts.getEnName());
 					}
@@ -478,7 +481,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPodCode())) {
 					BPorts bPorts = bPortsService.getById(details.getPodCode());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPodCode(ediCode);
 					}
 				}
@@ -486,7 +489,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getPlaceDeliveryCode())) {
 					BPorts bPorts = bPortsService.getById(details.getPlaceDeliveryCode());
 					if (bPorts != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPorts.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPorts.getExtendedData());
 						inttraSoDto.setPlaceDeliveryCode(ediCode);
 						inttraSoDto.setPlaceDeliveryName(bPorts.getEnName());
 					}
@@ -501,7 +504,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						inttraSoDto.setCarrierCode(bCorps.getInttraCode());
 					}
 				}
-				inttraSoDto.setSenderCode("JMSLOGQDSO");
+				inttraSoDto.setSenderCodeS("JMSLOGQINGDAO");
 				inttraSoDto.setSenderName("JMS");
 				inttraSoDto.setSenderContacts("JMS-contacts");
 				inttraSoDto.setSenderTel("JMS-tel");
@@ -518,7 +521,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 					BPackages bPackages = bPackagesService.getOne(new LambdaQueryWrapper<BPackages>()
 						.eq(BPackages::getCode, details.getPackingUnit()));
 					if (bPackages != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPackages.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPackages.getExtendedData());
 						inttraSoDto.setPackagesCode(ediCode);
 					}
 				}
@@ -539,7 +542,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				for (Containers item : containersList) {
 					BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCntrType().equals(item.getCntrTypeCode())).findFirst().orElse(null);
 					if (bCntrTypes != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bCntrTypes.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bCntrTypes.getExtendedData());
 						Map<String, Object> map = new HashMap<>();
 						map.put("boxGoodNumber", item.getQuantity());
 						map.put("boxGoodWeight", item.getGrossWeight());
@@ -550,7 +553,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						map.put("sealUnit", item.getPackingUnit());
 						map.put("shipperBoxIdentification", item.getIsSoc());
 						PreContainers preContainers = preContainersList.stream().filter(e -> e.getCntrTypeCode().equals(item.getCntrTypeCode())).findFirst().orElse(null);
-						if (preContainers != null){
+						if (preContainers != null) {
 							map.put("temperature", preContainers.getTemperature());
 							map.put("temperatureUnit", preContainers.getTemperatureUnit());
 						}
@@ -669,7 +672,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				if (ObjectUtils.isNotNull(details.getIssueDate())) {
 					inttraSoDto.setIssueDate(sdf2.format(details.getIssueDate()));
 				}
-				inttraSoDto.setBillNo(details.getRefno());
+				inttraSoDto.setBillNo(details.getMblno());
 				inttraSoDto.setPaymentType(details.getMpaymode());
 				inttraSoDto.setVoyageNo(details.getVoyageNo());
 				if (ObjectUtils.isNotNull(details.getVesselId())) {
@@ -694,7 +697,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 					BPackages bPackages = bPackagesService.getOne(new LambdaQueryWrapper<BPackages>()
 						.eq(BPackages::getCode, details.getPackingUnit()));
 					if (bPackages != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bPackages.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bPackages.getExtendedData());
 						inttraSoDto.setPackagesCode(ediCode);
 					}
 				}
@@ -712,7 +715,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 				for (Containers item : containersList) {
 					BCntrTypes bCntrTypes = bCntrTypesList.stream().filter(e -> e.getCntrType().equals(item.getCntrTypeCode())).findFirst().orElse(null);
 					if (bCntrTypes != null) {
-						String ediCode = RegularUtils.getEdiCode("INTTRA",bCntrTypes.getExtendedData());
+						String ediCode = RegularUtils.getEdiCode("INTTRA", bCntrTypes.getExtendedData());
 						Map<String, Object> map = new HashMap<>();
 						map.put("boxGoodNumber", item.getQuantity());
 //						map.put("boxGoodWeight", item.getGrossWeight());
@@ -721,7 +724,7 @@ public class EdiTypesServiceImpl extends ServiceImpl<EdiTypesMapper, EdiTypes> i
 						map.put("boxNo", item.getCntrNo());
 						map.put("shipperBoxIdentification", item.getIsSoc());
 						PreContainers preContainers = preContainersList.stream().filter(e -> e.getCntrTypeCode().equals(item.getCntrTypeCode())).findFirst().orElse(null);
-						if (preContainers != null){
+						if (preContainers != null) {
 							map.put("temperature", preContainers.getTemperature());
 							map.put("ventilation", preContainers.getVentilation());
 							map.put("temperatureUnit", preContainers.getTemperatureUnit());

+ 107 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegCalcController.java

@@ -16,6 +16,8 @@
  */
 package org.springblade.los.finance.genleg.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -25,8 +27,12 @@ import javax.validation.Valid;
 
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.los.basic.acc.entity.Accounts;
+import org.springblade.los.basic.acc.service.IAccountsService;
+import org.springblade.los.finance.genleg.entity.FinGenleg;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.los.finance.genleg.entity.FinGenlegCalc;
@@ -34,6 +40,11 @@ import org.springblade.los.finance.genleg.vo.FinGenlegCalcVO;
 import org.springblade.los.finance.genleg.service.IFinGenlegCalcService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 财务项目总账 控制器
  *
@@ -48,6 +59,8 @@ public class FinGenlegCalcController extends BladeController {
 
 	private final IFinGenlegCalcService finGenlegCalcService;
 
+	private final IAccountsService accountsService;
+
 	/**
 	 * 详情
 	 */
@@ -66,7 +79,89 @@ public class FinGenlegCalcController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入finGenlegCalc")
 	public R<IPage<FinGenlegCalc>> list(FinGenlegCalc finGenlegCalc, Query query) {
+		LambdaQueryWrapper<FinGenlegCalc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq( FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getAccyear()), FinGenlegCalc::getAccyear, finGenlegCalc.getAccyear())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getIsCorp()), FinGenlegCalc::getIsCorp, finGenlegCalc.getIsCorp())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getCorpId()), FinGenlegCalc::getCorpId, finGenlegCalc.getCorpId())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getIsDept()), FinGenlegCalc::getIsDept, finGenlegCalc.getIsDept())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getDeptId()), FinGenlegCalc::getDeptId, finGenlegCalc.getDeptId())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getIsEmpl()), FinGenlegCalc::getIsEmpl, finGenlegCalc.getIsEmpl())
+			.eq(ObjectUtils.isNotNull(finGenlegCalc.getEmplId()), FinGenlegCalc::getEmplId, finGenlegCalc.getEmplId())
+			.ge(ObjectUtils.isNotNull(finGenlegCalc.getStartCode()), FinGenlegCalc::getAccCode, finGenlegCalc.getStartCode())
+			.le(ObjectUtils.isNotNull(finGenlegCalc.getEndCode()), FinGenlegCalc::getAccCode, finGenlegCalc.getEndCode())
+			.ge(ObjectUtils.isNotNull(finGenlegCalc.getStartDate()), FinGenlegCalc::getAccmonth, finGenlegCalc.getStartDate())
+			.le(ObjectUtils.isNotNull(finGenlegCalc.getEndDate()), FinGenlegCalc::getAccmonth, finGenlegCalc.getEndDate())
+		;
+		if ("0".equals(finGenlegCalc.getIsBalance())) {
+			if ("CNY".equals(finGenlegCalc.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenlegCalc::getCurCode, finGenlegCalc.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr !=0 or amount_cr !=0 or amount_blc !=0 ");
+			} else if ("USD".equals(finGenlegCalc.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenlegCalc::getCurCode, finGenlegCalc.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr_usd !=0 or amount_cr_usd !=0 or amount_usd_blc !=0 ");
+			} else {
+				lambdaQueryWrapper.and(i -> i.apply("(amount_dr !=0 or amount_cr !=0 or amount_blc !=0) ").or()
+					.apply("(amount_dr_usd !=0 or amount_cr_usd !=0 or amount_usd_blc !=0) "));
+			}
+		}
+		if ("1".equals(finGenlegCalc.getIsYearMoth())) {
+			if ("CNY".equals(finGenlegCalc.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenlegCalc::getCurCode, finGenlegCalc.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr =0 or amount_cr =0");
+			} else if ("USD".equals(finGenlegCalc.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenlegCalc::getCurCode, finGenlegCalc.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr_usd =0 or amount_cr_usd =0");
+			} else {
+				lambdaQueryWrapper.and(i -> i.apply("(amount_dr =0 or amount_cr =0) ").or()
+					.apply("(amount_dr_usd =0 or amount_cr_usd =0) "));
+			}
+		}
+		lambdaQueryWrapper.orderByAsc(FinGenlegCalc::getAccCode);
 		IPage<FinGenlegCalc> pages = finGenlegCalcService.page(Condition.getPage(query), Condition.getQueryWrapper(finGenlegCalc));
+		List<Accounts> accountsList = new ArrayList<>();
+		if (!pages.getRecords().isEmpty()) {
+			List<Long> accIds = pages.getRecords().stream().map(FinGenlegCalc::getAccId).collect(Collectors.toList());
+			accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
+				.in(Accounts::getId, accIds)
+			);
+		}
+		for (FinGenlegCalc item : pages.getRecords()) {
+			item.setDescr("上期余额");
+			if (!accountsList.isEmpty()) {
+				Accounts accounts = accountsList.stream().filter(e -> e.getId().equals(item.getAccId())).findFirst().orElse(null);
+				if (accounts != null) {
+					item.setAccDc(accounts.getDc());
+				}
+			}
+			List<FinGenlegCalc> finGenlegs = new ArrayList<>();
+			if (new BigDecimal("0").compareTo(item.getAmountDr()) != 0 || new BigDecimal("0").compareTo(item.getAmountDrUsd()) != 0 ||
+				new BigDecimal("0").compareTo(item.getAmountCr()) != 0 || new BigDecimal("0").compareTo(item.getAmountCrUsd()) != 0) {
+				FinGenlegCalc finGenleg1 = new FinGenlegCalc();
+				finGenleg1.setDescr("本期发生");
+				finGenleg1.setAmountDr(item.getAmountDr());
+				finGenleg1.setAmountCr(item.getAmountCr());
+				finGenleg1.setAmountDrUsd(item.getAmountDrUsd());
+				finGenleg1.setAmountCrUsd(item.getAmountCrUsd());
+				finGenleg1.setAmountBlc(item.getAmountBlc());
+				finGenleg1.setAmountUsdBlc(item.getAmountUsdBlc());
+				finGenleg1.setDc(item.getDc());
+				finGenleg1.setPid(item.getId());
+				finGenlegs.add(finGenleg1);
+				FinGenlegCalc finGenleg2 = new FinGenlegCalc();
+				finGenleg2.setDescr("本年累计");
+				finGenleg2.setAmountDr(item.getAmountDr());
+				finGenleg2.setAmountCr(item.getAmountCr());
+				finGenleg2.setAmountDrUsd(item.getAmountDrUsd());
+				finGenleg2.setAmountCrUsd(item.getAmountCrUsd());
+				finGenleg2.setAmountBlc(item.getAmountBlc());
+				finGenleg2.setAmountUsdBlc(item.getAmountUsdBlc());
+				finGenleg2.setDc(item.getDc());
+				finGenleg2.setPid(item.getId());
+				finGenlegs.add(finGenleg2);
+			}
+			item.setFinGenlegCalcs(finGenlegs);
+		}
 		return R.data(pages);
 	}
 
@@ -111,7 +206,7 @@ public class FinGenlegCalcController extends BladeController {
 		return R.status(finGenlegCalcService.saveOrUpdate(finGenlegCalc));
 	}
 
-	
+
 	/**
 	 * 删除 财务项目总账
 	 */
@@ -122,5 +217,15 @@ public class FinGenlegCalcController extends BladeController {
 		return R.status(finGenlegCalcService.removeByIds(Func.toLongList(ids)));
 	}
 
-	
+
+	/**
+	 * 初始化(年)
+	 */
+	@GetMapping("/initialization")
+	public R<List<FinGenlegCalc>> initialization() {
+		List<FinGenlegCalc> pages = finGenlegCalcService.initialization();
+		return R.data(pages);
+	}
+
+
 }

+ 88 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegController.java

@@ -16,7 +16,9 @@
  */
 package org.springblade.los.finance.genleg.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -25,15 +27,22 @@ import lombok.AllArgsConstructor;
 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.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.los.basic.acc.entity.Accounts;
+import org.springblade.los.basic.acc.service.IAccountsService;
 import org.springblade.los.finance.genleg.entity.FinGenleg;
 import org.springblade.los.finance.genleg.service.IFinGenlegService;
 import org.springblade.los.finance.genleg.vo.FinGenlegVO;
+import org.springblade.los.finance.vouchers.service.IFinVouchersItemsService;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 财务总账 控制器
@@ -49,6 +58,8 @@ public class FinGenlegController extends BladeController {
 
 	private final IFinGenlegService finGenlegService;
 
+	private final IAccountsService accountsService;
+
 	/**
 	 * 详情
 	 */
@@ -67,7 +78,83 @@ public class FinGenlegController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入finGenleg")
 	public R<IPage<FinGenleg>> list(FinGenleg finGenleg, Query query) {
-		IPage<FinGenleg> pages = finGenlegService.page(Condition.getPage(query), Condition.getQueryWrapper(finGenleg));
+		LambdaQueryWrapper<FinGenleg> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq( FinGenleg::getTenantId, AuthUtil.getTenantId())
+			.eq(ObjectUtils.isNotNull(finGenleg.getAccyear()), FinGenleg::getAccyear, finGenleg.getAccyear())
+			.ge(ObjectUtils.isNotNull(finGenleg.getStartCode()), FinGenleg::getAccCode, finGenleg.getStartCode())
+			.le(ObjectUtils.isNotNull(finGenleg.getEndCode()), FinGenleg::getAccCode, finGenleg.getEndCode())
+			.ge(ObjectUtils.isNotNull(finGenleg.getStartDate()), FinGenleg::getAccmonth, finGenleg.getStartDate())
+			.le(ObjectUtils.isNotNull(finGenleg.getEndDate()), FinGenleg::getAccmonth, finGenleg.getEndDate())
+		;
+		if ("0".equals(finGenleg.getIsBalance())) {
+			if ("CNY".equals(finGenleg.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenleg::getCurCode, finGenleg.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr !=0 or amount_cr !=0 or amount_blc !=0 ");
+			} else if ("USD".equals(finGenleg.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenleg::getCurCode, finGenleg.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr_usd !=0 or amount_cr_usd !=0 or amount_usd_blc !=0 ");
+			} else {
+				lambdaQueryWrapper.and(i -> i.apply("(amount_dr !=0 or amount_cr !=0 or amount_blc !=0) ").or()
+					.apply("(amount_dr_usd !=0 or amount_cr_usd !=0 or amount_usd_blc !=0) "));
+			}
+		}
+		if ("1".equals(finGenleg.getIsYearMoth())) {
+			if ("CNY".equals(finGenleg.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenleg::getCurCode, finGenleg.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr =0 or amount_cr =0");
+			} else if ("USD".equals(finGenleg.getCurCode())) {
+				lambdaQueryWrapper.eq(FinGenleg::getCurCode, finGenleg.getCurCode());
+				lambdaQueryWrapper.apply("amount_dr_usd =0 or amount_cr_usd =0");
+			} else {
+				lambdaQueryWrapper.and(i -> i.apply("(amount_dr =0 or amount_cr =0) ").or()
+					.apply("(amount_dr_usd =0 or amount_cr_usd =0) "));
+			}
+		}
+		lambdaQueryWrapper.orderByAsc(FinGenleg::getAccCode);
+		IPage<FinGenleg> pages = finGenlegService.page(Condition.getPage(query), lambdaQueryWrapper);
+		List<Accounts> accountsList = new ArrayList<>();
+		if (!pages.getRecords().isEmpty()) {
+			List<Long> accIds = pages.getRecords().stream().map(FinGenleg::getAccId).collect(Collectors.toList());
+			accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
+				.in(Accounts::getId, accIds)
+			);
+		}
+		for (FinGenleg item : pages.getRecords()) {
+			item.setDescr("上期余额");
+			if (!accountsList.isEmpty()) {
+				Accounts accounts = accountsList.stream().filter(e -> e.getId().equals(item.getAccId())).findFirst().orElse(null);
+				if (accounts != null) {
+					item.setAccDc(accounts.getDc());
+				}
+			}
+			List<FinGenleg> finGenlegs = new ArrayList<>();
+			if (new BigDecimal("0").compareTo(item.getAmountDr()) != 0 || new BigDecimal("0").compareTo(item.getAmountDrUsd()) != 0 ||
+				new BigDecimal("0").compareTo(item.getAmountCr()) != 0 || new BigDecimal("0").compareTo(item.getAmountCrUsd()) != 0) {
+				FinGenleg finGenleg1 = new FinGenleg();
+				finGenleg1.setDescr("本期发生");
+				finGenleg1.setAmountDr(item.getAmountDr());
+				finGenleg1.setAmountCr(item.getAmountCr());
+				finGenleg1.setAmountDrUsd(item.getAmountDrUsd());
+				finGenleg1.setAmountCrUsd(item.getAmountCrUsd());
+				finGenleg1.setAmountBlc(item.getAmountBlc());
+				finGenleg1.setAmountUsdBlc(item.getAmountUsdBlc());
+				finGenleg1.setDc(item.getDc());
+				finGenleg1.setPid(item.getId());
+				finGenlegs.add(finGenleg1);
+				FinGenleg finGenleg2 = new FinGenleg();
+				finGenleg2.setDescr("本年累计");
+				finGenleg2.setAmountDr(item.getAmountDr());
+				finGenleg2.setAmountCr(item.getAmountCr());
+				finGenleg2.setAmountDrUsd(item.getAmountDrUsd());
+				finGenleg2.setAmountCrUsd(item.getAmountCrUsd());
+				finGenleg2.setAmountBlc(item.getAmountBlc());
+				finGenleg2.setAmountUsdBlc(item.getAmountUsdBlc());
+				finGenleg2.setDc(item.getDc());
+				finGenleg2.setPid(item.getId());
+				finGenlegs.add(finGenleg2);
+			}
+			item.setFinGenlegs(finGenlegs);
+		}
 		return R.data(pages);
 	}
 

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegCalcService.java

@@ -21,6 +21,8 @@ import org.springblade.los.finance.genleg.vo.FinGenlegCalcVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 财务项目总账 服务类
  *
@@ -38,4 +40,5 @@ public interface IFinGenlegCalcService extends IService<FinGenlegCalc> {
 	 */
 	IPage<FinGenlegCalcVO> selectFinGenlegCalcPage(IPage<FinGenlegCalcVO> page, FinGenlegCalcVO finGenlegCalc);
 
+    List<FinGenlegCalc> initialization();
 }

+ 100 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegCalcServiceImpl.java

@@ -16,13 +16,32 @@
  */
 package org.springblade.los.finance.genleg.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import io.seata.spring.annotation.GlobalTransactional;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.los.Util.IDeptUtils;
+import org.springblade.los.basic.acc.entity.Accounts;
+import org.springblade.los.basic.acc.service.IAccountsService;
+import org.springblade.los.finance.genleg.entity.FinGenleg;
 import org.springblade.los.finance.genleg.entity.FinGenlegCalc;
 import org.springblade.los.finance.genleg.vo.FinGenlegCalcVO;
 import org.springblade.los.finance.genleg.mapper.FinGenlegCalcMapper;
 import org.springblade.los.finance.genleg.service.IFinGenlegCalcService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 财务项目总账 服务实现类
@@ -31,11 +50,92 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2024-02-29
  */
 @Service
+@AllArgsConstructor
 public class FinGenlegCalcServiceImpl extends ServiceImpl<FinGenlegCalcMapper, FinGenlegCalc> implements IFinGenlegCalcService {
 
+	private final ISysClient sysClient;
+
+	private final IDeptUtils deptUtils;
+
+	private final IAccountsService accountsService;
+
 	@Override
 	public IPage<FinGenlegCalcVO> selectFinGenlegCalcPage(IPage<FinGenlegCalcVO> page, FinGenlegCalcVO finGenlegCalc) {
 		return page.setRecords(baseMapper.selectFinGenlegCalcPage(page, finGenlegCalc));
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
+	public List<FinGenlegCalc> initialization() {
+		String deptId = "";
+		String deptName = "";
+		String branchId = deptUtils.getDeptPid() + "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		LocalDate currentDate = LocalDate.now();
+		if (baseMapper.selectCount(new LambdaQueryWrapper<FinGenlegCalc>()
+			.eq(FinGenlegCalc::getAccyear, currentDate.getYear())) > 0) {
+			throw new RuntimeException("本年度已入账,请勿重复入账");
+		}
+		List<Accounts> accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
+			.eq(Accounts::getIsDetail, 1)
+			.eq(Accounts::getStatus, 0));
+		List<FinGenlegCalc> finGenlegList = new ArrayList<>();
+		for (Accounts item : accountsList) {
+			FinGenlegCalc finGenleg = new FinGenlegCalc();
+			BeanUtil.copyProperties(item, finGenleg);
+			finGenleg.setUpdateUser(0L);
+			finGenleg.setUpdateUserName("");
+			finGenleg.setUpdateTime(new Date());
+			finGenleg.setCreateTime(new Date());
+			finGenleg.setCreateUser(AuthUtil.getUserId());
+			finGenleg.setCreateUserName(AuthUtil.getUserName());
+			//获取部门ids对应中文名
+			if (ObjectUtils.isNotNull(deptId)) {
+				finGenleg.setCreateDept(deptId);
+				finGenleg.setBranchId(branchId);
+				R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					finGenleg.setCreateDeptName(deptName);
+				}
+			}
+			finGenleg.setAccyear(currentDate.getYear());
+			finGenleg.setAccmonth(currentDate.getMonthValue());
+			finGenleg.setAccCode(item.getCode());
+			finGenleg.setAccId(item.getId());
+			finGenleg.setAmountLastBlc(finGenleg.getAmountOpenBlc());
+			finGenleg.setAmountDr(new BigDecimal("0.00"));
+			finGenleg.setAmountCr(new BigDecimal("0.00"));
+			finGenleg.setAmountYearDr(new BigDecimal("0.00"));
+			finGenleg.setAmountYearCr(new BigDecimal("0.00"));
+			finGenleg.setAmountBlc(finGenleg.getAmountOpenBlc());
+			finGenleg.setAmountLastBlcUsd(finGenleg.getAmountOpenUsdBlc());
+			finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
+			finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
+			finGenleg.setAmountYearDrUsd(new BigDecimal("0.00"));
+			finGenleg.setAmountYearCrUsd(new BigDecimal("0.00"));
+			finGenleg.setAmountUsdBlc(finGenleg.getAmountOpenUsdBlc());
+
+			finGenleg.setQuantityOpenDr(new BigDecimal("0.00"));
+			finGenleg.setQuantityOpenCr(new BigDecimal("0.00"));
+			finGenleg.setQuantityOpenBlc(new BigDecimal("0.00"));
+			finGenleg.setQuantityLastBlc(new BigDecimal("0.00"));
+			finGenleg.setQuantityDr(new BigDecimal("0.00"));
+			finGenleg.setQuantityCr(new BigDecimal("0.00"));
+			finGenleg.setQuantityBlc(new BigDecimal("0.00"));
+			finGenleg.setQuantityYearDr(new BigDecimal("0.00"));
+			finGenleg.setQuantityYearCr(new BigDecimal("0.00"));
+			finGenlegList.add(finGenleg);
+		}
+		this.saveOrUpdateBatch(finGenlegList);
+		return finGenlegList;
+	}
+
 }

+ 6 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/controller/FinVouchersController.java

@@ -72,7 +72,12 @@ public class FinVouchersController extends BladeController {
 		LambdaQueryWrapper<FinVouchers> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
 			.eq(FinVouchers::getIsDeleted, 0)
-			.eq(ObjectUtils.isNotNull(finVouchers.getBillNo()), FinVouchers::getBillNo, finVouchers.getBillNo())
+			.like(ObjectUtils.isNotNull(finVouchers.getBillNo()), FinVouchers::getBillNo, finVouchers.getBillNo())
+			.eq(ObjectUtils.isNotNull(finVouchers.getVoucherStatus()), FinVouchers::getVoucherStatus, finVouchers.getVoucherStatus())
+			.like(ObjectUtils.isNotNull(finVouchers.getVoucherNo()), FinVouchers::getVoucherNo, finVouchers.getVoucherNo())
+			.eq(ObjectUtils.isNotNull(finVouchers.getVoucherSource()), FinVouchers::getVoucherSource, finVouchers.getVoucherSource())
+			.gt(ObjectUtils.isNotNull(finVouchers.getVoucherDateStart()), FinVouchers::getVoucherDate, finVouchers.getVoucherDateStart())
+			.lt(ObjectUtils.isNotNull(finVouchers.getVoucherDateEnd()), FinVouchers::getVoucherDate, finVouchers.getVoucherDateEnd())
 			.orderByDesc(FinVouchers::getCreateTime);
 		IPage<FinVouchers> pages = finVouchersService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);

+ 6 - 6
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java

@@ -258,11 +258,11 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			List<Long> accId = finVouchersItemsList.stream().map(FinVouchersItems::getAccountId).collect(Collectors.toList());
 			if (!accId.isEmpty()) {
 				accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
-					.eq(Accounts::getId, accId));
+					.in(Accounts::getId, accId));
 				finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-					.eq(FinGenleg::getAccId, accId));
+					.in(FinGenleg::getAccId, accId));
 				finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-					.eq(FinGenlegCalc::getAccId, accId));
+					.in(FinGenlegCalc::getAccId, accId));
 			}
 		}
 		List<FinGenleg> finGenlegListNew = new ArrayList<>();
@@ -901,11 +901,11 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			List<Long> accId = finVouchersItemsList.stream().map(FinVouchersItems::getAccountId).collect(Collectors.toList());
 			if (!accId.isEmpty()) {
 				accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
-					.eq(Accounts::getId, accId));
+					.in(Accounts::getId, accId));
 				finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-					.eq(FinGenleg::getAccId, accId));
+					.in(FinGenleg::getAccId, accId));
 				finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-					.eq(FinGenlegCalc::getAccId, accId));
+					.in(FinGenlegCalc::getAccId, accId));
 			}
 		}
 		List<FinGenleg> finGenlegListNew = new ArrayList<>();