Преглед изворни кода

1.久置柜列表接口增加动态时间排序
2.OW还箱导出中文逗号替换引文逗号
3.费用明细保存模板bug修改
4.生成账单备注赋值明细备注
5.结算中心增加导出接口
6.合并客户接口bug修改
7.放箱号-批量更改放箱号接口bug修改
8.OW拿增加批量修改放箱号接口

纪新园 пре 5 дана
родитељ
комит
ad6006a4f5
14 измењених фајлова са 615 додато и 19 уклоњено
  1. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/TradingBox.java
  2. 18 2
      blade-service/blade-los/src/main/java/org/springblade/los/Util/MergeCorpsUtils.java
  3. 9 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java
  4. 5 5
      blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java
  5. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/UseBoxPlanItemMapper.xml
  6. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/ITradingBoxService.java
  7. 2 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ArchivesServiceImpl.java
  8. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/PutBoxServiceImpl.java
  9. 231 1
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  10. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/UseBoxPlanServiceImpl.java
  11. 164 0
      blade-service/blade-los/src/main/java/org/springblade/los/excel/FinStlBillsExcel.java
  12. 98 8
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  13. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  14. 74 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java

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

@@ -745,6 +745,12 @@ public class TradingBox implements Serializable {
 	private Integer cancelNumber;
 
 	/**
+	 * 来源OW单据id
+	 */
+	@TableField(exist = false)
+	private Long srcId;
+
+	/**
 	 * 临时数据
 	 */
 	@TableField(exist = false)

+ 18 - 2
blade-service/blade-los/src/main/java/org/springblade/los/Util/MergeCorpsUtils.java

@@ -37,6 +37,7 @@ import org.springblade.los.finance.stl.mapper.FinStlBillsMapper;
 import org.springblade.los.finance.stl.service.IFinStlBillsItemsService;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
@@ -75,7 +76,7 @@ public class MergeCorpsUtils {
 
 	private final IFinInvoicesItemsService finInvoicesItemsService;
 
-
+	@Transactional(rollbackFor = Exception.class)
 	public R mergeCorps(Long id, Long mergeId) {
 		BCorps corps = bCorpsService.getById(id);
 
@@ -282,7 +283,10 @@ public class MergeCorpsUtils {
 			.eq(TradingBox::getTenantId, AuthUtil.getTenantId())
 			.eq(TradingBox::getIsDeleted, 0)
 			.and(i -> i.eq(TradingBox::getPurchaseCompanyId, mergeId).or()
-				.eq(TradingBox::getOwnerId, mergeId)));
+				.eq(TradingBox::getOwnerId, mergeId).or()
+				.eq(TradingBox::getPolCyId, mergeId).or()
+				.eq(TradingBox::getPodStationId, mergeId).or()
+				.eq(TradingBox::getPolStationId, mergeId)));
 		if (!tradingBoxList.isEmpty()){
 			for (TradingBox item : tradingBoxList){
 				item.setUpdateTime(new Date());
@@ -296,6 +300,18 @@ public class MergeCorpsUtils {
 					item.setOwnerId(corps.getId());
 					item.setOwnerName(corps.getCnName());
 				}
+				if (mergeId.equals(item.getPolCyId())){
+					item.setPolCyId(corps.getId());
+					item.setPolCyCname(corps.getCnName());
+				}
+				if (mergeId.equals(item.getPodStationId())){
+					item.setPodStationId(corps.getId());
+					item.setPodStationCname(corps.getCnName());
+				}
+				if (mergeId.equals(item.getPolStationId())){
+					item.setPolStationId(corps.getId());
+					item.setPolStationCname(corps.getCnName());
+				}
 			}
 			tradingBoxService.updateBatchById(tradingBoxList);
 		}

+ 9 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/TradingBoxController.java

@@ -36,6 +36,7 @@ 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.PutBox;
 import org.springblade.los.box.entity.TradingBox;
 import org.springblade.los.box.entity.TradingBoxItem;
 import org.springblade.los.box.service.ITradingBoxItemService;
@@ -554,4 +555,12 @@ public class TradingBoxController extends BladeController {
 		return tradingBoxService.deleteById(ids);
 	}
 
+	/**
+	 * 批量修改放箱号
+	 */
+	@PostMapping("/batchContainerNumber")
+	public R batchContainerNumber(@Valid @RequestBody TradingBox tradingBox) {
+		return tradingBoxService.batchContainerNumber(tradingBox);
+	}
+
 }

+ 5 - 5
blade-service/blade-los/src/main/java/org/springblade/los/box/dynamics/service/impl/BoxDynamicsRecordServiceImpl.java

@@ -916,14 +916,14 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 			appearance.setBoxCode(item.getCode());
 			appearance.setBoxType(tradingBox.getBoxTypeQuantityOne());
 			if (ObjectUtils.isNotNull(item.getPodStationId())) {
-				portsList.stream().filter(e -> ObjectUtils.isNotNull(e.getAddressId()) && e.getAddressId().contains(item.getPodStationId() + ""))
-					.findFirst().ifPresent(ports -> appearance.setPortName(ports.getCnName()));
-			} else {
+                portsList.stream().filter(e -> ObjectUtils.isNotNull(e.getAddressId()) && e.getAddressId().contains(item.getPodStationId() + ""))
+                        .findFirst().ifPresent(ports -> appearance.setPortName(ports.getCnName().replace(",", ",")));
+            } else {
 				if (ObjectUtils.isNotNull(tradingBox.getPodId()) && !tradingBox.getPodId().contains(",")) {
-					appearance.setPortName(tradingBox.getPodCname());
+					appearance.setPortName(tradingBox.getPodCname().replace(",",","));
 				}
 			}
-			appearance.setStationName(item.getPodStationCname());
+			appearance.setStationName(item.getPodStationCname().replace(",",","));
 			appearance.setMblno(item.getHblno());
 			appearance.setObjective("客户还箱");
 			appearance.setStatus(item.getBoxStatus());

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/UseBoxPlanItemMapper.xml

@@ -67,7 +67,7 @@
         <if test="data.endDate !=null and data.endDate != ''">
             AND plan.end_date &lt;= #{data.endDate}
         </if>
-        ORDER BY IF(item.update_time,item.create_time,item.update_time) DESC
+        ORDER BY item.update_time DESC
     </select>
     <select id="exportUseBoxPlanItem" resultType="org.springblade.los.box.excel.UseBoxPlanItemExcel">
         SELECT
@@ -110,7 +110,7 @@
         <if test="data.endDate !=null and data.endDate != ''">
             AND plan.end_date &lt;= #{data.endDate}
         </if>
-        ORDER BY IF(item.update_time,item.create_time,item.update_time) DESC
+        ORDER BY item.update_time DESC
     </select>
 
 </mapper>

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

@@ -104,4 +104,6 @@ public interface ITradingBoxService extends IService<TradingBox> {
 	IPage<ReturnContainerReminderExcel> returnContainerReminder(ReturnContainerReminderExcel returnContainerReminderExcel, IPage<ReturnContainerReminderExcel> page);
 
 	List<EmptyContainerAppearance> returnContainerReminderExport(ReturnContainerReminderExcel returnContainerReminderExcel);
+
+    R batchContainerNumber(TradingBox tradingBox);
 }

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ArchivesServiceImpl.java

@@ -453,7 +453,8 @@ public class ArchivesServiceImpl extends ServiceImpl<ArchivesMapper, Archives> i
 			.eq(ObjectUtils.isNotNull(archives.getAddressId()), Archives::getAddressId, archives.getAddressId())
 			.eq(ObjectUtils.isNotNull(archives.getStationId()), Archives::getStationId, archives.getStationId())
 			.apply(ObjectUtils.isNotNull(archives.getCode()), "find_in_set(code,'" + archives.getCode() + "')")
-			.apply("DATEDIFF( NOW(), new_date ) > " + archives.getLongTermDays()));
+			.apply("DATEDIFF( NOW(), new_date ) > " + archives.getLongTermDays())
+			.orderByAsc(Archives::getNewDate));
 		List<LongTermCabinetExcel> excelList = new ArrayList<>();
 		// 获取当前日期
 		LocalDate currentDate = LocalDate.now();

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

@@ -373,6 +373,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		if (putBox1 == null) {
 			throw new RuntimeException("未查到符合条件放箱号,请先创建");
 		}
+		putBox1.setTotalNum(putBox1.getTotalNum() + putBox.getPutBoxItemsList().size());
 		putBox1.setRemainingNum(putBox1.getRemainingNum() + putBox.getPutBoxItemsList().size());
 		putBox1.setStorageNum(putBox1.getStorageNum() + putBox.getPutBoxItemsList().size());
 		putBox1.setVersion(putBox1.getVersion() + 1);
@@ -389,6 +390,7 @@ public class PutBoxServiceImpl extends ServiceImpl<PutBoxMapper, PutBox> impleme
 		if (putBoxOld.getRemainingNum() < putBox.getPutBoxItemsList().size()) {
 			throw new RuntimeException("可用数量不能小于本次操作数量");
 		}
+		putBoxOld.setTotalNum(putBoxOld.getTotalNum() - putBox.getPutBoxItemsList().size());
 		putBoxOld.setStorageNum(putBoxOld.getStorageNum() - putBox.getPutBoxItemsList().size());
 		putBoxOld.setRemainingNum(putBoxOld.getRemainingNum() - putBox.getPutBoxItemsList().size());
 		putBoxOld.setUpdateTime(new Date());

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

@@ -519,17 +519,18 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				item.setBillCorpCnName(tradingBox.getPurchaseCompanyName());
 				item.setBillCorpEnName(tradingBox.getPurchaseCompanyName());
 				item.setBillShortName(tradingBox.getPurchaseCompanyName());
-				item.setMblno(tradingBox.getContractNo());
 				if ("BUY,ZR,DL".contains(tradingBox.getType())) {
 					item.setPolId(tradingBox.getAddressId());
 					item.setPolCode(tradingBox.getAddressCode());
 					item.setPolCnName(tradingBox.getAddressCname());
 					item.setPolEnName(tradingBox.getAddressCname());
+					item.setMblno(tradingBox.getContractNo());
 				} else if ("OW-N,OW-F".contains(tradingBox.getType())) {
 					item.setPolId(tradingBox.getPolId());
 					item.setPolCode(tradingBox.getPolCode());
 					item.setPolCnName(tradingBox.getPolCname());
 					item.setPolEnName(tradingBox.getPolCname());
+					item.setMblno(tradingBox.getContainerNumber());
 				} else if ("XGDX,CCSQ".contains(tradingBox.getType())) {
 					item.setPolId(tradingBox.getPolId());
 					item.setPolCode(tradingBox.getPolCode());
@@ -539,6 +540,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 					item.setPodCode(tradingBox.getPodCode());
 					item.setPodCnName(tradingBox.getPodCname());
 					item.setPodEnName(tradingBox.getPodCname());
+					item.setMblno(tradingBox.getContractNo());
 				}
 				if (item.getId() == null) {
 					item.setCreateUser(AuthUtil.getUserId());
@@ -4011,4 +4013,232 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		return appearanceList;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R batchContainerNumber(TradingBox tradingBox) {
+		if (ObjectUtils.isNull(tradingBox.getId()) || ObjectUtils.isNull(tradingBox.getContainerNumber()) ||
+			ObjectUtils.isNull(tradingBox.getSrcId()) || ObjectUtils.isNull(tradingBox.getTradingBoxItemsList())
+			|| tradingBox.getTradingBoxItemsList().isEmpty()) {
+			throw new RuntimeException("缺少必要请求参数");
+		}
+		List<String> codeList = tradingBox.getTradingBoxItemsList().stream().map(TradingBoxItem::getCode).collect(Collectors.toList());
+		List<Archives> archivesList = archivesService.list(new LambdaQueryWrapper<Archives>()
+			.eq(Archives::getTenantId, AuthUtil.getTenantId())
+			.eq(Archives::getIsDeleted, 0)
+			.in(Archives::getCode, codeList));
+		if (archivesList == null) {
+			throw new RuntimeException("未查到箱档案信息");
+		}
+		TradingBox tradingBox1 = baseMapper.selectById(tradingBox.getId());
+		if (tradingBox1 == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		PutBox putBox = putBoxService.getOne(new LambdaQueryWrapper<PutBox>()
+			.eq(PutBox::getTenantId, AuthUtil.getTenantId())
+			.eq(PutBox::getIsDeleted, 0)
+			.eq(PutBox::getSrcId, tradingBox1.getId()));
+		if (putBox == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		List<PutBoxItems> putBoxItemsList = putBoxItemsService.list(new LambdaQueryWrapper<PutBoxItems>()
+			.eq(PutBoxItems::getTenantId, AuthUtil.getTenantId())
+			.eq(PutBoxItems::getIsDeleted, 0)
+			.eq(PutBoxItems::getPid, putBox.getId())
+			.in(PutBoxItems::getBoxCode, codeList));
+		if (putBoxItemsList == null) {
+			throw new RuntimeException("未查到箱号明细信息");
+		}
+		TradingBox tradingBoxNew = baseMapper.selectById(tradingBox.getSrcId());
+		if (tradingBoxNew == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		PutBox putBoxNew = putBoxService.getOne(new LambdaQueryWrapper<PutBox>()
+			.eq(PutBox::getTenantId, AuthUtil.getTenantId())
+			.eq(PutBox::getIsDeleted, 0)
+			.eq(PutBox::getSrcId, tradingBoxNew.getId()));
+		if (putBoxNew == null) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		String[] arr = tradingBox1.getCode().split(",");
+		List<String> codeNew = new ArrayList<>();
+		for (String item : arr) {
+			if (!codeList.contains(item)) {
+				codeNew.add(item);
+			}
+		}
+		//原OW拿单据
+		tradingBox1.setCode(String.join(",", codeNew));
+		tradingBox1.setBoxNumber(tradingBox1.getBoxNumber() - tradingBox.getTradingBoxItemsList().size());
+		tradingBox1.setSuitcaseNum(tradingBox1.getSuitcaseNum() - tradingBox.getTradingBoxItemsList().size());
+		tradingBox1.setNotSuitcaseNum(tradingBox1.getBoxNumber()-tradingBox1.getSuitcaseNum());
+		tradingBox1.setUpdateTime(new Date());
+		tradingBox1.setUpdateUser(AuthUtil.getUserId());
+		tradingBox1.setUpdateUserName(AuthUtil.getUserName());
+		int version = StringUtil.isBlank(tradingBox1.getVersion()) ? 1 : Integer.parseInt(tradingBox1.getVersion());
+		tradingBox1.setVersion(String.valueOf(version + 1));
+		baseMapper.updateById(tradingBox1);
+        //原放箱号单据
+		putBox.setCode(String.join(",", codeNew));
+		if (putBox.getRemainingNum()<tradingBox.getTradingBoxItemsList().size()){
+			throw new RuntimeException("放箱号可用数量小于本次更改数量");
+		}
+		if (putBox.getStorageNum()<tradingBox.getTradingBoxItemsList().size()){
+			throw new RuntimeException("放箱号盘存数量小于本次更改数量");
+		}
+		putBox.setTotalNum(putBox.getTotalNum() - tradingBox.getTradingBoxItemsList().size());
+		putBox.setRemainingNum(putBox.getRemainingNum() - tradingBox.getTradingBoxItemsList().size());
+		putBox.setStorageNum(putBox.getStorageNum() - tradingBox.getTradingBoxItemsList().size());
+		putBox.setUpdateTime(new Date());
+		putBox.setUpdateUser(AuthUtil.getUserId());
+		putBox.setUpdateUserName(AuthUtil.getUserName());
+		putBox.setVersion(putBox.getVersion()+1);
+		putBoxService.updateById(putBox);
+		//新OW拿单据
+		tradingBoxNew.setCode((ObjectUtils.isNull(tradingBoxNew.getCode()) ? "" : tradingBoxNew.getCode() + ",") + String.join(",", codeList));
+		if (tradingBoxNew.getNotSuitcaseNum() < tradingBox.getTradingBoxItemsList().size()){
+			throw new RuntimeException("放箱号剩余未提箱数量小于本次更改数量");
+		}
+		tradingBoxNew.setSuitcaseNum(tradingBoxNew.getSuitcaseNum()+tradingBox.getTradingBoxItemsList().size());
+		tradingBoxNew.setNotSuitcaseNum(tradingBox1.getBoxNumber()-tradingBox1.getSuitcaseNum());
+		tradingBoxNew.setUpdateTime(new Date());
+		tradingBoxNew.setUpdateUser(AuthUtil.getUserId());
+		tradingBoxNew.setUpdateUserName(AuthUtil.getUserName());
+		int version1 = StringUtil.isBlank(tradingBoxNew.getVersion()) ? 1 : Integer.parseInt(tradingBoxNew.getVersion());
+		tradingBoxNew.setVersion(String.valueOf(version1 + 1));
+		baseMapper.updateById(tradingBoxNew);
+		//新放箱号单据
+		putBoxNew.setCode((ObjectUtils.isNull(tradingBoxNew.getCode()) ? "" : tradingBoxNew.getCode() + ",") + String.join(",", codeList));
+		putBoxNew.setTotalNum(putBox.getTotalNum() + tradingBox.getTradingBoxItemsList().size());
+		putBoxNew.setRemainingNum(putBox.getRemainingNum() + tradingBox.getTradingBoxItemsList().size());
+		putBoxNew.setStorageNum(putBox.getStorageNum() + tradingBox.getTradingBoxItemsList().size());
+		putBoxNew.setUpdateTime(new Date());
+		putBoxNew.setUpdateUser(AuthUtil.getUserId());
+		putBoxNew.setUpdateUserName(AuthUtil.getUserName());
+		putBoxNew.setVersion(putBoxNew.getVersion()+1);
+		putBoxService.updateById(putBoxNew);
+		//OW拿箱明细
+		for (TradingBoxItem item : tradingBox.getTradingBoxItemsList()) {
+			item.setContainerNumber(tradingBoxNew.getContainerNumber());
+			item.setPid(tradingBoxNew.getId());
+			item.setUpdateUserName(AuthUtil.getUserName());
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateTime(new Date());
+			item.setBoxEastId(tradingBoxNew.getPurchaseCompanyId());
+			item.setBoxEastName(tradingBoxNew.getPurchaseCompanyName());
+			item.setStationId(tradingBoxNew.getPolStationId());
+			item.setStationCode(tradingBoxNew.getPolStationCode());
+			item.setStationCname(tradingBoxNew.getPolStationCname());
+			item.setStationEname(tradingBoxNew.getPolStationEname());
+			item.setPolCyId(tradingBoxNew.getPolStationId());
+			item.setPolCyCode(tradingBoxNew.getPolStationCode());
+			item.setPolCyCname(tradingBoxNew.getPolStationCname());
+			item.setPolCyEname(tradingBoxNew.getPolStationEname());
+			item.setPortId(tradingBoxNew.getPolId());
+			item.setPortCode(tradingBoxNew.getPolCode());
+			item.setPortCname(tradingBoxNew.getPolCname());
+			item.setPortEname(tradingBoxNew.getPolEname());
+		}
+		tradingBoxItemService.updateBatchById(tradingBox.getTradingBoxItemsList());
+		List<ArchivesTrajectory> archivesTrajectoryList = new ArrayList<>();
+		List<Archives> archives = new ArrayList<>();
+		//放箱号箱明细
+		for (PutBoxItems item : putBoxItemsList) {
+			item.setPid(putBoxNew.getId());
+			item.setUpdateTime(new Date());
+			item.setUpdateUser(AuthUtil.getUserId());
+			item.setUpdateUserName(AuthUtil.getUserName());
+			item.setContainerNumber(putBoxNew.getContainerNumber());
+			item.setPolCyId(putBoxNew.getPolId());
+			item.setPolCyCode(putBoxNew.getPolCode());
+			item.setPolCyCname(putBoxNew.getPolCname());
+			item.setPolCyEname(putBoxNew.getPolEname());
+			if (!archivesList.isEmpty()) {
+				Archives archives1 = archivesList.stream().filter(e -> e.getCode().equals(item.getBoxCode())).findFirst().orElse(null);
+				if (archives1 != null) {
+					archives1.setAddressId(putBoxNew.getPolId());
+					archives1.setAddressCname(putBoxNew.getPolCname());
+					archives1.setAddressEname(putBoxNew.getPolEname());
+					archives1.setAddressCode(putBoxNew.getPolCode());
+					archives1.setStationId(putBoxNew.getPolStationId());
+					archives1.setStationCname(putBoxNew.getPolStationCname());
+					archives1.setStationEname(putBoxNew.getPolStationEname());
+					archives1.setStationCode(putBoxNew.getPolStationCode());
+					archives1.setNewDate(new Date());
+					archives1.setContainerNumber(putBoxNew.getContainerNumber());
+					archives1.setContainerNumberType(putBoxNew.getBoxClass());
+					archives1.setContainerNumberOw(putBoxNew.getContainerNumber());
+					archives1.setContainerNumberTypeOw(putBoxNew.getBoxClass());
+					archives.add(archives1);
+				} else {
+					throw new RuntimeException("箱号:" + item.getBoxCode() + "不在箱档案中");
+				}
+			}
+			//记录箱轨迹信息
+			ArchivesTrajectory archivesTrajectory = new ArchivesTrajectory();
+			archivesTrajectory.setPortId(putBoxNew.getPolId());
+			archivesTrajectory.setPortCname(putBoxNew.getPolCname());
+			archivesTrajectory.setPortEname(putBoxNew.getPolEname());
+			archivesTrajectory.setPortCode(putBoxNew.getPolCode());
+			archivesTrajectory.setStationId(putBoxNew.getPolStationId());
+			archivesTrajectory.setStationCname(putBoxNew.getPolStationCname());
+			archivesTrajectory.setStationEname(putBoxNew.getPolStationEname());
+			archivesTrajectory.setStationCode(putBoxNew.getPolStationCode());
+			archivesTrajectory.setNewDate(new Date());
+			archivesTrajectory.setContainerNumber(item.getContainerNumber());
+			archivesTrajectory.setBoxType(item.getBoxType());
+			archivesTrajectory.setBoxStatus(item.getBoxStatus());
+			archivesTrajectory.setBoxCategory(item.getBoxClass());
+			archivesTrajectory.setBoxEastId(item.getBoxEastId());
+			archivesTrajectory.setBoxEastName(item.getBoxEastName());
+			archivesTrajectory.setMblno(item.getMblno());
+			archivesTrajectory.setHblno(item.getHblno());
+			archivesTrajectory.setBoxDynamics("OW-更改放箱号");
+			archivesTrajectory.setStatus("OW-更改放箱号");
+			archivesTrajectory.setCorpId(item.getBoxEastId());
+			archivesTrajectory.setCorpName(item.getBoxEastName());
+			archivesTrajectory.setBillType(putBoxNew.getBoxClass());
+			archivesTrajectory.setCode(item.getBoxCode());
+			archivesTrajectory.setNewDate(new Date());
+			archivesTrajectory.setCreateTime(new Date());
+			archivesTrajectory.setCreateUser(AuthUtil.getUserId());
+			archivesTrajectory.setCreateUserName(AuthUtil.getUserName());
+			archivesTrajectory.setTenantId(AuthUtil.getTenantId());
+			archivesTrajectory.setSrcId(putBoxNew.getId());
+			archivesTrajectory.setEtd(item.getEtd());
+			archivesTrajectory.setPolCyId(item.getPolCyId());
+			archivesTrajectory.setPolCyCode(item.getPolCyCode());
+			archivesTrajectory.setPolCyCname(item.getPolCyCname());
+			archivesTrajectory.setPolCyEname(item.getPolCyEname());
+			archivesTrajectory.setPolFreeBoxUseDays(item.getPolFreeBoxUseDays());
+			archivesTrajectory.setPolPreAppearanceDate(item.getPolPreAppearanceDate());
+			archivesTrajectory.setPolStationEmptyContainerExitDate(item.getPolStationEmptyContainerExitDate());
+			archivesTrajectory.setPolReturnDate(item.getPolReturnDate());
+			archivesTrajectory.setPolOverdueBoxUseDays(item.getPolOverdueBoxUseDays());
+			archivesTrajectory.setEta(item.getEta());
+			archivesTrajectory.setPodEmptyContainerReturnDate(item.getPodEmptyContainerReturnDate());
+			archivesTrajectory.setPodStationId(item.getPodStationId());
+			archivesTrajectory.setPodStationCode(item.getPodStationCode());
+			archivesTrajectory.setPodStationCname(item.getPodStationCname());
+			archivesTrajectory.setPodStationEname(item.getPodStationEname());
+			archivesTrajectory.setPodFreeBoxUseDays(item.getPodFreeBoxUseDays());
+			archivesTrajectory.setPodBoxUseDays(item.getPodBoxUseDays());
+			archivesTrajectory.setShipNameId(item.getShipNameId());
+			archivesTrajectory.setShipCname(item.getShipCname());
+			archivesTrajectory.setShipEname(item.getShipEname());
+			archivesTrajectory.setShipCode(item.getShipCode());
+			archivesTrajectory.setVoyage(item.getVoyage());
+			archivesTrajectoryList.add(archivesTrajectory);
+		}
+		if (!putBoxItemsList.isEmpty()) {
+			putBoxItemsService.updateBatchById(putBoxItemsList);
+		}
+		if (!archivesTrajectoryList.isEmpty()) {
+			archivesTrajectoryService.saveBatch(archivesTrajectoryList);
+		}
+		if (!archivesTrajectoryList.isEmpty()) {
+			archivesService.updateBatchById(archives);
+		}
+		return null;
+	}
+
 }

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/UseBoxPlanServiceImpl.java

@@ -148,6 +148,7 @@ public class UseBoxPlanServiceImpl extends ServiceImpl<UseBoxPlanMapper, UseBoxP
 					item.setCreateTime(new Date());
 					item.setCreateUser(AuthUtil.getUserId());
 					item.setCreateUserName(AuthUtil.getUserName());
+					item.setUpdateTime(new Date());
 					item.setData(item.getPodId()+"-"+item.getPrice20gp()+"-"+item.getPrice40gp()+"-"+item.getPrice40hc());
 				} else {
 					String data = item.getPodId()+"-"+item.getPrice20gp()+"-"+item.getPrice40gp()+"-"+item.getPrice40hc();

+ 164 - 0
blade-service/blade-los/src/main/java/org/springblade/los/excel/FinStlBillsExcel.java

@@ -0,0 +1,164 @@
+/*
+ *      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.excel;
+
+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 lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 业务-海运进出口实体类
+ *
+ * @author BladeX
+ * @since 2024年6月11日15:29:26
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class FinStlBillsExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 分公司
+	 */
+	@ExcelProperty(value = "所属公司")
+	private String branchName;
+	/**
+	 * 客户中文名称
+	 */
+	@ExcelProperty(value = "往来单位")
+	private String corpCnName;
+	/**
+	 * MB/L NO
+	 */
+	@ExcelProperty(value = "MB/L NO")
+	private String mblnos;
+	/**
+	 * HB/L NO
+	 */
+	@ExcelProperty(value = "HB/L NO")
+	private String hblnos;
+	/**
+	 * 业务类型,CHK=对账单 STL=结算单
+	 */
+	@ExcelProperty(value = "业务类型")
+	private String businessType;
+	/**
+	 * 单据编号
+	 */
+	@ExcelProperty(value = "JOB NO")
+	private String billNo;
+	/**
+	 * 来源单号
+	 */
+	@ExcelProperty(value = "来源单号")
+	private String requestNo;
+	/**
+	 * 费用名称
+	 */
+	@ExcelProperty(value = "费用名称")
+	private String feeCnName;
+	/**
+	 * 币别
+	 */
+	@ExcelProperty(value = "币别")
+	private String curCode;
+	/**
+	 * 结算日期
+	 */
+	@ExcelProperty(value = "结算日期")
+	private Date billDate;
+	/**
+	 * 提交日期
+	 */
+	@ExcelProperty(value = "提交日期")
+	private Date auditDateFrom;
+	/**
+	 * 审核日期
+	 */
+	@ExcelProperty(value = "审核日期")
+	private Date auditDateTo;
+	/**
+	 * 收/付
+	 */
+	@ExcelProperty(value = "收/付")
+	private String dc;
+	/**
+	 * 结算人
+	 */
+	@ExcelProperty(value = "结算人")
+	private String createUserName;
+	/**
+	 * 核销人
+	 */
+	@ExcelProperty(value = "核销人")
+	private String createUserNames;
+	/**
+	 * 业务编号
+	 */
+	@ExcelProperty(value = "业务编号")
+	private String businessNo;
+	/**
+	 * ACCT NO
+	 */
+	@ExcelProperty(value = "ACCT NO")
+	private String accountNo;
+	/**
+	 * 对账单号
+	 */
+	@ExcelProperty(value = "对账单号")
+	private String checkNo;
+	/**
+	 * 船名
+	 */
+	@ExcelProperty(value = "船名")
+	private String vesselCnName;
+	/**
+	 * 航次
+	 */
+	@ExcelProperty(value = "航次")
+	private String voyageNo;
+	/**
+	 * 发票汇率
+	 */
+	@ExcelProperty(value = "发票汇率")
+	private BigDecimal exrate;
+	/**
+	 * 本币
+	 */
+	@ExcelProperty(value = "本币")
+	private BigDecimal amountSub;
+	/**
+	 * 外币
+	 */
+	@ExcelProperty(value = "外币")
+	private BigDecimal amountSubUsd;
+	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String elecRemarks;
+
+}

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

@@ -28,6 +28,8 @@ import org.springblade.los.Util.CurrencyUtils;
 import org.springblade.los.Util.StringTools;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
+import org.springblade.los.basic.cntr.entity.BCntrTypes;
+import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.mapper.CorpsMapper;
 import org.springblade.los.basic.corps.service.IBCorpsService;
@@ -114,6 +116,8 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 	private final IBusinessTypeService bBusinessTypeService;
 
+	private final IBCntrTypesService bCntrTypesService;
+
 	@Override
 	public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
 		return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
@@ -2896,17 +2900,34 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		losBFeesTemplateService.save(losBFeesTemplate);
 		List<FeesTemplateItems> feesTemplateItemsList = new ArrayList<>();
 		List<FeesTemplateSonItems> sonItemsList = new ArrayList<>();
-		for (FeeCenter item : losBFeesTemplateVO.getFeeCenterList()) {
+		List<String> boxType = losBFeesTemplateVO.getFeeCenterList().stream().map(FeeCenter::getUnitNo)
+			.filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		List<BCntrTypes> cntrTypesList = bCntrTypesService.list(new LambdaQueryWrapper<BCntrTypes>()
+			.eq(BCntrTypes::getTenantId, AuthUtil.getTenantId())
+			.eq(BCntrTypes::getIsDeleted, 0)
+			.in(BCntrTypes::getCode, boxType));
+		List<FeeCenter> feeCenterListBoxType = new ArrayList<>();
+		List<FeeCenter> feeCenterList;
+		if (!cntrTypesList.isEmpty()) {
+			List<String> boxTypeList = cntrTypesList.stream().map(BCntrTypes::getCode).distinct().collect(Collectors.toList());
+			feeCenterListBoxType = losBFeesTemplateVO.getFeeCenterList().stream().filter(e -> boxTypeList.contains(e.getUnitNo()))
+				.collect(Collectors.toList());
+			feeCenterList = losBFeesTemplateVO.getFeeCenterList().stream().filter(e -> !boxTypeList.contains(e.getUnitNo()))
+				.collect(Collectors.toList());
+		} else {
+			feeCenterList = losBFeesTemplateVO.getFeeCenterList();
+		}
+		for (FeeCenter item : feeCenterList) {
 			FeesTemplateItems feesTemplateItems = new FeesTemplateItems();
-			if ("件数".equals(item.getUnitNo())) {
+			if ("CNTRQTY".equals(item.getUnitNo())) {
 				feesTemplateItems.setQuantityRule("按件数");
-			} else if ("票".equals(item.getUnitNo())) {
+			} else if ("JOB".equals(item.getUnitNo()) || "票".equals(item.getUnitNo())) {
 				feesTemplateItems.setQuantityRule("按票");
-			} else if ("吨".equals(item.getUnitNo())) {
+			} else if ("TON".equals(item.getUnitNo())) {
 				feesTemplateItems.setQuantityRule("按重量");
-			} else if ("箱量".equals(item.getUnitNo())) {
-				feesTemplateItems.setQuantityRule("按箱型");
-			} else if ("体积".equals(item.getUnitNo())) {
+			} else if ("QUANTITY".equals(item.getUnitNo()) || "TEU".equals(item.getUnitNo()) || "箱量".equals(item.getUnitNo())) {
+				feesTemplateItems.setQuantityRule("按箱");
+			} else if ("VOLUME".equals(item.getUnitNo())) {
 				feesTemplateItems.setQuantityRule("按尺码");
 			}
 			feesTemplateItems.setUnitNo(item.getUnitNo());
@@ -2959,9 +2980,78 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			sonItems.setQuantityRule(feesTemplateItems.getQuantityRule());
 			sonItems.setBranchId(deptId);
 			sonItems.setBranchName(deptName);
-			feesTemplateItems.setTemporaryId(temporaryId);
+			sonItems.setTemporaryId(temporaryId);
 			sonItemsList.add(sonItems);
 		}
+		if (!feeCenterListBoxType.isEmpty()) {
+			for (FeeCenter item : feeCenterListBoxType) {
+				String temporaryId = StringTools.generateRandomString(32);
+				FeesTemplateItems feesTemplateItems = new FeesTemplateItems();
+				feesTemplateItems.setQuantityRule("按箱型");
+				feesTemplateItems.setUnitNo("箱量");
+				if (ObjectUtils.isNull(item.getCorpType())) {
+					feesTemplateItems.setCorpId(item.getCorpId());
+					feesTemplateItems.setCorpCnName(item.getCorpCnName());
+					feesTemplateItems.setCorpEnName(item.getCorpEnName());
+				}
+				feesTemplateItems.setPrice(new BigDecimal("1"));
+				feesTemplateItems.setQuantity(new BigDecimal("1"));
+				feesTemplateItems.setTaxRate(new BigDecimal("0"));
+				feesTemplateItems.setCurCode(item.getCurCode());
+				feesTemplateItems.setCorpType(item.getCorpType());
+				feesTemplateItems.setFeeId(item.getFeeId());
+				feesTemplateItems.setFeeCode(item.getFeeCode());
+				feesTemplateItems.setFeeCnName(item.getFeeCnName());
+				feesTemplateItems.setFeeEnName(item.getFeeEnName());
+				feesTemplateItems.setPid(losBFeesTemplate.getId());
+				feesTemplateItems.setDc(losBFeesTemplate.getDc());
+				feesTemplateItems.setBranchId(deptId);
+				feesTemplateItems.setBranchName(deptName);
+				feesTemplateItems.setCreateTime(new Date());
+				feesTemplateItems.setCreateUser(AuthUtil.getUserId());
+				feesTemplateItems.setCreateUserName(AuthUtil.getUserName());
+				feesTemplateItems.setCreateDept(deptId);
+				feesTemplateItems.setCreateDeptName(deptName);
+				if (!feesTemplateItemsList.isEmpty()) {
+					FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> "按箱型".equals(e.getQuantityRule())
+						&& item.getFeeId().equals(e.getFeeId())).findFirst().orElse(null);
+					if (templateItems == null){
+						feesTemplateItems.setTemporaryId(temporaryId);
+						feesTemplateItemsList.add(feesTemplateItems);
+					}else{
+						temporaryId = templateItems.getTemporaryId();
+					}
+				} else {
+					feesTemplateItems.setTemporaryId(temporaryId);
+					feesTemplateItemsList.add(feesTemplateItems);
+				}
+				FeesTemplateSonItems sonItems = new FeesTemplateSonItems();
+				sonItems.setDc(feesTemplateItems.getDc());
+				sonItems.setPid(losBFeesTemplate.getId());
+				sonItems.setTaxRate(item.getTaxRate());
+				sonItems.setCreateTime(new Date());
+				sonItems.setCreateUser(AuthUtil.getUserId());
+				sonItems.setCreateUserName(AuthUtil.getUserName());
+				sonItems.setType(feesTemplateItems.getCorpType());
+				sonItems.setCorpId(feesTemplateItems.getCorpId());
+				sonItems.setCorpCnName(feesTemplateItems.getCorpCnName());
+				sonItems.setCorpEnName(feesTemplateItems.getCorpEnName());
+				sonItems.setFeeId(item.getFeeId());
+				sonItems.setFeeCode(item.getFeeCode());
+				sonItems.setFeeCnName(item.getFeeCnName());
+				sonItems.setFeeEnName(item.getFeeEnName());
+				sonItems.setCostPrice(item.getCostPrice());
+				sonItems.setSalesPrice(item.getPrice());
+				sonItems.setCurCode(item.getCurCode());
+				sonItems.setUnitNo(item.getUnitNo());
+				sonItems.setQuantityRule(feesTemplateItems.getQuantityRule());
+				sonItems.setBranchId(deptId);
+				sonItems.setBranchName(deptName);
+				sonItems.setTemporaryId(temporaryId);
+				sonItemsList.add(sonItems);
+			}
+
+		}
 		if (!feesTemplateItemsList.isEmpty()) {
 			feesTemplateItemsService.saveBatch(feesTemplateItemsList);
 			for (FeesTemplateSonItems item : sonItemsList) {

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

@@ -520,6 +520,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 					throw new RuntimeException("费用:" + item.getFeeCnName() + "缺少业务日期,请重新保存");
 				}
 				FinAccBills data = new FinAccBills();
+				data.setRemarks(item.getRemarks());
 				data.setTrackingNumber(item.getTrackingNumber());
 				data.setCurCode(item.getCurCode());
 				data.setGenerationCorpId(item.getGenerationCorpId());

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

@@ -26,16 +26,23 @@ import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.common.annotation.RepeatSubmit;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
 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.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.los.box.entity.Archives;
+import org.springblade.los.box.excel.LongTermCabinetExcel;
+import org.springblade.los.excel.BBusinessTypeExcel;
+import org.springblade.los.excel.FinStlBillsExcel;
 import org.springblade.los.finance.stl.entity.FinStlBills;
 import org.springblade.los.finance.stl.service.IFinStlBillsService;
 import org.springblade.los.finance.stl.vo.FinStlBillsVO;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
@@ -135,6 +142,73 @@ public class FinStlBillsController extends BladeController {
 	}
 
 	/**
+	 * 财务对账单和结算列表导出
+	 */
+	@GetMapping("/listExport")
+	public void longTermCabinetExport(FinStlBills finStlBills, HttpServletResponse response) {
+		LambdaQueryWrapper<FinStlBills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+			.eq(FinStlBills::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(finStlBills.getBillNo()), FinStlBills::getBillNo, finStlBills.getBillNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getRemarks()), FinStlBills::getRemarks, finStlBills.getRemarks())
+			.like(ObjectUtils.isNotNull(finStlBills.getCollectionSituation()), FinStlBills::getCollectionSituation, finStlBills.getCollectionSituation())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessType()), FinStlBills::getBusinessType, finStlBills.getBusinessType())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessTypes()), FinStlBills::getBusinessTypes, finStlBills.getBusinessTypes())
+			.eq(ObjectUtils.isNotNull(finStlBills.getStatus()), FinStlBills::getStatus, finStlBills.getStatus())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBillStatus()), FinStlBills::getBillStatus, finStlBills.getBillStatus())
+			.like(ObjectUtils.isNotNull(finStlBills.getCreateUserName()), FinStlBills::getCreateUserName, finStlBills.getCreateUserName())
+			.like(ObjectUtils.isNotNull(finStlBills.getCreateUserNames()), FinStlBills::getCreateUserName, finStlBills.getCreateUserNames())
+			.like(ObjectUtils.isNotNull(finStlBills.getBusinessNo()), FinStlBills::getBusinessNo, finStlBills.getBusinessNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getAccountNo()), FinStlBills::getAccountNo, finStlBills.getAccountNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getCheckNo()), FinStlBills::getCheckNo, finStlBills.getCheckNo())
+			.eq(ObjectUtils.isNotNull(finStlBills.getDeptId()), FinStlBills::getDeptId, finStlBills.getDeptId())
+			.like(ObjectUtils.isNotNull(finStlBills.getOperatorName()), FinStlBills::getOperatorName, finStlBills.getOperatorName())
+			.like(ObjectUtils.isNotNull(finStlBills.getSalesName()), FinStlBills::getSalesName, finStlBills.getSalesName())
+			.eq(ObjectUtils.isNotNull(finStlBills.getDc()), FinStlBills::getDc, finStlBills.getDc())
+			.eq(ObjectUtils.isNotNull(finStlBills.getCurCode()), FinStlBills::getCurCode, finStlBills.getCurCode())
+			.and(ObjectUtils.isNotNull(finStlBills.getVesselCnName()), i -> i.like(FinStlBills::getVesselCnName, finStlBills.getVesselCnName()).or()
+				.like(FinStlBills::getVesselEnName, finStlBills.getVesselCnName()))
+			.like(ObjectUtils.isNotNull(finStlBills.getVoyageNo()), FinStlBills::getVoyageNo, finStlBills.getVoyageNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getMblno()), FinStlBills::getMblno, finStlBills.getMblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getMblnos()), FinStlBills::getMblnos, finStlBills.getMblnos())
+			.like(ObjectUtils.isNotNull(finStlBills.getHblno()), FinStlBills::getHblno, finStlBills.getHblno())
+			.like(ObjectUtils.isNotNull(finStlBills.getHblnos()), FinStlBills::getHblnos, finStlBills.getHblnos())
+			.like(ObjectUtils.isNotNull(finStlBills.getInvoiceNo()), FinStlBills::getInvoiceNo, finStlBills.getInvoiceNo())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsApproved()) && finStlBills.getIsApproved() != 0), FinStlBills::getIsApproved, finStlBills.getIsApproved())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsSignfor()) && finStlBills.getIsSignfor() != 0), FinStlBills::getIsSignfor, finStlBills.getIsSignfor())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsChecked()) && finStlBills.getIsChecked() != 0), FinStlBills::getIsChecked, finStlBills.getIsChecked())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsCleared()) && finStlBills.getIsCleared() != 0), FinStlBills::getIsCleared, finStlBills.getIsCleared())
+			.eq((ObjectUtils.isNotNull(finStlBills.getIsInvoice()) && finStlBills.getIsInvoice() != 0), FinStlBills::getIsInvoice, finStlBills.getIsInvoice())
+			.like(ObjectUtils.isNotNull(finStlBills.getVoucherNo()), FinStlBills::getVoucherNo, finStlBills.getVoucherNo())
+			.like(ObjectUtils.isNotNull(finStlBills.getRemarks()), FinStlBills::getRemarks, finStlBills.getRemarks())
+			.and(ObjectUtils.isNotNull(finStlBills.getCorpCnName()), i -> i.like(FinStlBills::getCorpCnName, finStlBills.getCorpCnName()).or()
+				.like(FinStlBills::getCorpEnName, finStlBills.getCorpCnName()))
+			.like(ObjectUtils.isNotNull(finStlBills.getFeeCnName()), FinStlBills::getFeeCnName, finStlBills.getFeeCnName())
+			.eq(ObjectUtils.isNotNull(finStlBills.getVoucherDate()), FinStlBills::getVoucherDate, finStlBills.getVoucherDate());
+		lambdaQueryWrapper.ge(ObjectUtils.isNotNull(finStlBills.getBillDateStart()), FinStlBills::getBillDate, finStlBills.getBillDateStart());
+		lambdaQueryWrapper.le(ObjectUtils.isNotNull(finStlBills.getBillDateEnd()), FinStlBills::getBillDate, finStlBills.getBillDateEnd());
+		lambdaQueryWrapper.ge(ObjectUtils.isNotNull(finStlBills.getBusinessDateStart()), FinStlBills::getBusinessDateStart, finStlBills.getBusinessDateStart());
+		lambdaQueryWrapper.le(ObjectUtils.isNotNull(finStlBills.getBusinessDateEnd()), FinStlBills::getBusinessDateEnd, finStlBills.getBusinessDateEnd());
+		lambdaQueryWrapper.ge(ObjectUtils.isNotNull(finStlBills.getEstimatedTimeStart()), FinStlBills::getEstimatedTime, finStlBills.getEstimatedTimeStart());
+		lambdaQueryWrapper.le(ObjectUtils.isNotNull(finStlBills.getEstimatedTimeEnd()), FinStlBills::getEstimatedTime, finStlBills.getEstimatedTimeEnd());
+		lambdaQueryWrapper.ge(ObjectUtils.isNotNull(finStlBills.getAccountDateFrom()), FinStlBills::getAccountDateFrom, finStlBills.getAccountDateFrom());
+		lambdaQueryWrapper.le(ObjectUtils.isNotNull(finStlBills.getAccountDateTo()), FinStlBills::getAccountDateTo, finStlBills.getAccountDateTo());
+		lambdaQueryWrapper.ge(ObjectUtils.isNotNull(finStlBills.getAuditDateFrom()), FinStlBills::getAuditDateFrom, finStlBills.getAuditDateFrom());
+		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());
+		} else {
+			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(finStlBills.getBranchId()), FinStlBills::getBranchId, finStlBills.getBranchId());
+		}
+		List<FinStlBills> list = finStlBillsService.list(lambdaQueryWrapper);
+		for (FinStlBills item : list) {
+			item.setCreateUserNames(item.getCreateUserName());
+		}
+		ExcelUtil.export(response, "结算中心", "结算中心", BeanUtil.copy(list, FinStlBillsExcel.class), FinStlBillsExcel.class);
+	}
+
+	/**
 	 * 自定义分页 业务-财务对账单和结算
 	 */
 	@GetMapping("/page")