Parcourir la source

1.客户托书审核增加版本号
2.财务提取数据值取审核通过的
3.进出场记录增加同步状态
4.场站api接口直接同步
5.同步接口异常处理统一处理
6.成本导入费用明细分单号取值修改
7.增加费用明细查看发票单据接口
8.增加费用明细查看结算单据接口
9.海运出口选择放箱号增加版本号控制
10.海运出口,选择放箱号,撤销放箱号增加生成或删除配箱列表逻辑
11.OW拿明细导出修改字段

纪新园 il y a 1 jour
Parent
commit
694d99a815
23 fichiers modifiés avec 1203 ajouts et 215 suppressions
  1. 127 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/dto/ExportTradingBoxItemOutEn.java
  2. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/dynamics/entity/BoxDynamicsRecord.java
  3. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/PutBox.java
  4. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBox.java
  5. 1 1
      blade-service/blade-los/pom.xml
  6. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  7. 62 24
      blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java
  8. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/controller/BoxDynamicsRecordController.java
  9. 718 160
      blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java
  10. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/IPutBoxService.java
  11. 34 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/PutBoxServiceImpl.java
  12. 7 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  13. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  14. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  15. 104 5
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/SeaContainerNumberItemServiceImpl.java
  16. 8 0
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  17. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  18. 8 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java
  19. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/IFinInvoicesService.java
  20. 48 6
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  21. 15 4
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  22. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java
  23. 30 12
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

+ 127 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/dto/ExportTradingBoxItemOutEn.java

@@ -0,0 +1,127 @@
+/*
+ *      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.box.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 买(卖)箱表实体类
+ *
+ * @author BladeX
+ * @since 2022-11-14
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class ExportTradingBoxItemOutEn implements Serializable {
+
+	/**
+	 * 合同生效日期
+	 */
+	@ExcelProperty(value = "Release Date")
+	private String effectiveDate;
+
+	/**
+	 * 箱东
+	 */
+	@ExcelProperty(value = "Owner")
+	private String boxEastName;
+	/**
+	 * 放箱号
+	 */
+	@ExcelProperty(value = "Release #")
+	private String containerNumber;
+	/**
+	 * 箱号
+	 */
+	@ExcelProperty(value = "Cntr No.")
+	private String code;
+	/**
+	 * 箱型
+	 */
+	@ExcelProperty(value = "Size")
+	private String boxType;
+	/**
+	 * pol提箱日期
+	 */
+	@ExcelProperty(value = "Pick up date")
+	private String polPickUpDate;
+	/**
+	 * 起运港
+	 */
+	@ExcelProperty(value = "POL")
+	private String polCname;
+	/**
+	 * 目的港
+	 */
+	@ExcelProperty(value = "POD")
+	private String podCname;
+	/**
+	 * ETD/ATD
+	 */
+	@ExcelProperty(value = "ETD/ATD")
+	private String etd;
+	/**
+	 * ETA/ATA
+	 */
+	@ExcelProperty(value = "ETA/ATA")
+	private String eta;
+	/**
+	 * 收箱号
+	 */
+	@ExcelProperty(value = "Acceptance")
+	private String offhireReference;
+	/**
+	 * 合同失效日期
+	 */
+	@ExcelProperty(value = "Validity")
+	private String expiryDate;
+	/**
+	 * pod空箱还箱日期
+	 */
+	@ExcelProperty(value = "Retum Empty Date")
+	private String podEmptyContainerReturnDate;
+	/**
+	 * 修箱费
+	 */
+	@ExcelProperty(value = "Repair Cost")
+	private String repairCost;
+	/**
+	 * 提单号
+	 */
+	@ExcelProperty(value = "MBLNO")
+	private String mblno;
+	/**
+	 * 分单号
+	 */
+	@ExcelProperty(value = "HBLNO")
+	private String hblno;
+
+}

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/dynamics/entity/BoxDynamicsRecord.java

@@ -204,5 +204,11 @@ public class BoxDynamicsRecord implements Serializable {
 	@ApiModelProperty(value = "失败原因")
 	private String reason;
 
+	/**
+	 * 同步状态
+	 */
+	@ApiModelProperty(value = "同步状态")
+	private String synchronizationStatus;
+
 
 }

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/PutBox.java

@@ -438,6 +438,17 @@ public class PutBox implements Serializable {
 	 */
 	@ApiModelProperty(value = "目的港场站电话")
 	private String podCyTel;
+	/**
+	 * 版本号
+	 */
+	@ApiModelProperty(value = "版本号")
+	private Integer version;
+
+	/**
+	 * 是否停用  0否1是
+	 */
+	@ApiModelProperty(value = "是否停用")
+	private String whetherDeactivate;
 
 	/**
 	 * 明细

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBox.java

@@ -700,6 +700,12 @@ public class TradingBox implements Serializable {
 	private String hblno;
 
 	/**
+	 * 是否停用  0否1是
+	 */
+	@ApiModelProperty(value = "是否停用")
+	private String whetherDeactivate;
+
+	/**
 	 * 临时数据
 	 */
 	@TableField(exist = false)

+ 1 - 1
blade-service/blade-los/pom.xml

@@ -15,7 +15,7 @@
         <dependency>
             <groupId>com.echepei</groupId>
             <artifactId>common-utils</artifactId>
-            <version>1.4</version>
+            <version>1.5</version>
             <exclusions>
                 <exclusion>
                     <groupId>ch.qos.logback</groupId>

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

@@ -1042,6 +1042,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 										feeCenterReports.setDc(fee.getDc());
 										feeCenterReports.setCurCode(fee.getCurCode());
 										feeCenterReports.setCurCodeC(fee.getCurCode());
+										feeCenterReports.setHblno(fee.getHblno());
 										List<FeeCenter> feeCenterListD = feeCenterListMh.stream()
 											.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(item.getId()) &&
 												e.getFeeId().equals(fee.getFeeId()) && exrateType.equals(e.getCurCode()) && fee.getCurCode().equals(e.getCurCode()) &&
@@ -1144,6 +1145,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							feeCenterReports.setDc(fee.getDc());
 							feeCenterReports.setCurCode(fee.getCurCode());
 							feeCenterReports.setCurCodeC(fee.getCurCode());
+							feeCenterReports.setHblno(fee.getHblno());
 							Bills finalBills = bills;
 							List<FeeCenter> feeCenterListD = feeCenterList.stream()
 								.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills.getId()) &&
@@ -1245,6 +1247,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							feeCenterReports.setDc(fee.getDc());
 							feeCenterReports.setCurCode(fee.getCurCode());
 							feeCenterReports.setCurCodeC(fee.getCurCode());
+							feeCenterReports.setHblno(fee.getHblno());
 							Bills finalBills1 = bills;
 							List<FeeCenter> feeCenterListD = feeCenterList.stream()
 								.filter(e -> MagicValues.D.equals(e.getDc()) && e.getPid().equals(finalBills1.getId()) &&
@@ -1357,6 +1360,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 									feeCenterReports1.setAmountLocC(i.getAmountLocC());
 									feeCenterReports1.setAmountUsdC(i.getAmountUsdC());
 									feeCenterReports1.setCurCode(i.getCurCode());
+									feeCenterReports1.setHblno(i.getHblno());
 									feeCenterReports.add(feeCenterReports1);
 								}
 							}

+ 62 - 24
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java

@@ -34,14 +34,13 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.box.dto.ExportTradingBoxItemOut;
+import org.springblade.los.box.dto.ExportTradingBoxItemOutEn;
 import org.springblade.los.box.dto.ExportTradingBoxOut;
-import org.springblade.los.box.entity.ExpenseApplication;
-import org.springblade.los.box.entity.PutBox;
 import org.springblade.los.box.entity.TradingBox;
 import org.springblade.los.box.entity.TradingBoxItem;
 import org.springblade.los.box.service.ITradingBoxItemService;
 import org.springblade.los.box.service.ITradingBoxService;
-import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.statisticAnalysis.FeeSummaryDetailRD;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.web.bind.annotation.*;
 
@@ -131,15 +130,15 @@ public class TradingBoxController extends BladeController {
 			lambdaQueryWrapper.ge(TradingBox::getPurchaseDate, tradingBox.getPurchaseDateList().get(0));
 			lambdaQueryWrapper.le(TradingBox::getPurchaseDate, tradingBox.getPurchaseDateList().get(1));
 		}
-		if ("1".equals(tradingBox.getWhetherDisplay())){
-			lambdaQueryWrapper.ne(TradingBox::getSuitcaseNum,0);
+		if ("1".equals(tradingBox.getWhetherDisplay())) {
+			lambdaQueryWrapper.ne(TradingBox::getSuitcaseNum, 0);
 			lambdaQueryWrapper.ge(TradingBox::getExpiryDate, new Date());
-		}else if ("2".equals(tradingBox.getWhetherDisplay())){
-			lambdaQueryWrapper.eq(TradingBox::getSuitcaseNum,0);
+		} else if ("2".equals(tradingBox.getWhetherDisplay())) {
+			lambdaQueryWrapper.eq(TradingBox::getSuitcaseNum, 0);
 			lambdaQueryWrapper.ge(TradingBox::getExpiryDate, new Date());
-		}else if ("3".equals(tradingBox.getWhetherDisplay())){
+		} else if ("3".equals(tradingBox.getWhetherDisplay())) {
 			lambdaQueryWrapper.lt(TradingBox::getExpiryDate, new Date());
-		}else if ("4".equals(tradingBox.getWhetherDisplay())){
+		} else if ("4".equals(tradingBox.getWhetherDisplay())) {
 			String status = sysClient.getParamServiceDWT("postponement.reminder", AuthUtil.getTenantId());
 			if (ObjectUtils.isNull(status) || "获取数据失败".equals(status)) {
 				throw new RuntimeException("请先维护延期提醒系统参数");
@@ -270,20 +269,59 @@ public class TradingBoxController extends BladeController {
 			.eq(TradingBoxItem::getIsDeleted, 0)
 			.eq(TradingBoxItem::getPid, tradingBox.getId())
 		);
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
 		List<ExportTradingBoxItemOut> outList = new ArrayList<>();
+		List<ExportTradingBoxItemOutEn> outListEn = new ArrayList<>();
 		for (TradingBoxItem item : tradingBoxItemList) {
-			ExportTradingBoxItemOut data = new ExportTradingBoxItemOut();
-			data.setBoxEastName(item.getBoxEastName());
-			data.setContainerNumber(item.getContainerNumber());
-			data.setBoxType(item.getBoxType());
-			data.setMblno(item.getMblno());
-			data.setCode(item.getCode());
-			data.setPolCname(detail.getPolCname());
-			data.setPodCname(detail.getPodCname());
-			data.setPodStationCname(detail.getPodStationCname());
-			outList.add(data);
+			if ("OW-N,OW-F".equals(detail.getType())) {
+				ExportTradingBoxItemOutEn export = new ExportTradingBoxItemOutEn();
+				if (ObjectUtils.isNotNull(detail.getEffectiveDate())){
+					export.setEffectiveDate(formatter.format(detail.getEffectiveDate()));
+				}
+				export.setBoxEastName(item.getBoxEastName());
+				export.setContainerNumber(item.getContainerNumber());
+				export.setCode(item.getCode());
+				export.setBoxType(item.getBoxType());
+				if (ObjectUtils.isNotNull(item.getPolPickUpDate())){
+					export.setPolPickUpDate(formatter.format(item.getPolPickUpDate()));
+				}
+				export.setPolCname(detail.getPolCname());
+				export.setPodCname(detail.getPodCname());
+				if (ObjectUtils.isNotNull(item.getEtd())){
+					export.setEtd(formatter.format(item.getEtd()));
+				}
+				if (ObjectUtils.isNotNull(item.getEta())){
+					export.setEta(formatter.format(item.getEta()));
+				}
+				export.setOffhireReference(detail.getOffhireReference());
+				if (ObjectUtils.isNotNull(detail.getExpiryDate())){
+					export.setExpiryDate(formatter.format(detail.getExpiryDate()));
+				}
+				if (ObjectUtils.isNotNull(item.getPodEmptyContainerReturnDate())){
+					export.setPodEmptyContainerReturnDate(formatter.format(item.getPodEmptyContainerReturnDate()));
+				}
+				export.setRepairCost("");
+				export.setMblno(item.getMblno());
+				export.setHblno(item.getHblno());
+				outListEn.add(export);
+			} else {
+				ExportTradingBoxItemOut data = new ExportTradingBoxItemOut();
+				data.setBoxEastName(item.getBoxEastName());
+				data.setContainerNumber(item.getContainerNumber());
+				data.setBoxType(item.getBoxType());
+				data.setMblno(item.getMblno());
+				data.setCode(item.getCode());
+				data.setPolCname(detail.getPolCname());
+				data.setPodCname(detail.getPodCname());
+				data.setPodStationCname(detail.getPodStationCname());
+				outList.add(data);
+			}
+		}
+		if ("OW-N,OW-F".equals(detail.getType())) {
+			ExcelUtil.export(response, "箱明细", "箱明细", outListEn, ExportTradingBoxItemOutEn.class);
+		} else {
+			ExcelUtil.export(response, "箱明细", "箱明细", outList, ExportTradingBoxItemOut.class);
 		}
-		ExcelUtil.export(response, "箱明细", "箱明细", outList, ExportTradingBoxItemOut.class);
 	}
 
 
@@ -427,8 +465,8 @@ public class TradingBoxController extends BladeController {
 	 * OW撤销费用 - PickUp
 	 */
 	@GetMapping("/revokePickUpCost")
-	public R revokePickUpCost(@RequestParam("id") Long id,@RequestParam(value = "itemIds",required = false) String itemIds) {
-		return tradingBoxService.revokePickUpCost(id,itemIds);
+	public R revokePickUpCost(@RequestParam("id") Long id, @RequestParam(value = "itemIds", required = false) String itemIds) {
+		return tradingBoxService.revokePickUpCost(id, itemIds);
 	}
 
 	/**
@@ -487,8 +525,8 @@ public class TradingBoxController extends BladeController {
 	 * 批量增加pod目的港
 	 */
 	@GetMapping("/batchAddPod")
-	public R batchAddPod(@RequestParam("ids") String ids,@RequestParam(value = "podIds") String podIds) {
-		return tradingBoxService.batchAddPod(ids,podIds);
+	public R batchAddPod(@RequestParam("ids") String ids, @RequestParam(value = "podIds") String podIds) {
+		return tradingBoxService.batchAddPod(ids, podIds);
 	}
 
 }

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/controller/BoxDynamicsRecordController.java

@@ -90,6 +90,7 @@ public class BoxDynamicsRecordController extends BladeController {
 			.like(ObjectUtils.isNotNull(boxDynamicsRecord.getBoxCode()),BoxDynamicsRecord::getBoxCode,boxDynamicsRecord.getBoxCode())
 			.like(ObjectUtils.isNotNull(boxDynamicsRecord.getContainerNumber()),BoxDynamicsRecord::getContainerNumber,boxDynamicsRecord.getContainerNumber())
 			.eq(ObjectUtils.isNotNull(boxDynamicsRecord.getBoxDynamics()),BoxDynamicsRecord::getBoxDynamics,boxDynamicsRecord.getBoxDynamics())
+			.eq(ObjectUtils.isNotNull(boxDynamicsRecord.getSynchronizationStatus()),BoxDynamicsRecord::getSynchronizationStatus,boxDynamicsRecord.getSynchronizationStatus())
 			.orderByDesc(BoxDynamicsRecord::getImportDate);
 		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(boxDynamicsRecord.getDescription()),BoxDynamicsRecord::getDescription, boxDynamicsRecord.getDescription());
 		IPage<BoxDynamicsRecord> pages = boxDynamicsRecordService.page(Condition.getPage(query), lambdaQueryWrapper);

Fichier diff supprimé car celui-ci est trop grand
+ 718 - 160
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java


+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/IPutBoxService.java

@@ -96,4 +96,6 @@ public interface IPutBoxService extends IService<PutBox> {
     R detele(List<Long> longList);
 
 	R batchUpdatePod(String ids, String podId, String podCname, String podEname, String podCode);
+
+	R updateBatchByIdAndVersion(List<PutBox> putBoxList);
 }

+ 34 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/PutBoxServiceImpl.java

@@ -27,6 +27,7 @@ import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.los.Util.CurrencyUtils;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
@@ -239,8 +240,18 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 			putBox.setWhetherManuallyCreate("0");
 			putBox.setBusType("自有箱");
 			putBox.setBoxClass("自有箱");
+			putBox.setVersion(0);
 			baseMapper.insert(putBox);
 		} else {
+			PutBox dataSourceBill = baseMapper.selectOne(new LambdaQueryWrapper<PutBox>().select(PutBox::getId, PutBox::getVersion)
+				.eq(PutBox::getId, putBox.getId()));
+			if (!Objects.equals(dataSourceBill.getVersion(), putBox.getVersion())) {
+				return R.fail(601, "数据已被其他用户更新,请等待刷新后重试");
+			}
+			// 每更新一次往上累加一次版本
+			// 旧数据处理
+			int version = ObjectUtils.isNull(dataSourceBill.getVersion()) ? 1 : dataSourceBill.getVersion();
+			putBox.setVersion(version + 1);
 			if (putBoxList.stream().anyMatch(e -> !e.getId().equals(putBox.getId()) && e.getPolId().equals(putBox.getPolId())
 				&& e.getPolStationId().equals(putBox.getPolStationId()))) {
 				throw new RuntimeException("放箱号已存在,请勿重复添加");
@@ -285,7 +296,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 				.in(PutBoxItems::getBoxCode, boxCode));
 			for (PutBoxItems item : putBox.getPutBoxItemsList()) {
 				item.setBoxBelongsTo(putBox.getBoxBelongsTo());
-				item.setBoxCondition(putBox.getBoxCondition());
+//				item.setBoxCondition(putBox.getBoxCondition());
 				item.setBoxClass(putBox.getBoxClass());
 				if ("OW(拿),OW(放)".contains(putBox.getBusType()) && ObjectUtils.isNotNull(putBox.getBoxEastId())
 					&& !"null".equals(putBox.getBoxEastId()) && ObjectUtils.isNull(item.getBoxEastId())) {
@@ -5372,6 +5383,28 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		return R.data("操作成功");
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R updateBatchByIdAndVersion(List<PutBox> putBoxList) {
+		List<Long> idList = putBoxList.stream().map(PutBox::getId).collect(Collectors.toList());
+		List<PutBox> putBoxOldList = baseMapper.selectList(new LambdaQueryWrapper<PutBox>()
+			.eq(PutBox::getTenantId,AuthUtil.getTenantId())
+			.eq(PutBox::getIsDeleted,0)
+			.in(PutBox::getId,idList));
+		for (PutBox putBox : putBoxList){
+			PutBox putBox1 = putBoxOldList.stream().filter(e-> e.getId().equals(putBox.getId())).findFirst().orElse(null);
+			if (putBox1 != null){
+				if (!Objects.equals(putBox1.getVersion(), putBox.getVersion())){
+					throw new RuntimeException("数据已被其他用户更新,请刷新后重试");
+				}
+			}
+			int version = ObjectUtils.isNull(putBox.getVersion()) ? 1 : putBox.getVersion();
+			putBox.setVersion(version + 1);
+		}
+		this.updateBatchById(putBoxList);
+		return null;
+	}
+
 	private void countOverdueFeeV1(Bills billsHYJK, List<TradingBox> tradingBoxList,
 								   List<TradingBoxItem> tradingBoxItemOldList, List<PutBoxItems> putBoxItemsOldList,
 								   List<PutBox> putBoxList) {

+ 7 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java

@@ -425,7 +425,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			tradingBox.setHblno(tradingBox.getTradingBoxItemsList().stream().map(TradingBoxItem::getHblno).filter(Objects::nonNull)
 				.distinct().collect(Collectors.joining(",")));
 			tradingBox.setTradingBoxItemsList(tradingBox.getTradingBoxItemsList());
-		}else{
+		} else {
 			tradingBox.setCode("");
 			tradingBox.setMblno("");
 			tradingBox.setHblno("");
@@ -1587,6 +1587,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		TradingBox tradingBox = baseMapper.selectById(detail.getId());
 		int version = StringUtil.isBlank(tradingBox.getVersion()) ? 1 : Integer.parseInt(tradingBox.getVersion());
 		tradingBox.setVersion(String.valueOf(version + 1));
+		List<TradingBoxType> boxTypeList = tradingBoxTypeService.list(new LambdaQueryWrapper<TradingBoxType>()
+			.eq(TradingBoxType::getTenantId, AuthUtil.getTenantId())
+			.eq(TradingBoxType::getIsDeleted, 0)
+			.eq(TradingBoxType::getPid, tradingBox.getId()));
 		if ("OW-N,OW-F,DL,ZR".contains(tradingBox.getType())) {
 			tradingBox.setWhetherEnable("是");
 			tradingBox.setContainerNumber(detail.getContainerNumber());
@@ -1597,6 +1601,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				.eq(PutBox::getIsDeleted, 0)
 				.eq(PutBox::getContainerNumber, detail.getContainerNumber())
 				.eq(PutBox::getPolId, detail.getPolId())
+				.eq(!boxTypeList.isEmpty(), PutBox::getBoxType, boxTypeList.get(0).getBoxType())
 				.eq(PutBox::getPolStationId, detail.getPolStationId())
 			);
 			if (putBox != null) {
@@ -3498,6 +3503,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				.eq(TradingBox::getTenantId, AuthUtil.getTenantId())
 				.eq(TradingBox::getIsDeleted, 0)
 				.eq(TradingBox::getWhetherEnable, "是")
+				.apply("find_in_set(type,'OW-N,OW-F') and not_suitcase_num != 0")
 				.ge(TradingBox::getExpiryDate, calendar.getTime())
 				.le(TradingBox::getExpiryDate, calendar1.getTime())
 				.orderByAsc(TradingBox::getExpiryDate));

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

@@ -374,6 +374,7 @@
         WHERE
         acc.is_deleted = '0'
         AND fee.is_deleted = '0'
+        and fee.audit_status = '4'
         <if test='acc.branchId != null and acc.branchId != ""'>
             and acc.branch_id = #{acc.branchId}
         </if>
@@ -1024,6 +1025,7 @@
         WHERE
         acc.is_deleted = '0'
         AND fee.is_deleted = '0'
+        and fee.audit_status = '4'
         <if test='acc.branchId != null and acc.branchId != ""'>
             and acc.branch_id = #{acc.branchId}
         </if>

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -1832,6 +1832,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 		}
 		declare.setStatus(1);
+		int versionKHTS = StringUtil.isBlank(declare.getVersion()) ? 1 : Integer.parseInt(declare.getVersion());
+		declare.setVersion(String.valueOf(versionKHTS + 1));
 		baseMapper.updateById(declare);
 		if ("KHTS".equals(declare.getBusinessType())) {
 			return declare;
@@ -4354,6 +4356,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		if (detail == null) {
 			throw new SecurityException("未查到单据信息");
 		}
+		int version = StringUtil.isBlank(detail.getVersion()) ? 1 : Integer.parseInt(detail.getVersion());
+		detail.setVersion(String.valueOf(version + 1));
 		detail.setIssueStatus("1");
 		baseMapper.updateById(detail);
 		boolean type = false;

+ 104 - 5
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/SeaContainerNumberItemServiceImpl.java

@@ -24,6 +24,9 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.Util.CurrencyUtils;
+import org.springblade.los.Util.RegularUtils;
+import org.springblade.los.basic.cntr.entity.BCntrTypes;
+import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.cur.entity.BCurExrate;
 import org.springblade.los.basic.fees.entity.FeesTemplateSonItems;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
@@ -32,14 +35,15 @@ import org.springblade.los.basic.fees.service.ILosBFeesTemplateService;
 import org.springblade.los.box.entity.PutBox;
 import org.springblade.los.box.service.IPutBoxService;
 import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.business.sea.entity.Containers;
 import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.business.sea.entity.SeaContainerNumberItem;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.mapper.SeaContainerNumberItemMapper;
+import org.springblade.los.business.sea.service.IContainersService;
 import org.springblade.los.business.sea.service.IPreContainersService;
 import org.springblade.los.business.sea.service.ISeaContainerNumberItemService;
 import org.springblade.los.business.sea.vo.SeaContainerNumberItemVO;
-import org.springblade.los.excel.UpdatePodStationExcel;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springframework.stereotype.Service;
@@ -65,6 +69,10 @@ public class SeaContainerNumberItemServiceImpl extends ServiceImpl<SeaContainerN
 
 	private final IPreContainersService preContainersService;
 
+	private final IContainersService containersService;
+
+	private final IBCntrTypesService bCntrTypesService;
+
 	private final BillsMapper billsMapper;
 
 	private final ILosBFeesTemplateService losBFeesTemplateService;
@@ -108,9 +116,9 @@ public class SeaContainerNumberItemServiceImpl extends ServiceImpl<SeaContainerN
 				throw new RuntimeException("数据错误,请联系管理员");
 			}
 			item.setOccupyNum(item.getOccupyNum() + containerNumberItem.getOccupyNum());
-			item.setRemainingNum(item.getTotalNum() - item.getOccupyNum());
+			item.setRemainingNum(item.getRemainingNum() - item.getOccupyNum());
 		}
-		putBoxService.updateBatchById(putBoxList);
+		putBoxService.updateBatchByIdAndVersion(putBoxList);
 		PreContainers preContainers = preContainersService.getOne(new LambdaQueryWrapper<PreContainers>()
 			.eq(PreContainers::getPid, containerNumberItemList.get(0).getPid())
 			.eq(PreContainers::getCntrTypeCode, containerNumberItemList.get(0).getBoxType()));
@@ -269,10 +277,76 @@ public class SeaContainerNumberItemServiceImpl extends ServiceImpl<SeaContainerN
 				}
 			}
 		}
+
+		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getCntrTypeCode, preContainers.getCntrTypeCode())
+			.eq(Containers::getPid, preContainers.getPid()));
+		List<Containers> containersListNew = new ArrayList<>();
+		if (containersList.isEmpty() || containersList.stream().noneMatch(e -> e.getCntrTypeCode().equals(preContainers.getCntrTypeCode()))) {
+			BCntrTypes bCntrTypes = bCntrTypesService.getOne(new LambdaQueryWrapper<BCntrTypes>()
+				.eq(BCntrTypes::getCnName, preContainers.getCntrTypeCode())
+				.eq(BCntrTypes::getStatus, 0)
+				.eq(BCntrTypes::getTenantId, AuthUtil.getTenantId())
+				.eq(BCntrTypes::getIsDeleted, 0)
+				.last("LIMIT 1"));
+			if (bCntrTypes == null) {
+				throw new RuntimeException("未查到对应箱型数据,请先维护箱型信息");
+			}
+			Bills bills = billsMapper.selectById(preContainers.getPid());
+			if (bills == null) {
+				throw new RuntimeException("未找到单据信息");
+			}
+			String ediCode = RegularUtils.getEdiCode(bills.getCyCode(), bCntrTypes.getExtendedData());
+			//生成海运进出口配箱-箱号装箱
+			for (int i = 0; i < preContainers.getQuantity(); i++) {
+				Containers containers = new Containers();
+				containers.setCreateTime(new Date());
+				containers.setCreateUser(AuthUtil.getUserId());
+				containers.setCreateUserName(AuthUtil.getUserName());
+				containers.setCyCntrCode(ediCode);
+				if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+					containers.setBranchId(preContainers.getBranchId());
+					containers.setCreateDept(preContainers.getCreateDept());
+					containers.setCreateDeptName(preContainers.getCreateDeptName());
+				}
+				containers.setBillNo(bills.getBillNo());
+				containers.setPolId(bills.getPolId());
+				containers.setPolCode(bills.getPolCode());
+				containers.setPolCnName(bills.getPolCnName());
+				containers.setPolEnName(bills.getPolEnName());
+				containers.setPodId(bills.getPodId());
+				containers.setPodCode(bills.getPodCode());
+				containers.setPodCnName(bills.getPodCnName());
+				containers.setPodEnName(bills.getPodEnName());
+				containers.setPodStationId(bills.getPodCyId());
+				containers.setPodStationCode(bills.getPodCyCode());
+				containers.setPodStationCname(bills.getPodCyCnName());
+				containers.setPodStationEname(bills.getPodCyEnName());
+				containers.setMblno(bills.getMblno());
+				containers.setHblno(bills.getHblno());
+				containers.setCommodityDescr(bills.getCommodityDescr());
+				containers.setPackingUnitId(bills.getPackingUnitId());
+				containers.setPackingUnit(bills.getPackingUnit());
+				containers.setPid(preContainers.getPid());
+				containers.setTeu(preContainers.getTeu());
+				containers.setIsSoc(preContainers.getIsSoc());
+				containers.setIsOneway(preContainers.getIsOneway());
+				containers.setCntrTypeCode(preContainers.getCntrTypeCode());
+				containers.setCntrTypeCodeId(preContainers.getCntrTypeCodeId());
+				containers.setLineNo(preContainers.getId());
+				containersListNew.add(containers);
+			}
+			if (!containersListNew.isEmpty()) {
+				containersService.saveOrUpdateBatch(containersListNew);
+			}
+		}
 		return R.data(containerNumberItemList);
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R revokeSelectedContainerNumber(String boxType, String billId) {
 		List<SeaContainerNumberItem> containerNumberItemList = baseMapper.selectList(new LambdaQueryWrapper<SeaContainerNumberItem>()
 			.eq(SeaContainerNumberItem::getTenantId, AuthUtil.getTenantId())
@@ -298,10 +372,13 @@ public class SeaContainerNumberItemServiceImpl extends ServiceImpl<SeaContainerN
 			if (containerNumberItem == null) {
 				throw new RuntimeException("数据错误,请联系管理员");
 			}
+			if (item.getOccupyNum() < containerNumberItem.getOccupyNum()) {
+				throw new RuntimeException("放箱号已出场,撤销失败");
+			}
 			item.setOccupyNum(item.getOccupyNum() - containerNumberItem.getOccupyNum());
-			item.setRemainingNum(item.getTotalNum() - item.getOccupyNum());
+			item.setRemainingNum(item.getRemainingNum() + item.getOccupyNum());
 		}
-		putBoxService.updateBatchById(putBoxList);
+		putBoxService.updateBatchByIdAndVersion(putBoxList);
 		PreContainers preContainers = preContainersService.getOne(new LambdaQueryWrapper<PreContainers>()
 			.eq(PreContainers::getPid, billId)
 			.eq(PreContainers::getCntrTypeCode, boxType));
@@ -332,6 +409,28 @@ public class SeaContainerNumberItemServiceImpl extends ServiceImpl<SeaContainerN
 		if (!feeIdList.isEmpty()) {
 			feeCenterService.removeByIds(feeIdList);
 		}
+		List<Containers> containersList = containersService.list(new LambdaQueryWrapper<Containers>()
+			.eq(Containers::getTenantId, AuthUtil.getTenantId())
+			.eq(Containers::getIsDeleted, 0)
+			.eq(Containers::getCntrTypeCode, preContainers.getCntrTypeCode())
+			.eq(Containers::getPid, preContainers.getPid()));
+		if (!containersList.isEmpty()) {
+			List<Containers> containers = containersList.stream().filter(e -> e.getCntrTypeCode().equals(preContainers.getCntrTypeCode()))
+				.collect(Collectors.toList());
+			List<Long> containersIdList = new ArrayList<>();
+			for (Containers item : containers){
+				if (new BigDecimal("0.00").compareTo(item.getQuantity()) != 0){
+					throw new RuntimeException("已配箱,请先撤销后再操作!");
+				}
+				if (ObjectUtils.isNotNull(item.getCntrNo())){
+					throw new RuntimeException("存在箱号,请先清空后再操作!");
+				}
+				containersIdList.add(item.getId());
+			}
+			if (!containersIdList.isEmpty()) {
+				containersService.removeByIds(containersIdList);
+			}
+		}
 		return R.data("操作成功");
 	}
 

+ 8 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -395,6 +395,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					}
 					if ("KHTS".equals(bills.getBusinessType())) {
 						bills.setStatus(2);
+						int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
+						bills.setVersion(String.valueOf(version + 1));
 						billsMapper.updateById(bills);
 					} else {
 						this.updateBills(bills, 2);
@@ -473,6 +475,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				if ("KHTS".equals(bills.getBusinessType())) {
 					bills.setStatus(4);
+					int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
+					bills.setVersion(String.valueOf(version + 1));
 					billsMapper.updateById(bills);
 				} else {
 					this.updateBills(bills, 4);
@@ -502,6 +506,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				if ("KHTS".equals(bills.getBusinessType())) {
 					bills.setStatus(3);
+					int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
+					bills.setVersion(String.valueOf(version + 1));
 					billsMapper.updateById(bills);
 				} else {
 					this.updateBills(bills, 3);
@@ -527,6 +533,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				}
 				if ("KHTS".equals(bills.getBusinessType())) {
 					bills.setStatus(4);
+					int version = StringUtil.isBlank(bills.getVersion()) ? 1 : Integer.parseInt(bills.getVersion());
+					bills.setVersion(String.valueOf(version + 1));
 					billsMapper.updateById(bills);
 				} else {
 					this.updateBills(bills, 4);

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

@@ -2054,7 +2054,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 							feeCenterD.setVesselEnName(bills.getVesselEnName());
 							feeCenterD.setVoyageNo(bills.getVoyageNo());
 							feeCenterD.setMblno(bills.getMblno());
-							feeCenterD.setHblno(bills.getHblno());
+							feeCenterD.setHblno(item.getHblno());
 							feeCenterD.setEtd(bills.getEtd());
 							feeCenterD.setEta(bills.getEta());
 							feeCenterD.setPolId(bills.getPolId());

+ 8 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java

@@ -41,6 +41,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 业务-发票主表 控制器
@@ -408,5 +409,12 @@ public class FinInvoicesController extends BladeController {
 		return finInvoicesService.openedReceived(billId);
 	}
 
+	/**
+	 * 通过账单id查询销项发票记录
+	 */
+	@GetMapping("/getAccBillIdList")
+	public R<List<FinInvoices>> getAccBillIdList(@RequestParam("accBillId") Long accBillId) {
+		return R.data(finInvoicesService.getAccBillIdList(accBillId));
+	}
 
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/IFinInvoicesService.java

@@ -137,4 +137,6 @@ public interface IFinInvoicesService extends IService<FinInvoices> {
 	R add(FinInvoices finInvoices);
 
 	R openedReceived(String billId);
+
+	List<FinInvoices> getAccBillIdList(Long accBillId);
 }

+ 48 - 6
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -165,7 +165,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				.select(FinInvoices::getId, FinInvoices::getVersion)
 				.eq(FinInvoices::getId, finInvoices.getId()));
 			if (!Objects.equals(dataSourceBill.getVersion(), finInvoices.getVersion())) {
-				throw new RuntimeException( "数据已被其他用户更新,请等待刷新后重试");
+				throw new RuntimeException("数据已被其他用户更新,请等待刷新后重试");
 			}
 			// 每更新一次往上累加一次版本
 			// 旧数据处理
@@ -1779,7 +1779,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			detail.setMblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));
 			int limit = finInvoices.getFinInvoicesItemsList().size();
-			if (finInvoices.getFinInvoicesItemsList().size()>500){
+			if (finInvoices.getFinInvoicesItemsList().size() > 500) {
 				limit = 500;
 			}
 			detail.setBusinessNo(finInvoices.getFinInvoicesItemsList().stream().limit(limit).map(FinInvoicesItems::getBillNo).distinct().collect(Collectors.joining(",")));
@@ -1855,7 +1855,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			detail.setMblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getHblno).distinct().collect(Collectors.joining(",")));
 			int limit = finInvoices.getFinInvoicesItemsList().size();
-			if (finInvoices.getFinInvoicesItemsList().size()>500){
+			if (finInvoices.getFinInvoicesItemsList().size() > 500) {
 				limit = 500;
 			}
 			detail.setBusinessNo(finInvoices.getFinInvoicesItemsList().stream().limit(limit).map(FinInvoicesItems::getBillNo).distinct().collect(Collectors.joining(",")));
@@ -1870,6 +1870,18 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				.eq(FeeCenter::getIsDeleted, 0));
 			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
 			updateBillsStatus(finInvoices.getFinInvoicesItemsList(), feeCenterList);
+			List<FeeCenter> feeCenters = new ArrayList<>();
+			for (FeeCenter feeCenter : feeCenterList) {
+				int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
+				feeCenter.setVersion(String.valueOf(version + 1));
+				feeCenter.setInvoiceNo(detail.getTaxInvoiceNo());
+				feeCenter.setUpdateTime(new Date());
+				feeCenter.setUpdateUser(AuthUtil.getUserId());
+				feeCenters.add(feeCenter);
+			}
+			if (!feeCenters.isEmpty()){
+				feeCenterService.updateBatchById(feeCenters);
+			}
 		} else {
 			throw new RuntimeException("请选择明细");
 		}
@@ -1931,6 +1943,18 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				.eq(FeeCenter::getAccStatus, 1)
 				.eq(FeeCenter::getIsDeleted, 0));
 			updateBillsStatus(finInvoices.getFinInvoicesItemsList(), feeCenterList);
+			List<FeeCenter> feeCenters = new ArrayList<>();
+			for (FeeCenter feeCenter : feeCenterList) {
+				int version = StringUtil.isBlank(feeCenter.getVersion()) ? 1 : Integer.parseInt(feeCenter.getVersion());
+				feeCenter.setVersion(String.valueOf(version + 1));
+				feeCenter.setInvoiceNo("");
+				feeCenter.setUpdateTime(new Date());
+				feeCenter.setUpdateUser(AuthUtil.getUserId());
+				feeCenters.add(feeCenter);
+			}
+			if (!feeCenters.isEmpty()){
+				feeCenterService.updateBatchById(feeCenters);
+			}
 		} else {
 			throw new RuntimeException("请选择明细");
 		}
@@ -2850,7 +2874,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				.select(FinInvoices::getId, FinInvoices::getVersion)
 				.eq(FinInvoices::getId, finInvoices.getId()));
 			if (!Objects.equals(dataSourceBill.getVersion(), finInvoices.getVersion())) {
-				throw new RuntimeException( "数据已被其他用户更新,请等待刷新后重试");
+				throw new RuntimeException("数据已被其他用户更新,请等待刷新后重试");
 			}
 			// 每更新一次往上累加一次版本
 			// 旧数据处理
@@ -2900,13 +2924,31 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		return R.success("操作成功");
 	}
 
+	@Override
+	public List<FinInvoices> getAccBillIdList(Long accBillId) {
+		List<FinInvoices> finStlBillsList = new ArrayList<>();
+		List<FinInvoicesItems> stlBillsItemsList = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
+			.eq(FinInvoicesItems::getIsDeleted, 0)
+			.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FinInvoicesItems::getAccBillId, accBillId));
+		if (!stlBillsItemsList.isEmpty()) {
+			finStlBillsList = baseMapper.selectList(new LambdaQueryWrapper<FinInvoices>()
+				.eq(FinInvoices::getIsDeleted, 0)
+				.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
+				.eq(FinInvoices::getType, "销项")
+				.eq(FinInvoices::getStatus, 3)
+				.in(FinInvoices::getId, stlBillsItemsList.stream().map(FinInvoicesItems::getPid).distinct().collect(Collectors.toList())));
+		}
+		return finStlBillsList;
+	}
+
 	private FinInvoices countFeeItems(FinInvoices reconciliation, List<FinInvoicesItems> finStlBillsItemsList, String exrateType) {
 		BigDecimal amountCnyD = new BigDecimal("0.00");
 		BigDecimal amountUsdD = new BigDecimal("0.00");
 		BigDecimal amountCnyC = new BigDecimal("0.00");
 		BigDecimal amountUsdC = new BigDecimal("0.00");
-		String mblno = ObjectUtils.isNull(reconciliation.getMblnos())?"":reconciliation.getMblnos();
-		String hblno = ObjectUtils.isNull(reconciliation.getHblnos())?"":reconciliation.getHblnos();
+		String mblno = ObjectUtils.isNull(reconciliation.getMblnos()) ? "" : reconciliation.getMblnos();
+		String hblno = ObjectUtils.isNull(reconciliation.getHblnos()) ? "" : reconciliation.getHblnos();
 		for (FinInvoicesItems item : finStlBillsItemsList) {
 			hblno = hblno + "," + item.getHblno() + ",";
 			mblno = mblno + "," + item.getMblno() + ",";

+ 15 - 4
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java

@@ -31,7 +31,6 @@ 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.finance.invoices.entity.FinInvoices;
 import org.springblade.los.finance.stl.entity.FinStlBills;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
 import org.springblade.los.finance.stl.vo.FinStlBillsVO;
@@ -39,6 +38,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 业务-财务对账单和结算 控制器
@@ -123,12 +123,12 @@ public class FinStlBillsController extends BladeController {
 		lambdaQueryWrapper.le(ObjectUtils.isNotNull(finStlBills.getAuditDateTo()), FinStlBills::getAuditDateTo, finStlBills.getAuditDateTo());
 		lambdaQueryWrapper.orderByDesc(FinStlBills::getCreateTime);
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq( FinStlBills::getBranchId, AuthUtil.getDeptId());
+			lambdaQueryWrapper.eq(FinStlBills::getBranchId, AuthUtil.getDeptId());
 		} else {
 			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(finStlBills.getBranchId()), FinStlBills::getBranchId, finStlBills.getBranchId());
 		}
 		IPage<FinStlBills> pages = finStlBillsService.page(Condition.getPage(query), lambdaQueryWrapper);
-		for (FinStlBills item: pages.getRecords()){
+		for (FinStlBills item : pages.getRecords()) {
 			item.setCreateUserNames(item.getCreateUserName());
 		}
 		return R.data(pages);
@@ -279,6 +279,7 @@ public class FinStlBillsController extends BladeController {
 	public R confirmSettlement(@Valid @RequestBody FinStlBills finStlBills) {
 		return finStlBillsService.confirmSettlement(finStlBills);
 	}
+
 	/**
 	 * 财务结算 撤销
 	 */
@@ -300,6 +301,7 @@ public class FinStlBillsController extends BladeController {
 	public R confirmSettlementV1(@Valid @RequestBody FinStlBills finStlBills) {
 		return finStlBillsService.confirmSettlementV1(finStlBills);
 	}
+
 	/**
 	 * 财务结算 撤销  1.0
 	 */
@@ -424,7 +426,7 @@ public class FinStlBillsController extends BladeController {
 	 */
 	@GetMapping("/generateFinStlBillsV1")
 	@RepeatSubmit
-	public R generateFinStlBillsV1(@RequestParam("billId") String billId,@RequestParam("date") Date date) {
+	public R generateFinStlBillsV1(@RequestParam("billId") String billId, @RequestParam("date") Date date) {
 		return finStlBillsService.generateFinStlBillsV1(billId, date);
 	}
 
@@ -466,4 +468,13 @@ public class FinStlBillsController extends BladeController {
 		return finStlBillsService.feeItemsDelete(finStlBills);
 	}
 
+	/**
+	 * 通过账单id查询结算单记录
+	 */
+	@GetMapping("/getAccBillIdList")
+	public R<List<FinStlBills>> getAccBillIdList(@RequestParam("accBillId") Long accBillId) {
+		return R.data(finStlBillsService.getAccBillIdList(accBillId));
+	}
+
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java

@@ -132,4 +132,6 @@ public interface IFinStlBillsService extends IService<FinStlBills> {
 	R revokeSettlementV1(FinStlBills finStlBills);
 
 	R add(FinStlBills finStlBills);
+
+    List<FinStlBills> getAccBillIdList(Long accBillId);
 }

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

@@ -243,7 +243,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.select(FinStlBills::getId, FinStlBills::getVersion)
 				.eq(FinStlBills::getId, finStlBills.getId()));
 			if (!Objects.equals(dataSourceBill.getVersion(), finStlBills.getVersion())) {
-				throw new RuntimeException( "数据已被其他用户更新,请等待刷新后重试");
+				throw new RuntimeException("数据已被其他用户更新,请等待刷新后重试");
 			}
 			// 每更新一次往上累加一次版本
 			// 旧数据处理
@@ -2517,11 +2517,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 				stlBills.setBusinessTypes(finStlBillsItemsList.get(0).getBusinessType());
-				if ("SE,SI,SEA,SIA".contains(stlBills.getBusinessTypes())){
+				if ("SE,SI,SEA,SIA".contains(stlBills.getBusinessTypes())) {
 					stlBills.setBusinessTypes("海运");
-				}else if("OW-N,OW-F".contains(stlBills.getBusinessTypes())){
+				} else if ("OW-N,OW-F".contains(stlBills.getBusinessTypes())) {
 					stlBills.setBusinessTypes("OW");
-				}else{
+				} else {
 					stlBills.setBusinessTypes("箱管");
 				}
 			}
@@ -2696,8 +2696,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		BigDecimal amountCrUSD = new BigDecimal("0.00");
 		BigDecimal amountDrLoc = new BigDecimal("0.00");
 		BigDecimal amountCrLoc = new BigDecimal("0.00");
-		StringBuilder mblno = new StringBuilder(ObjectUtils.isNull(reconciliation.getMblnos())?"":reconciliation.getMblnos());
-		StringBuilder hblno = new StringBuilder(ObjectUtils.isNull(reconciliation.getHblnos())?"":reconciliation.getHblnos());
+		StringBuilder mblno = new StringBuilder(ObjectUtils.isNull(reconciliation.getMblnos()) ? "" : reconciliation.getMblnos());
+		StringBuilder hblno = new StringBuilder(ObjectUtils.isNull(reconciliation.getHblnos()) ? "" : reconciliation.getHblnos());
 		//对账明细状态修改  已对账
 		for (FinStlBillsItems item : finStlBillsItemsList) {
 			hblno.append(",").append(item.getHblno()).append(",");
@@ -2729,11 +2729,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				}
 			}
 		}
-		if (ObjectUtils.isNotNull(mblno.toString())){
+		if (ObjectUtils.isNotNull(mblno.toString())) {
 			List<String> mblnoList = Arrays.asList(mblno.toString().split(","));
 			reconciliation.setMblnos(mblnoList.stream().filter(Objects::nonNull).distinct().collect(Collectors.joining(",")));
 		}
-		if (ObjectUtils.isNotNull(hblno.toString())){
+		if (ObjectUtils.isNotNull(hblno.toString())) {
 			List<String> hblnoList = Arrays.asList(hblno.toString().split(","));
 			reconciliation.setHblnos(hblnoList.stream().filter(Objects::nonNull).distinct().collect(Collectors.joining(",")));
 		}
@@ -3251,7 +3251,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			int limit = finStlBills.getFinStlBillsItemsList().size();
-			if (finStlBills.getFinStlBillsItemsList().size()>500){
+			if (finStlBills.getFinStlBillsItemsList().size() > 500) {
 				limit = 500;
 			}
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().limit(limit).map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
@@ -3408,7 +3408,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			int limit = finStlBills.getFinStlBillsItemsList().size();
-			if (finStlBills.getFinStlBillsItemsList().size()>500){
+			if (finStlBills.getFinStlBillsItemsList().size() > 500) {
 				limit = 500;
 			}
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().limit(limit).map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
@@ -3957,7 +3957,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			detail.setMblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getMblno).distinct().collect(Collectors.joining(",")));
 			detail.setHblno(finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getHblno).distinct().collect(Collectors.joining(",")));
 			int limit = finStlBills.getFinStlBillsItemsList().size();
-			if (finStlBills.getFinStlBillsItemsList().size()>500){
+			if (finStlBills.getFinStlBillsItemsList().size() > 500) {
 				limit = 500;
 			}
 			detail.setBusinessNo(finStlBills.getFinStlBillsItemsList().stream().limit(limit).map(FinStlBillsItems::getBillNo).distinct().collect(Collectors.joining(",")));
@@ -4203,7 +4203,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				.select(FinStlBills::getId, FinStlBills::getVersion)
 				.eq(FinStlBills::getId, finStlBills.getId()));
 			if (!Objects.equals(dataSourceBill.getVersion(), finStlBills.getVersion())) {
-				throw new RuntimeException( "数据已被其他用户更新,请等待刷新后重试");
+				throw new RuntimeException("数据已被其他用户更新,请等待刷新后重试");
 			}
 			// 每更新一次往上累加一次版本
 			// 旧数据处理
@@ -4217,4 +4217,22 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		return R.data(finStlBills);
 	}
 
+	@Override
+	public List<FinStlBills> getAccBillIdList(Long accBillId) {
+		List<FinStlBills> finStlBillsList = new ArrayList<>();
+		List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+			.eq(FinStlBillsItems::getIsDeleted, 0)
+			.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBillsItems::getAccBillId, accBillId));
+		if (!stlBillsItemsList.isEmpty()) {
+			finStlBillsList = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
+				.eq(FinStlBills::getIsDeleted, 0)
+				.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+				.eq(FinStlBills::getBusinessType, "STL")
+				.eq(FinStlBills::getStatus, 3)
+				.in(FinStlBills::getId, stlBillsItemsList.stream().map(FinStlBillsItems::getPid).distinct().collect(Collectors.toList())));
+		}
+		return finStlBillsList;
+	}
+
 }

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff