Просмотр исходного кода

1.海运进口保存同步账单日期问题修改
2.箱轨迹检索条件问题修改
3.OW放进出场同步撤销逻辑(未完成)
4.提单修改所属公司问题修改
5.模板导入,批量导入逻辑增加排序修改
6.费用模板明细增加排序字段
7.箱池动态统计排除OW放
8.OW列表增加内部放箱号检索条件

纪新园 2 дней назад
Родитель
Сommit
f76b9c381a

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/entity/FeesTemplateItems.java

@@ -242,6 +242,12 @@ public class FeesTemplateItems implements Serializable {
 	@ApiModelProperty(value = "税率 %")
 	private BigDecimal taxRate;
 
+	/**
+	 * 排序
+	 */
+	@ApiModelProperty(value = "排序")
+	private Integer sort;
+
 	@TableField(exist = false)
 	private List<FeesTemplateSonItems> sonItemsList;
 

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

@@ -294,6 +294,16 @@ public class BoxDynamicsRecordItems implements Serializable {
 	 */
 	@ApiModelProperty(value = "数据同步上一步箱好坏")
 	private String srcBoxGoodBad;
+	/**
+	 * 来源ow(放)放箱号id
+	 */
+	@ApiModelProperty(value = "来源ow(放)放箱号id")
+	private Long srcPutBoxOwfId;
+	/**
+	 * 来源ow(放)放箱号明细id
+	 */
+	@ApiModelProperty(value = "来源ow(放)放箱号明细id")
+	private Long srcPutBoxItemsOwfId;
 
 	/**
 	 * 临时id

+ 6 - 1
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/LosBFeesTemplateServiceImpl.java

@@ -122,7 +122,7 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submit(LosBFeesTemplate losBFeesTemplate) {
-		String deptId = losBFeesTemplate.getCreateDept() == null ? AuthUtil.getDeptId() : losBFeesTemplate.getCreateDept();
+		String deptId = losBFeesTemplate.getBranchId() == null ? AuthUtil.getDeptId() : losBFeesTemplate.getBranchId();
 		String deptName = "";
 		//获取部门ids对应中文名
 		R<List<String>> res = sysClient.getDeptNames(deptId);
@@ -168,6 +168,7 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 		}
 		this.saveOrUpdate(losBFeesTemplate);
 		if (ObjectUtils.isNotNull(losBFeesTemplate.getFeesTemplateItemsList())) {
+			int count = 1;
 			for (FeesTemplateItems item : losBFeesTemplate.getFeesTemplateItemsList()) {
 				item.setPid(losBFeesTemplate.getId());
 				item.setDc(losBFeesTemplate.getDc());
@@ -186,6 +187,10 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 					item.setCreateUserName(AuthUtil.getUserName());
 					item.setCreateDept(deptId);
 					item.setCreateDeptName(deptName);
+					if (ObjectUtils.isNull(item.getSort())){
+						item.setSort(count);
+						count++;
+					}
 				} else {
 					item.setUpdateUser(AuthUtil.getUserId());
 					item.setUpdateTime(new Date());

+ 2 - 3
blade-service/blade-los/src/main/java/org/springblade/los/box/controller/ArchivesTrajectoryController.java

@@ -89,12 +89,11 @@ public class ArchivesTrajectoryController extends BladeController {
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getTrajectoryStatus()), ArchivesTrajectory::getTrajectoryStatus, archivesTrajectory.getTrajectoryStatus())
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getBoxStatus()), ArchivesTrajectory::getBoxStatus, archivesTrajectory.getBoxStatus())
 			.eq(ObjectUtils.isNotNull(archivesTrajectory.getCorpId()), ArchivesTrajectory::getCorpId, archivesTrajectory.getCorpId());
-//		lambdaQueryWrapper.like(ObjectUtils.isNotNull(archivesTrajectory.getBoxDynamics()), ArchivesTrajectory::getBoxDynamics, archivesTrajectory.getBoxDynamics());
 		if (ObjectUtils.isNotNull(archivesTrajectory.getBoxDynamics())){
 			if ("进场".equals(archivesTrajectory.getBoxDynamics())){
 				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'客户还箱,场内退租进场,无货返空,调拨新箱,驳空箱,新箱,直接退租进场,直接调运进场,起租箱进场,场内起租进场,退租箱进场')");
 			}else if ("出场".equals(archivesTrajectory.getBoxDynamics())){
-				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'内点摆箱,外点箱,空箱集港,退租出场,起租箱出场,场内起租出场,新箱出场,直接调运出场,直接退租出场,场内退租出场')");
+				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'内点摆箱,外点箱,空箱集港,退租出场,起租箱出场,场内起租出场,新箱出场,直接调运出场,直接退租出场,场内退租出场')");
 			}else{
 				lambdaQueryWrapper.apply("find_in_set(box_dynamics,'更改放箱号,箱档案-更改箱状态,海运出口-拆单,装船,卸船')");
 			}
@@ -117,7 +116,7 @@ public class ArchivesTrajectoryController extends BladeController {
 		}
 
 		lambdaQueryWrapper.last("GROUP BY code,box_type,bill_type,box_dynamics,box_category,DATE_FORMAT(new_date, '%Y-%m-%d')," +
-			"port_id,station_id,container_number,IFNULL(mblno, ''),IFNULL(hblno, ''),src_id ORDER BY new_date DESC,create_time DESC");
+			"port_id,station_id,container_number,IFNULL(mblno, ''),IFNULL(hblno, ''),src_id ORDER BY new_date DESC,code DESC");
 		IPage<ArchivesTrajectory> pages = archivesTrajectoryService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
 	}

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

@@ -104,6 +104,7 @@ public class TradingBoxController extends BladeController {
 			.eq(ObjectUtils.isNotNull(tradingBox.getStatus()), TradingBox::getStatus, tradingBox.getStatus())
 			.like(ObjectUtils.isNotNull(tradingBox.getCode()), TradingBox::getCode, tradingBox.getCode())
 			.like(ObjectUtils.isNotNull(tradingBox.getContainerNumber()), TradingBox::getContainerNumber, tradingBox.getContainerNumber())
+			.like(ObjectUtils.isNotNull(tradingBox.getInternalContainerNumber()), TradingBox::getInternalContainerNumber, tradingBox.getInternalContainerNumber())
 			.eq(ObjectUtils.isNotNull(tradingBox.getBusType()), TradingBox::getBusType, tradingBox.getBusType())
 			.eq(ObjectUtils.isNotNull(tradingBox.getType()), TradingBox::getType, tradingBox.getType())
 			.like(ObjectUtils.isNotNull(tradingBox.getPodId()), TradingBox::getPodId, tradingBox.getPodId())

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

@@ -4748,6 +4748,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 				} else {
 					putBoxesOwf.add(putBox);
 				}
+				item.setSrcPutBoxOwfId(putBox.getId());
 				if (!putBoxItemsList.isEmpty()) {
 					PutBoxItems putBoxItem = putBoxItemsList.stream().filter(e -> e.getBoxCode().equals(item.getBoxCode()) &&
 						e.getPid().equals(putBox.getId())).findFirst().orElse(null);
@@ -5041,13 +5042,20 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 		for (BoxDynamicsRecordItems item : itemsListCC) {
 			item.setWhetherSynchronous("1");
 			if (!putBoxItems.isEmpty()) {
-				putBoxItems.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst().ifPresent(putBox -> item.setSrcPutBoxItemsId(putBox.getId()));
+				putBoxItems.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcPutBoxItemsId(putBox.getId()));
 			}
 			if (!tradingBoxItems.isEmpty()) {
-				tradingBoxItems.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst().ifPresent(putBox -> item.setSrcTradingBoxItemsId(putBox.getId()));
+				tradingBoxItems.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcTradingBoxItemsId(putBox.getId()));
+			}
+			if (!putBoxItemsOwf.isEmpty()) {
+				putBoxItemsOwf.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcPutBoxItemsOwfId(putBox.getId()));
 			}
 			if (!archivesArrayList.isEmpty()) {
-				archivesArrayList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst().ifPresent(putBox -> item.setSrcArchivesId(putBox.getId()));
+				archivesArrayList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcArchivesId(putBox.getId()));
 			}
 		}
 		boxDynamicsRecordItemsService.updateBatchById(itemsListCC);
@@ -5138,6 +5146,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 			PutBox putBoxOldFX = putBoxList.stream().filter(e -> e.getSrcContainerNumber().equals(finalArchives.getBillNo()))
 				.findFirst().orElse(null);
 			if (putBoxOldFX != null) {
+				recordItems.setSrcPutBoxItemsOwfId(putBoxOldFX.getId());
 				PutBoxItems putBoxItem;
 				if (!putBoxItemsList.isEmpty()) {
 					putBoxItem = putBoxItemsList.stream().filter(e -> e.getBoxCode().equals(recordItems.getBoxCode())
@@ -5209,6 +5218,7 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 						putBoxes.add(putBoxOld);
 					}
 				}
+				recordItems.setSrcPutBoxId(putBoxOld.getId());
 				PutBoxItems putBoxItem;
 				if (!putBoxItemsList.isEmpty()) {
 					putBoxItem = putBoxItemsList.stream().filter(e -> e.getBoxCode().equals(recordItems.getBoxCode())
@@ -5440,10 +5450,24 @@ public class BoxDynamicsRecordServiceImpl extends ServiceImpl<BoxDynamicsRecordM
 		for (BoxDynamicsRecordItems item : itemsListFXHX) {
 			item.setWhetherSynchronous("1");
 			if (!putBoxItemsNewList.isEmpty()) {
-				putBoxItemsNewList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst().ifPresent(putBox -> item.setSrcPutBoxItemsPodId(putBox.getId()));
+				putBoxItemsNewList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcPutBoxItemsPodId(putBox.getId()));
+			}
+			if (!putBoxItemsOldFXList.isEmpty()) {
+				putBoxItemsOldFXList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcPutBoxItemsOwfId(putBox.getId()));
+			}
+			if (!putBoxItemsOldList.isEmpty()) {
+				putBoxItemsOldList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcPutBoxItemsId(putBox.getId()));
+			}
+			if (!tradingBoxItemOldList.isEmpty()) {
+				tradingBoxItemOldList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcTradingBoxItemsId(putBox.getId()));
 			}
 			if (!archivesArrayList.isEmpty()) {
-				archivesArrayList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst().ifPresent(putBox -> item.setSrcArchivesId(putBox.getId()));
+				archivesArrayList.stream().filter(e -> item.getTemporaryId().equals(e.getTemporaryId())).findFirst()
+					.ifPresent(putBox -> item.setSrcArchivesId(putBox.getId()));
 			}
 		}
 		boxDynamicsRecordItemsService.updateBatchById(itemsListFXHX);

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/PutBoxItemsMapper.xml

@@ -77,6 +77,7 @@
         AND corp.tenant_id = #{tenantId}
         AND item.`status` = '待使用'
         AND lpb.whether_deactivate = '0'
+        AND lpb.box_class != 'OW(放)'
         <if test="portId !=null and portId != ''">
             and lpb.pol_id = #{portId}
         </if>

+ 5 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/PutBoxMapper.xml

@@ -68,6 +68,7 @@
         AND is_deleted = '0'
         AND remaining_num > 0
         AND whether_deactivate = '0'
+        AND box_class != 'OW(放)'
         <if test='data.containerNumber != null and data.containerNumber != ""'>
             and container_number like concat(concat('%', #{data.containerNumber}),'%')
         </if>
@@ -126,6 +127,7 @@
         AND corp.is_deleted = '0'
         AND lpb.remaining_num > 0
         AND lpb.whether_deactivate = '0'
+        AND lpb.box_class != 'OW(放)'
         <if test='data.containerNumber != null and data.containerNumber != ""'>
             and lpb.container_number like concat(concat('%', #{data.containerNumber}),'%')
         </if>
@@ -275,6 +277,7 @@
         lpb.tenant_id = #{tenantId}
         AND lpb.is_deleted = '0'
         AND lpb.whether_deactivate = '0'
+        AND lpb.box_class != 'OW(放)'
         <if test="portId !=null and portId != ''">
             and lpb.pol_id like concat(concat('%', #{portId}),'%')
         </if>
@@ -335,6 +338,7 @@
         AND corp.is_deleted = '0'
         AND lpb.remaining_num > 0
         AND lpb.whether_deactivate = '0'
+        AND lpb.box_class != 'OW(放)'
         <if test='data.containerNumber != null and data.containerNumber != ""'>
             and lpb.container_number like concat(concat('%', #{data.containerNumber}),'%')
         </if>
@@ -397,6 +401,7 @@
         AND is_deleted = '0'
         AND remaining_num > 0
         AND whether_deactivate = '0'
+        AND box_class != 'OW(放)'
         <if test='data.containerNumber != null and data.containerNumber != ""'>
             and container_number like concat(concat('%', #{data.containerNumber}),'%')
         </if>

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

@@ -2905,8 +2905,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				bills.setEtd(date1);
 			} else if ("SI".equals(bills.getBusinessType())) {
 				bills.setActualEta(date1);
-				bills.setBillDate(date1);
 			}
+			bills.setBillDate(date1);
 		} catch (ParseException e) {
 			throw new RuntimeException(e);
 		}
@@ -2942,6 +2942,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			BigDecimal amountDrLoc = new BigDecimal("0.00");
 			BigDecimal amountCrLoc = new BigDecimal("0.00");
 			BigDecimal amountProfitLoc;
+			List<Long> billIdList = new ArrayList<>();
 			//主单应加上分单费用
 			if ("MM".equals(bills.getBillType())) {
 				List<Bills> details = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
@@ -2950,6 +2951,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 					.eq(Bills::getMasterId, bills.getId()));
 				if (!details.isEmpty()) {
 					List<Long> billIds = details.stream().map(Bills::getId).distinct().collect(Collectors.toList());
+					billIdList.addAll(billIds);
 					List<FeeCenter> feeCenterListMH = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 						.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 						.eq(FeeCenter::getIsDeleted, 0)
@@ -2969,14 +2971,17 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						item.setUpdateUser(AuthUtil.getUserId());
 						if ("SE".equals(item.getBusinessType())) {
 							item.setEtd(date1);
+							item.setActualEtd(date1);
 						} else if ("SI".equals(item.getBusinessType())) {
 							item.setEta(date1);
+							item.setActualEta(date1);
 						}
 						item.setBillDate(date1);
 						if (!feeCenterListMH.isEmpty()) {
 							for (FeeCenter itemMH : feeCenterListMH) {
 								itemMH.setEtd(bills.getEtd());
 								itemMH.setEta(bills.getEta());
+								itemMH.setBillDate(date1);
 								if ("D".equals(itemMH.getDc())) {
 									if (exrateType.equals(itemMH.getCurCode())) {
 										amountDr = amountDr.add(itemMH.getAmount());
@@ -3037,6 +3042,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				for (FeeCenter item : feeCenterList) {
 					item.setEtd(bills.getEtd());
 					item.setEta(bills.getEta());
+					item.setBillDate(date1);
 					if ("D".equals(item.getDc())) {
 						if (exrateType.equals(item.getCurCode())) {
 							amountDr = amountDr.add(item.getAmount());
@@ -3078,6 +3084,30 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				bills.setAmountProfitLoc(amountProfitLoc);
 				feeCenterService.updateBatchById(feeCenterListSum);
 			}
+			billIdList.add(billId);
+			List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
+				.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
+				.eq(FinAccBills::getIsDeleted, 0)
+				.in(FinAccBills::getBusinessBillId, billIdList));
+			for (FinAccBills item : finAccBillsList) {
+				item.setEtd(bills.getEtd());
+				item.setEta(bills.getEta());
+				item.setBillDate(bills.getBillDate());
+				item.setBusinessDate(bills.getBillDate());
+				item.setVesselId(bills.getVesselId());
+				item.setVesselCnName(bills.getVesselCnName());
+				item.setVesselEnName(bills.getVesselEnName());
+				item.setVoyageNo(bills.getVoyageNo());
+				item.setPolId(bills.getPolId());
+				item.setPolCnName(bills.getPolCnName());
+				item.setPolEnName(bills.getPolEnName());
+				item.setPolCode(bills.getPolCode());
+				item.setPodId(bills.getPodId());
+				item.setPodCnName(bills.getPodCnName());
+				item.setPodEnName(bills.getPodEnName());
+				item.setPodCode(bills.getPodCode());
+			}
+			finAccBillsService.updateBatchById(finAccBillsList);
 		}
 		baseMapper.updateById(bills);
 		return R.data(bills);

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

@@ -288,6 +288,8 @@ public class DeadlineServiceImpl extends ServiceImpl<DeadlineMapper, Deadline> i
 			.eq(Containers::getIsDeleted, 0)
 			.eq(Containers::getPid, billId));
 		DeadlineVO deadlineVO = new DeadlineVO();
+		deadlineVO.setBranchName(bills.getBranchName());
+		deadlineVO.setBranchId(bills.getBranchId());
 		deadlineVO.setMblno(bills.getMblno());
 		deadlineVO.setHblno(bills.getHblno());
 		deadlineVO.setBillNo(bills.getBillNo());

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

@@ -55,6 +55,7 @@ import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.business.sea.service.IPreContainersService;
+import org.springblade.los.finance.fee.dto.FeeCenterReports;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.mapper.FeeCenterMapper;
 import org.springblade.los.finance.fee.service.ICostProfitCalculationService;
@@ -245,10 +246,12 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					.eq(BCorps::getIsDeleted, 0)
 					.in(BCorps::getId, idList));
 			}
+			List<FeesTemplateItems> feesTemplateItemsList = losBFeesTemplate.getFeesTemplateItemsList().stream()
+				.sorted(Comparator.comparing(FeesTemplateItems::getSort)).collect(Collectors.toList());
 			List<FeesTemplateSonItems> sonItemsList = feesTemplateSonItemsService.list(new LambdaQueryWrapper<FeesTemplateSonItems>()
 				.eq(FeesTemplateSonItems::getTenantId, AuthUtil.getTenantId())
 				.eq(FeesTemplateSonItems::getIsDeleted, 0)
-				.in(FeesTemplateSonItems::getPpid, losBFeesTemplate.getFeesTemplateItemsList().stream().map(FeesTemplateItems::getId).collect(Collectors.toList()))
+				.in(FeesTemplateSonItems::getPpid, feesTemplateItemsList.stream().map(FeesTemplateItems::getId).collect(Collectors.toList()))
 				.eq(ObjectUtils.isNotNull(losBFeesTemplate.getDc()), FeesTemplateSonItems::getDc, losBFeesTemplate.getDc()));
 			if (sonItemsList.isEmpty()) {
 				throw new RuntimeException("未查到模板明细");
@@ -263,12 +266,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			}
 			int count = 1;
 			for (FeesTemplateSonItems items : sonItemsList) {
-				FeesTemplateItems templateItems = losBFeesTemplate.getFeesTemplateItemsList().stream().filter(e -> e.getId().equals(items.getPpid()))
+				FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> e.getId().equals(items.getPpid()))
 					.findFirst().orElse(null);
 				if (templateItems == null) {
 					throw new RuntimeException("模版数据错误,请联系管理员");
 				}
 				FeeCenter feeCenter = new FeeCenter();
+				feeCenter.setSort(templateItems.getSort());
 				feeCenter.setBranchId(branchId);
 				feeCenter.setBranchName(deptName);
 				feeCenter.setBillBranchId(bills.getBranchId());
@@ -692,6 +696,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			}*/
 		}
 		if (!list.isEmpty()) {
+			list = list.stream()
+				.sorted(Comparator.comparing(FeeCenter::getSort, Comparator.nullsFirst(Integer::compareTo)))
+				.collect(Collectors.toList());
 			LambdaQueryWrapper<FeeCenter> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 			lambdaQueryWrapper.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getIsDeleted, 0)
@@ -1456,6 +1463,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					throw new RuntimeException("模版数据错误,请联系管理员");
 				}
 				FeeCenter feeCenter = new FeeCenter();
+				feeCenter.setSort(templateItems.getSort());
 				feeCenter.setBranchId(branchId);
 				feeCenter.setBranchName(deptName);
 				feeCenter.setBillBranchId(bills.getBranchId());
@@ -1774,6 +1782,9 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			}
 		}
 		if (!list.isEmpty()) {
+			list = list.stream()
+				.sorted(Comparator.comparing(FeeCenter::getSort, Comparator.nullsFirst(Integer::compareTo)))
+				.collect(Collectors.toList());
 			this.saveOrUpdateBatch(list);
 		} else {
 			throw new RuntimeException("导入失败,未查到可用模版信息");
@@ -2917,72 +2928,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		} else {
 			feeCenterList = losBFeesTemplateVO.getFeeCenterList();
 		}
-		for (FeeCenter item : feeCenterList) {
-			FeesTemplateItems feesTemplateItems = new FeesTemplateItems();
-			if ("CNTRQTY".equals(item.getUnitNo())) {
-				feesTemplateItems.setQuantityRule("按件数");
-			} else if ("JOB".equals(item.getUnitNo()) || "票".equals(item.getUnitNo())) {
-				feesTemplateItems.setQuantityRule("按票");
-			} else if ("TON".equals(item.getUnitNo())) {
-				feesTemplateItems.setQuantityRule("按重量");
-			} 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());
-			if (ObjectUtils.isNull(item.getCorpType())) {
-				feesTemplateItems.setCorpId(item.getCorpId());
-				feesTemplateItems.setCorpCnName(item.getCorpCnName());
-				feesTemplateItems.setCorpEnName(item.getCorpEnName());
-			}
-			feesTemplateItems.setPrice(item.getPrice());
-			feesTemplateItems.setQuantity(new BigDecimal("1"));
-			feesTemplateItems.setTaxRate(item.getTaxRate());
-			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);
-			String temporaryId = StringTools.generateRandomString(32);
-			feesTemplateItems.setTemporaryId(temporaryId);
-			feesTemplateItemsList.add(feesTemplateItems);
-
-			FeesTemplateSonItems sonItems = new FeesTemplateSonItems();
-			sonItems.setDc(feesTemplateItems.getDc());
-			sonItems.setPid(losBFeesTemplate.getId());
-			sonItems.setTaxRate(feesTemplateItems.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(feesTemplateItems.getFeeId());
-			sonItems.setFeeCode(feesTemplateItems.getFeeCode());
-			sonItems.setFeeCnName(feesTemplateItems.getFeeCnName());
-			sonItems.setFeeEnName(feesTemplateItems.getFeeEnName());
-			sonItems.setCostPrice(feesTemplateItems.getCostPrice());
-			sonItems.setSalesPrice(feesTemplateItems.getPrice());
-			sonItems.setCurCode(feesTemplateItems.getCurCode());
-			sonItems.setUnitNo(feesTemplateItems.getUnitNo());
-			sonItems.setQuantityRule(feesTemplateItems.getQuantityRule());
-			sonItems.setBranchId(deptId);
-			sonItems.setBranchName(deptName);
-			sonItems.setTemporaryId(temporaryId);
-			sonItemsList.add(sonItems);
-		}
+		int count = 1;
 		if (!feeCenterListBoxType.isEmpty()) {
 			for (FeeCenter item : feeCenterListBoxType) {
 				String temporaryId = StringTools.generateRandomString(32);
@@ -3016,14 +2962,18 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> "按箱型".equals(e.getQuantityRule())
 						&& item.getFeeId().equals(e.getFeeId())).findFirst().orElse(null);
 					if (templateItems == null){
+						feesTemplateItems.setSort(count);
 						feesTemplateItems.setTemporaryId(temporaryId);
 						feesTemplateItemsList.add(feesTemplateItems);
+						count++;
 					}else{
 						temporaryId = templateItems.getTemporaryId();
 					}
 				} else {
 					feesTemplateItems.setTemporaryId(temporaryId);
+					feesTemplateItems.setSort(count);
 					feesTemplateItemsList.add(feesTemplateItems);
+					count++;
 				}
 				FeesTemplateSonItems sonItems = new FeesTemplateSonItems();
 				sonItems.setDc(feesTemplateItems.getDc());
@@ -3050,7 +3000,74 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				sonItems.setTemporaryId(temporaryId);
 				sonItemsList.add(sonItems);
 			}
+		}
+		for (FeeCenter item : feeCenterList) {
+			FeesTemplateItems feesTemplateItems = new FeesTemplateItems();
+			feesTemplateItems.setSort(count);
+			if ("CNTRQTY".equals(item.getUnitNo())) {
+				feesTemplateItems.setQuantityRule("按件数");
+			} else if ("JOB".equals(item.getUnitNo()) || "票".equals(item.getUnitNo())) {
+				feesTemplateItems.setQuantityRule("按票");
+			} else if ("TON".equals(item.getUnitNo())) {
+				feesTemplateItems.setQuantityRule("按重量");
+			} 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());
+			if (ObjectUtils.isNull(item.getCorpType())) {
+				feesTemplateItems.setCorpId(item.getCorpId());
+				feesTemplateItems.setCorpCnName(item.getCorpCnName());
+				feesTemplateItems.setCorpEnName(item.getCorpEnName());
+			}
+			feesTemplateItems.setPrice(item.getPrice());
+			feesTemplateItems.setQuantity(new BigDecimal("1"));
+			feesTemplateItems.setTaxRate(item.getTaxRate());
+			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);
+			String temporaryId = StringTools.generateRandomString(32);
+			feesTemplateItems.setTemporaryId(temporaryId);
+			feesTemplateItemsList.add(feesTemplateItems);
+			count++;
 
+			FeesTemplateSonItems sonItems = new FeesTemplateSonItems();
+			sonItems.setDc(feesTemplateItems.getDc());
+			sonItems.setPid(losBFeesTemplate.getId());
+			sonItems.setTaxRate(feesTemplateItems.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(feesTemplateItems.getFeeId());
+			sonItems.setFeeCode(feesTemplateItems.getFeeCode());
+			sonItems.setFeeCnName(feesTemplateItems.getFeeCnName());
+			sonItems.setFeeEnName(feesTemplateItems.getFeeEnName());
+			sonItems.setCostPrice(feesTemplateItems.getCostPrice());
+			sonItems.setSalesPrice(feesTemplateItems.getPrice());
+			sonItems.setCurCode(feesTemplateItems.getCurCode());
+			sonItems.setUnitNo(feesTemplateItems.getUnitNo());
+			sonItems.setQuantityRule(feesTemplateItems.getQuantityRule());
+			sonItems.setBranchId(deptId);
+			sonItems.setBranchName(deptName);
+			sonItems.setTemporaryId(temporaryId);
+			sonItemsList.add(sonItems);
 		}
 		if (!feesTemplateItemsList.isEmpty()) {
 			feesTemplateItemsService.saveBatch(feesTemplateItemsList);