Преглед на файлове

1.海运进出口复制分单号不清空
2.海运进出口列表批量提交请核接口问题修改
3.海运进出口提单打印接口唛头与箱型箱量增加换行
4.费用模板保存接口增加垃圾数据检索并删除逻辑
5.费用模板明细删除增加删除集装箱明细逻辑
6.服务器文件桶问题修复
7.托书生成海运单据备注放在SI备注上
8.海运出口批量提交应付请核接口问题修改
9.审核通过费用生成账单所属公司取费用明细的所属公司
10.配箱信息件重尺合计同步主单件重尺
11.费用模板导入计算主表利润

纪新园 преди 9 месеца
родител
ревизия
850c0e0208
променени са 13 файла, в които са добавени 399 реда и са изтрити 115 реда
  1. 5 6
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/box/entity/ExpenseApplication.java
  2. 77 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Containers.java
  3. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/controller/FeesTemplateItemsController.java
  4. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/IFeesTemplateItemsService.java
  5. 29 3
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/FeesTemplateItemsServiceImpl.java
  6. 30 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/LosBFeesTemplateServiceImpl.java
  7. 7 7
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  8. 43 38
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java
  9. 63 34
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  10. 4 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/TemplateImportServiceImpl.java
  11. 7 15
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  12. 127 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  13. 2 7
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

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

@@ -125,6 +125,11 @@ public class ExpenseApplication implements Serializable {
 	@ApiModelProperty(value = "来源提单号")
 	private String srcMblno;
 	/**
+	 * 来源分单号
+	 */
+	@ApiModelProperty(value = "来源分单号")
+	private String srcHblno;
+	/**
 	 * 来源放箱号
 	 */
 	@ApiModelProperty(value = "来源放箱号")
@@ -219,12 +224,6 @@ public class ExpenseApplication implements Serializable {
 	private TradingBox tradingBox;
 
 	/**
-	 * 来源提单号
-	 */
-	@TableField(exist = false)
-	private String srcHblno;
-
-	/**
 	 * 收付类型
 	 */
 	@TableField(exist = false)

+ 77 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Containers.java

@@ -113,181 +113,217 @@ public class Containers implements Serializable {
 	 * 单据编号
 	 */
 	@ApiModelProperty(value = "单据编号")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String billNo;
 	/**
 	 * 装货港 id
 	 */
 	@ApiModelProperty(value = "装货港 id")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long polId;
 	/**
 	 * 装货港代码
 	 */
 	@ApiModelProperty(value = "装货港代码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCode;
 	/**
 	 * 装货港英文名称
 	 */
 	@ApiModelProperty(value = "装货港英文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCnName;
 	/**
 	 * 装货港英文名称
 	 */
 	@ApiModelProperty(value = "装货港英文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polEnName;
 	/**
 	 * 卸货港 id
 	 */
 	@ApiModelProperty(value = "卸货港 id")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long podId;
 	/**
 	 * 卸货港代码
 	 */
 	@ApiModelProperty(value = "卸货港代码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCode;
 	/**
 	 * 卸货港中文名称
 	 */
 	@ApiModelProperty(value = "卸货港中文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podCnName;
 	/**
 	 * 卸货港英文名称
 	 */
 	@ApiModelProperty(value = "卸货港英文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podEnName;
 	/**
 	 * MB/L NO
 	 */
 	@ApiModelProperty(value = "MB/L NO")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String mblno;
 	/**
 	 * HB/L NO
 	 */
 	@ApiModelProperty(value = "HB/L NO")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String hblno;
 	/**
 	 * 箱号
 	 */
 	@ApiModelProperty(value = "箱号")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String cntrNo;
 	/**
 	 * 尺码箱型
 	 */
 	@ApiModelProperty(value = "尺码箱型")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String cntrTypeCode;
 	/**
 	 * 尺码箱型Id
 	 */
 	@ApiModelProperty(value = "尺码箱型Id")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String cntrTypeCodeId;
 	/**
 	 * 铅封号
 	 */
 	@ApiModelProperty(value = "铅封号")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String sealNo;
 	/**
 	 * TEU
 	 */
 	@ApiModelProperty(value = "TEU")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal teu;
 	/**
 	 * 商品 HS-CODE
 	 */
 	@ApiModelProperty(value = "商品 HS-CODE")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String hscode;
 	/**
 	 * 商品简称
 	 */
 	@ApiModelProperty(value = "商品简称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String commodityShName;
 	/**
 	 * 商品中文名称
 	 */
 	@ApiModelProperty(value = "商品中文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String commodityCnName;
 	/**
 	 * 商品英文名称
 	 */
 	@ApiModelProperty(value = "商品英文名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String commodityEnName;
 	/**
 	 * 提单上货物描述
 	 */
 	@ApiModelProperty(value = "提单上货物描述")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String commodityDescr;
 	/**
 	 * 唛头
 	 */
 	@ApiModelProperty(value = "唛头")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String marks;
 	/**
 	 * 包装单位 Id
 	 */
 	@ApiModelProperty(value = "包装单位 Id")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long packingUnitId;
 	/**
 	 * 包装单位
 	 */
 	@ApiModelProperty(value = "包装单位")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String packingUnit;
 	/**
 	 * 件数
 	 */
 	@ApiModelProperty(value = "件数")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal quantity;
 	/**
 	 * 毛重 (KGM)
 	 */
 	@ApiModelProperty(value = "毛重 (KGM)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal grossWeight;
 	/**
 	 * 净重 (KGM)
 	 */
 	@ApiModelProperty(value = "净重 (KGM)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal netWeight;
 	/**
 	 * 体积 (CBM)
 	 */
 	@ApiModelProperty(value = "体积 (CBM)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal measurement;
 	/**
 	 * 是否货主自有箱 SOC 箱(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否货主自有箱 SOC 箱(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isSoc;
 	/**
 	 * 是否单程 ONEWAY 箱(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否单程 ONEWAY 箱(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isOneway;
 	/**
 	 * 是否加重箱(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否加重箱(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isHeavy;
 	/**
 	 * 是否冻代干(冻柜作为干柜用) NOR(Non Operating Reefer),(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否冻代干(冻柜作为干柜用) NOR(Non Operating Reefer),(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isNor;
 	/**
 	 * 是否通风,(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否通风,(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isVentilated;
 	/**
 	 * 是否食品箱,(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否食品箱,(0 否 1是)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isFood;
 	/**
 	 * 皮重
 	 */
 	@ApiModelProperty(value = "皮重")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal tare;
 	/**
 	 * VGM 称重方法,SM1, SM2
 	 */
 	@ApiModelProperty(value = "VGM 称重方法,SM1, SM2")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmMethod;
 	/**
 	 * VGM 日期
@@ -301,211 +337,252 @@ public class Containers implements Serializable {
 	 * VGM 总重(KGM)
 	 */
 	@ApiModelProperty(value = "VGM 总重(KGM)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private BigDecimal vgmWeight;
 	/**
 	 * VGM 称重单位名称
 	 */
 	@ApiModelProperty(value = "VGM 称重单位名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighName;
 	/**
 	 * VGM 称重地点
 	 */
 	@ApiModelProperty(value = "VGM 称重地点")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighAddress;
 	/**
 	 * VGM 称重联系人
 	 */
 	@ApiModelProperty(value = "VGM 称重联系人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighAttn;
 	/**
 	 * VGM 称重联系人电话
 	 */
 	@ApiModelProperty(value = "VGM 称重联系人电话")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighAttnTel;
 	/**
 	 * VGM 称重联系人邮箱
 	 */
 	@ApiModelProperty(value = "VGM 称重联系人邮箱")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighAttnEmail;
 	/**
 	 * VGM 称重负责人
 	 */
 	@ApiModelProperty(value = "VGM 称重负责人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighMgr;
 	/**
 	 * VGM 称重负责人签名
 	 */
 	@ApiModelProperty(value = "VGM 称重负责人签名")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighMgrSign;
 	/**
 	 * VGM 称重证书
 	 */
 	@ApiModelProperty(value = "VGM 称重证书")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmWeighCert;
 	/**
 	 * VGM 发货人单位名称
 	 */
 	@ApiModelProperty(value = "VGM 发货人单位名称")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperName;
 	/**
 	 * VGM 发货人地点
 	 */
 	@ApiModelProperty(value = "VGM 发货人地点")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperAddress;
 	/**
 	 * VGM 发货人联系人
 	 */
 	@ApiModelProperty(value = "VGM 发货人联系人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperAttn;
 	/**
 	 * VGM 发货人联系人电话
 	 */
 	@ApiModelProperty(value = "VGM 发货人联系人电话")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperAttnTel;
 	/**
 	 * VGM 发货人联系人邮箱
 	 */
 	@ApiModelProperty(value = "VGM 发货人联系人邮箱")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperAttnEmail;
 	/**
 	 * VGM 发货人负责人
 	 */
 	@ApiModelProperty(value = "VGM 发货人负责人")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperMgr;
 	/**
 	 * VGM 发货人负责人签名
 	 */
 	@ApiModelProperty(value = "VGM 发货人负责人签名")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperMgrSign;
 	/**
 	 * VGM 发货人证书
 	 */
 	@ApiModelProperty(value = "VGM 发货人证书")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String vgmShipperCert;
 	/**
 	 * 版本
 	 */
 	@ApiModelProperty(value = "版本")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String version;
 	/**
 	 * 状态(0 正常 1停用)
 	 */
 	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer status;
 	/**
 	 * 是否已删除(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否已删除(0 否 1是)")
 	@TableLogic(value = "0", delval = "1")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer isDeleted;
 	/**
 	 * 备注
 	 */
 	@ApiModelProperty(value = "备注")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String remarks;
 
 	/**
 	 * 租户
 	 */
 	@ApiModelProperty(value = "租户")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String tenantId;
 
 	/**
 	 * 票数
 	 */
 	@ApiModelProperty(value = "票数")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String ticketNumber;
 	/**
 	 * 场站箱型代码
 	 */
 	@ApiModelProperty(value = "场站箱型代码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String cyCntrCode;
 
 	/**
 	 * pol 堆场
 	 */
 	@ApiModelProperty(value = "pol 堆场")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long polCyId;
 	/**
 	 * pol 堆场编码
 	 */
 	@ApiModelProperty(value = "pol 堆场编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyCode;
 	/**
 	 * pol 堆场中文
 	 */
 	@ApiModelProperty(value = "pol 堆场中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyCname;
 	/**
 	 * pol 堆场英文
 	 */
 	@ApiModelProperty(value = "pol 堆场英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String polCyEname;
 
 	/**
 	 * pol预出场日期
 	 */
 	@ApiModelProperty(value = "pol预出场日期")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polPreAppearanceDate;
 	/**
 	 * pol场站空箱出场日期
 	 */
 	@ApiModelProperty(value = "pol场站空箱出场日期")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polStationEmptyContainerExitDate;
 	/**
 	 * pol还箱日期
 	 */
 	@ApiModelProperty(value = "pol还箱日期")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date polReturnDate;
 	/**
 	 * pol超期箱使天数
 	 */
 	@ApiModelProperty(value = "pol超期箱使天数")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer polOverdueBoxUseDays;
 	/**
 	 * pod空箱还箱日期
 	 */
 	@ApiModelProperty(value = "pod空箱还箱日期")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Date podEmptyContainerReturnDate;
 	/**
 	 * pod场站
 	 */
 	@ApiModelProperty(value = "pod场站")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long podStationId;
 	/**
 	 * pod场站编码
 	 */
 	@ApiModelProperty(value = "pod场站编码")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationCode;
 	/**
 	 * pod场站中文
 	 */
 	@ApiModelProperty(value = "pod场站中文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationCname;
 	/**
 	 * pod场站英文
 	 */
 	@ApiModelProperty(value = "pod场站英文")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String podStationEname;
 	/**
 	 * pod箱使天数
 	 */
 	@ApiModelProperty(value = "pod箱使天数")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Integer podBoxUseDays;
 	/**
 	 * 来源分单id
 	 */
 	@ApiModelProperty(value = "来源分单id")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private Long srcSplitOrderId;
 	/**
 	 * 放箱号
 	 */
 	@ApiModelProperty(value = "放箱号")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String containerNumber;
 	/**
 	 * 是否生成超期箱使费
 	 */
 	@ApiModelProperty(value = "是否生成超期箱使费")
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	private String whetherFee;
 
 	/**

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/controller/FeesTemplateItemsController.java

@@ -122,7 +122,7 @@ public class FeesTemplateItemsController extends BladeController {
 	@ApiOperation(value = "删除", notes = "传入ids")
 	@RepeatSubmit
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(feesTemplateItemsService.removeByIds(Func.toLongList(ids)));
+		return feesTemplateItemsService.delete(Func.toLongList(ids));
 	}
 
 

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/IFeesTemplateItemsService.java

@@ -16,11 +16,14 @@
  */
 package org.springblade.los.basic.fees.service;
 
+import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.fees.entity.FeesTemplateItems;
 import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.List;
+
 /**
  * 基础资料-费用模版及明细 服务类
  *
@@ -38,4 +41,5 @@ public interface IFeesTemplateItemsService extends IService<FeesTemplateItems> {
 	 */
 	IPage<FeesTemplateItemsVO> selectFeesTemplateItemsPage(IPage<FeesTemplateItemsVO> page, FeesTemplateItemsVO feesTemplateItems);
 
+    R delete(List<Long> longList);
 }

+ 29 - 3
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/FeesTemplateItemsServiceImpl.java

@@ -16,13 +16,22 @@
  */
 package org.springblade.los.basic.fees.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.fees.entity.FeesTemplateItems;
-import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
+import org.springblade.los.basic.fees.entity.FeesTemplateSonItems;
 import org.springblade.los.basic.fees.mapper.FeesTemplateItemsMapper;
 import org.springblade.los.basic.fees.service.IFeesTemplateItemsService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.los.basic.fees.service.IFeesTemplateSonItemsService;
+import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 基础资料-费用模版及明细 服务实现类
@@ -31,11 +40,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
  * @since 2023-10-10
  */
 @Service
+@AllArgsConstructor
 public class FeesTemplateItemsServiceImpl extends ServiceImpl<FeesTemplateItemsMapper, FeesTemplateItems> implements IFeesTemplateItemsService {
 
+	private final IFeesTemplateSonItemsService feesTemplateSonItemsService;
+
 	@Override
 	public IPage<FeesTemplateItemsVO> selectFeesTemplateItemsPage(IPage<FeesTemplateItemsVO> page, FeesTemplateItemsVO feesTemplateItems) {
 		return page.setRecords(baseMapper.selectFeesTemplateItemsPage(page, feesTemplateItems));
 	}
 
+	@Override
+	public R delete(List<Long> longList) {
+		this.removeByIds(longList);
+		List<FeesTemplateSonItems> templateSonItemsList = feesTemplateSonItemsService.list(new LambdaQueryWrapper<FeesTemplateSonItems>()
+			.eq(FeesTemplateSonItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FeesTemplateSonItems::getIsDeleted, 0)
+			.in(FeesTemplateSonItems::getPpid, longList));
+		if (!templateSonItemsList.isEmpty()) {
+			feesTemplateSonItemsService.removeByIds(templateSonItemsList.stream().map(FeesTemplateSonItems::getId)
+				.collect(Collectors.toList()));
+		}
+		return R.data("操作成功");
+	}
+
 }

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

@@ -194,8 +194,18 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 			}
 			feesTemplateItemsService.saveOrUpdateBatch(losBFeesTemplate.getFeesTemplateItemsList());
 			List<FeesTemplateSonItems> sonItemsList = new ArrayList<>();
+			List<Long> idList = new ArrayList<>();
+			List<FeesTemplateSonItems> templateSonItemsList = feesTemplateSonItemsService.list(new LambdaQueryWrapper<FeesTemplateSonItems>()
+				.eq(FeesTemplateSonItems::getTenantId, AuthUtil.getTenantId())
+				.eq(FeesTemplateSonItems::getIsDeleted, 0)
+				.eq(FeesTemplateSonItems::getPid, losBFeesTemplate.getId()));
 			for (FeesTemplateItems item : losBFeesTemplate.getFeesTemplateItemsList()) {
 				if (ObjectUtils.isNotNull(item.getSonItemsList()) && !item.getSonItemsList().isEmpty()) {
+					List<Long> sonIdList = item.getSonItemsList().stream().filter(e -> !item.getQuantityRule().equals(e.getQuantityRule()) &&
+						ObjectUtils.isNotNull(e.getId())).map(FeesTemplateSonItems::getId).collect(Collectors.toList());
+					if (!sonIdList.isEmpty()) {
+						idList.addAll(sonIdList);
+					}
 					for (FeesTemplateSonItems sonItems : item.getSonItemsList()) {
 						sonItems.setDc(item.getDc());
 						/*sonItems.setUnitNo(item.getUnitNo());
@@ -226,6 +236,13 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 						sonItemsList.add(sonItems);
 					}
 				} else {
+					if (!templateSonItemsList.isEmpty()) {
+						List<Long> sonIdList = templateSonItemsList.stream().filter(e -> !e.getQuantityRule().equals(item.getQuantityRule()) &&
+							e.getPpid().equals(item.getId())).map(FeesTemplateSonItems::getId).collect(Collectors.toList());
+						if (!sonIdList.isEmpty()) {
+							idList.addAll(sonIdList);
+						}
+					}
 					FeesTemplateSonItems sonItems = new FeesTemplateSonItems();
 					sonItems.setDc(item.getDc());
 					sonItems.setPid(losBFeesTemplate.getId());
@@ -255,6 +272,19 @@ public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMap
 			if (!sonItemsList.isEmpty()) {
 				feesTemplateSonItemsService.saveOrUpdateBatch(sonItemsList);
 			}
+			if (!idList.isEmpty()) {
+				feesTemplateSonItemsService.removeByIds(idList);
+			} else {
+				if (!templateSonItemsList.isEmpty()) {
+					List<Long> ids = losBFeesTemplate.getFeesTemplateItemsList().stream().map(FeesTemplateItems::getId)
+						.collect(Collectors.toList());
+					List<Long> sonItems = templateSonItemsList.stream().filter(e -> !ids.contains(e.getPpid()))
+						.map(FeesTemplateSonItems::getId).collect(Collectors.toList());
+					if (!sonItems.isEmpty()) {
+						feesTemplateSonItemsService.removeByIds(sonItems);
+					}
+				}
+			}
 		}
 		return R.data(losBFeesTemplate);
 	}

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

@@ -1294,9 +1294,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					}
 				}
 				bills.setCntryString(text.toString());
-				bills.setCommodityDescr(bills.getCommodityDescr()+"SHIPPER'S LOAD,COUNT & SEAL"+bills.getQuantityCntrDescr()+"CONTAINER S.T.C"
-					+bills.getHpaymode()+bills.getServiceTerms()+bills.getCapitalLetters());
-				bills.setMarks(bills.getMarks()+bills.getCntryString());
+				/*bills.setCommodityDescr(bills.getCommodityDescr()+"SHIPPER'S LOAD,COUNT & SEAL"+bills.getQuantityCntrDescr()+"CONTAINER S.T.C"
+					+bills.getHpaymode()+bills.getServiceTerms()+bills.getCapitalLetters());*/
+				bills.setMarks(bills.getMarks() + "<br/>" +bills.getCntryString());
 				bills.setCntrSealNo(cntrSealNo.toString());
 				bills.setContainersReportsList(containersReportsList);
 				bills.setDept(dept);
@@ -1353,7 +1353,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					+bills.getHpaymode()+bills.getServiceTerms()+bills.getCapitalLetters()
 */
 
-				bills.setMarks(bills.getMarks()+bills.getCntryString());
+				bills.setMarks(bills.getMarks() +"<br/>" + bills.getCntryString());
 				bills.setCntrSealNo(cntrSealNo.toString());
 				bills.setDept(dept);
 				map.put(MagicValues.DATA, bills);
@@ -2120,9 +2120,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						.append(item.getMeasurement()).append("CBM").append("<br/>");
 				}
 				bills.setCntryString(text.toString());
-				bills.setCommodityDescr(bills.getCommodityDescr()+"SHIPPER'S LOAD,COUNT & SEAL"+bills.getQuantityCntrDescr()+"CONTAINER S.T.C"
-					+bills.getHpaymode()+bills.getServiceTerms()+bills.getCapitalLetters());
-				bills.setMarks(bills.getMarks()+bills.getCntryString());
+				/*bills.setCommodityDescr(bills.getCommodityDescr()+"SHIPPER'S LOAD,COUNT & SEAL"+bills.getQuantityCntrDescr()+"CONTAINER S.T.C"
+					+bills.getHpaymode()+bills.getServiceTerms()+bills.getCapitalLetters());*/
+				bills.setMarks(bills.getMarks() + "<br/>" + bills.getCntryString());
 				bills.setDept(dept);
 				map.put(MagicValues.DATA, bills);
 			} else {

+ 43 - 38
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/ExpenseApplicationServiceImpl.java

@@ -398,6 +398,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 				expenseApplication.setCreateUserName(AuthUtil.getUserName());
 				expenseApplication.setSrcNo(bills.getBillNo());
 				expenseApplication.setSrcMblno(bills.getMblno());
+				expenseApplication.setSrcHblno(bills.getHblno());
 				expenseApplication.setSrcContainerNumber("");
 				expenseApplication.setSrcContractNo(bills.getBookingNo());
 				expenseApplication.setStatus("审核提交");
@@ -456,48 +457,50 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 			processType = "请核费用";
 			checkType = "FYSQ";
 		}
-		//审批数据
-		LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
-		//获取审批级次
-		List<LosAuditPathsLevels> auditPathsLevels;
-		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
-		LosAuditPathsActs pathsActs;
-		//是否开启流程
+		//审批流程
 		LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
 		auditPathsActsLambdaQueryWrapper
-			.eq(LosAuditPathsActs::getIsEnable, 1)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
 			.eq(LosAuditPathsActs::getActId, actId);
-		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
-		//获取审批信息
-		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
-			.eq(LosAuditPathsActs::getActId, actId)
-			.eq(LosAuditPathsActs::getFidStatus, "status")
-			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
-			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
-		Long pathId = losAuditPathsActs.getPathId();
-		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
-			.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
-		auditProecessDTO.setTimes(1);
-		auditProecessDTO.setProcessType(processType);
-		// 没开启审批流直接走 通过流程
-		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
-			throw new SecurityException("当前租户未查询到审批流配置");
-		} else {
-			if (CollectionUtils.isEmpty(auditPathsLevels)) {
-				throw new SecurityException("开启审批失败:未查询到审批信息");
-			}
-			// 绑定审核类型
-			auditProecessDTO.setCheckType(checkType);
-			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
-			auditProecessDTO.setActId(1);
-			auditProecessDTO.setSendUserId(AuthUtil.getUserId());
-			auditProecessDTO.setSendName(AuthUtil.getUserName());
-			auditProecessDTO.setSendTime(new Date());
-			auditProecessDTO.setTenantId(AuthUtil.getTenantId());
-			for (ExpenseApplication expenseApplication : expenseApplicationList) {
+		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
+		List<LosAuditPathsActs> pathsActsList = auditPathsActsService.list(auditPathsActsLambdaQueryWrapper);
+		if (pathsActsList.isEmpty()){
+			throw new RuntimeException("请先维护审批路径");
+		}
+		//获取审批级次
+		List<LosAuditPathsLevels> auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
+			.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()));
+		if (auditPathsLevels.isEmpty()){
+			throw new RuntimeException("请先维护审批人");
+		}
+		for (ExpenseApplication expenseApplication : expenseApplicationList) {
+			//审批数据
+			LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
+			auditProecessDTO.setTimes(1);
+			auditProecessDTO.setProcessType(processType);
+			//获取审批信息
+			LosAuditPathsActs pathsActs = pathsActsList.stream().filter(e-> expenseApplication.getBranchId().equals(e.getSalesCompanyId()+""))
+				.findFirst().orElse(null);
+			// 没开启审批流直接走 通过流程
+			if (pathsActs == null || pathsActs.getIsEnable() == 2) {
+				throw new SecurityException("当前租户未查询到审批流配置");
+			} else {
+				Long pathId = pathsActs.getPathId();
+				//获取审批级次
+				List<LosAuditPathsLevels> levelsList = auditPathsLevels.stream().filter(e-> e.getPathId().equals(pathId))
+					.collect(Collectors.toList());
+				if (CollectionUtils.isEmpty(levelsList)) {
+					throw new SecurityException("开启审批失败:未查询到审批信息");
+				}
+				// 绑定审核类型
+				auditProecessDTO.setCheckType(checkType);
+				auditProecessDTO.setPathsLevelsList(levelsList);
+				auditProecessDTO.setActId(1);
+				auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+				auditProecessDTO.setSendName(AuthUtil.getUserName());
+				auditProecessDTO.setSendTime(new Date());
+				auditProecessDTO.setTenantId(AuthUtil.getTenantId());
 				// 追加跳转路由url
 				auditProecessDTO.setUrl(expenseApplication.getUrl());
 				auditProecessDTO.setPageStatus(expenseApplication.getPageStatus());
@@ -514,6 +517,8 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 				auditProecessDTO.setSrcBusType(expenseApplication.getSrcType());
 				auditProecessDTO.setSalesCompanyId(Long.parseLong(expenseApplication.getBranchId()));
 				auditProecessDTO.setSalesCompanyName(expenseApplication.getBranchName());
+				auditProecessDTO.setMblno(expenseApplication.getSrcMblno());
+				auditProecessDTO.setHblno(expenseApplication.getSrcHblno());
 				BigDecimal salesPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("D"))
 					.map(FeeCenter::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
 				BigDecimal costPrice = expenseApplication.getFeeCenterList().stream().filter(e -> e.getDc().equals("C"))
@@ -559,7 +564,7 @@ public class ExpenseApplicationServiceImpl extends ServiceImpl<ExpenseApplicatio
 			FinAccBills finAccBills = new FinAccBills();
 			finAccBills.setFeeCenterList(feeCenterList);
 			finAccBillsService.revokeBill(finAccBills);
-		}else{
+		} else {
 			for (FeeCenter item : expenseApplication.getFeeCenterList()) {
 				item.setStlPid(null);
 				item.setAuditStatus("0");

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

@@ -219,7 +219,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
 					}
 				}
-			}else{
+			} else {
 				if (ObjectUtils.isNotNull(bills.getHblno())) {
 					if (!count1.isEmpty()) {
 						throw new RuntimeException("分单号不允许重复:" + bills.getHblno());
@@ -274,7 +274,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
 					}
 				}
-			}else{
+			} else {
 				if (ObjectUtils.isNotNull(bills.getHblno())) {
 					if (!count.isEmpty() && !ids.contains(bills.getId())) {
 						throw new RuntimeException("分单号不允许重复:" + bills.getHblno());
@@ -521,9 +521,42 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		} else if (1 == statusD && 1 == statusC) {
 			bills.setAccountStatus(3);
 		}
-		BigDecimal quantity = bills.getQuantity();
-		BigDecimal grossWeight = bills.getGrossWeight();
-		BigDecimal measurement = bills.getMeasurement();
+		BigDecimal quantity = new BigDecimal("0.00");
+		BigDecimal grossWeight = new BigDecimal("0.00");
+		BigDecimal measurement = new BigDecimal("0.00");
+		if (ObjectUtils.isNotNull(bills.getContainersList())) {
+			for (Containers item : bills.getContainersList()) {
+				quantity = quantity.add(item.getQuantity());
+				grossWeight = grossWeight.add(item.getGrossWeight());
+				measurement = measurement.add(item.getMeasurement());
+				item.setPid(bills.getId());
+				if ("MH".equals(bills.getBillType())) {
+					item.setHblno(bills.getHblno());
+				} else {
+					if (ObjectUtils.isNull(item.getHblno())) {
+						item.setHblno(bills.getBookingNo());
+					}
+				}
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			containersService.saveOrUpdateBatch(bills.getContainersList());
+		}
+		if (quantity.compareTo(new BigDecimal("0.00")) == 0){
+			quantity = bills.getQuantity();
+			grossWeight = bills.getGrossWeight();
+			measurement = bills.getMeasurement();
+		}
 		//主单应加上分单费用
 		if ("MM".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
 			bills.setMasterBillNo(bills.getBillNo());
@@ -720,31 +753,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 			seaContainerNumberItemService.saveOrUpdateBatch(bills.getContainerNumberItemList());
 		}
-		if (ObjectUtils.isNotNull(bills.getContainersList())) {
-			for (Containers item : bills.getContainersList()) {
-				item.setPid(bills.getId());
-				if ("MH".equals(bills.getBillType())) {
-					item.setHblno(bills.getHblno());
-				} else {
-					if (ObjectUtils.isNull(item.getHblno())) {
-						item.setHblno(bills.getBookingNo());
-					}
-				}
-				if (item.getId() == null) {
-					item.setCreateTime(new Date());
-					item.setCreateUser(AuthUtil.getUserId());
-					item.setCreateUserName(AuthUtil.getUserName());
-					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-						item.setCreateDeptName(deptName);
-					}
-				} else {
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateTime(new Date());
-					item.setUpdateUserName(AuthUtil.getUserName());
-				}
-			}
-			containersService.saveOrUpdateBatch(bills.getContainersList());
-		}
 		//应结日期计算
 		if ("SE".equals(bills.getBusinessType())) {
 			bills.setDueDate(this.dueDate(bills));
@@ -2171,7 +2179,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		copyBills.setOperatorDeptName(detail.getOperatorDeptName());
 		copyBills.setBillNo("");
 		copyBills.setMblno("");
-		copyBills.setHblno("");
+//		copyBills.setHblno("");
 		copyBills.setRefno("");
 		copyBills.setBookingNo("");
 		copyBills.setMasterBillNo(null);
@@ -3589,7 +3597,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<Bills>()
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
 			.eq(Bills::getIsDeleted, 0)
-			.eq(Bills::getBranchId, AuthUtil.getDeptId())
 			.apply("find_in_set(id,'" + billsIds + "')");
 		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
 			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
@@ -3603,11 +3610,11 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			List<Bills> billsHList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
 				.eq(Bills::getIsDeleted, 0)
-				.eq(Bills::getBranchId, AuthUtil.getDeptId())
-				.apply("find_in_set(id,'" + billsIds + "')"));
+				.in(Bills::getMasterId, idMList));
 			if (billsHList.isEmpty()) {
 				throw new RuntimeException("未查到单据信息");
 			}
+			idMList.addAll(billsHList.stream().map(Bills::getId).collect(Collectors.toList()));
 			List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 				.eq(FeeCenter::getIsDeleted, 0)
@@ -3621,7 +3628,9 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if (feeCenters.isEmpty()) {
 					throw new RuntimeException("未查到分单编号:" + item.getBillNo() + "费用明细,先维护分单费用");
 				}
+				item.setStatus(1);
 			}
+			this.updateBatchById(billsHList);
 		}
 		Integer actId = null;
 		String processType = "";
@@ -3749,6 +3758,25 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			declare.setStatus(1);
 		}
 		this.updateBatchById(billsList);
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getAuditStatus, "0")
+			.eq(FeeCenter::getAccStatus, 0)
+			.in(FeeCenter::getPid, idMList));
+		if (!feeCenterList.isEmpty()) {
+			for (FeeCenter item : feeCenterList) {
+				item.setUpdateTime(new Date());
+				item.setUpdateUser(AuthUtil.getUserId());
+				item.setUpdateUserName(AuthUtil.getUserName());
+				item.setAuditStatus("1");
+				item.setApplyId(AuthUtil.getUserId());
+				item.setApplyName(AuthUtil.getUserName());
+				item.setApplyTime(new Date());
+			}
+			feeCenterService.updateBatchById(feeCenterList);
+		}
+
 		return R.success("操作成功");
 	}
 
@@ -4144,6 +4172,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 			throw new RuntimeException("生成订单编号失败");
 		}
+		copyBills.setSiRemarks(detail.getCyRemarks());
 		copyBills.setBusinessType("SE");
 		copyBills.setBusinessTypes("海运");
 		copyBills.setSeaType("E");

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

@@ -7,7 +7,6 @@ import org.apache.poi.ss.usermodel.*;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.Util.BigDecimalUtils;
-import org.springblade.los.Util.BoxNumUtils;
 import org.springblade.los.basic.packages.entity.BPackages;
 import org.springblade.los.basic.packages.service.IBPackagesService;
 import org.springblade.los.basic.ports.entity.BPorts;
@@ -1475,7 +1474,7 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 		if (ObjectUtils.isNotNull(marks)) {
 			bills.setMarks(marks);
 		}
-		if (!"KHTS".equals(bills.getBusinessType())){
+		if (!"KHTS".equals(bills.getBusinessType())) {
 			List<Containers> containersList = new ArrayList<>();
 			BigDecimal sumQty = new BigDecimal(0L);
 			BigDecimal sumGw = new BigDecimal(0L);
@@ -1539,6 +1538,9 @@ public class TemplateImportServiceImpl implements ITemplateImportService {
 					double v1 = getSheetCellValueAsDouble(sheet, r, cellIndex + 7);
 					containers.setMeasurement(BigDecimal.valueOf(v1));
 					sumVol = sumVol.add(new BigDecimal(v1));
+					if (tare + w1 != vgmWeight) {
+						throw new RuntimeException("箱号:" + containers.getCntrNo() + "VGM总重!=箱皮重+毛重");
+					}
 					containersList.add(containers);
 				}
 			}

+ 7 - 15
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -1582,14 +1582,6 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			throw new SecurityException("审批开始修改审核状态失败");
 		}
 		if ("4".equals(number)) {
-			String deptId = expenseApplication.getBranchId() == null ? AuthUtil.getDeptId() : expenseApplication.getBranchId();
-			String deptName = "";
-			String branchId = expenseApplication.getBranchId() == null ? AuthUtil.getDeptId() : expenseApplication.getBranchId();
-			//获取部门ids对应中文名
-			R<List<String>> res = sysClient.getDeptNames(branchId);
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
-			}
 			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
 				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
 				.eq(BusinessType::getIsDeleted, 0)
@@ -1610,16 +1602,16 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				data.setCreateTime(new Date());
 				data.setCreateUser(AuthUtil.getUserId());
 				data.setCreateUserName(AuthUtil.getUserName());
-				data.setCreateDept(deptId);
-				data.setCreateDeptName(deptName);
-				data.setBranchId(branchId);
-				data.setBranchName(deptName);
-				data.setDeptId(Long.parseLong(deptId));
-				data.setDeptName(deptName);
+				data.setCreateDept(item.getBranchId());
+				data.setCreateDeptName(item.getBranchName());
+				data.setBranchId(item.getBranchId());
+				data.setBranchName(item.getBranchName());
+				data.setDeptId(Long.parseLong(item.getBranchId()));
+				data.setDeptName(item.getBranchName());
 				BusinessBillNo businessBillNo = new BusinessBillNo();
 				businessBillNo.setBusinessTypeId(businessType.getId());
 				businessBillNo.setCode("YWZD");
-				businessBillNo.setBranchId(branchId);
+				businessBillNo.setBranchId(item.getBranchId());
 				R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
 				if (!clientBillNo.isSuccess()) {
 					TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

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

@@ -569,6 +569,33 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		}
 		if (!list.isEmpty()) {
 			this.saveOrUpdateBatch(list);
+			BigDecimal amountDr;
+			BigDecimal amountCr;
+			BigDecimal amountProfit;
+			BigDecimal amountDrUsd;
+			BigDecimal amountCrUsd;
+			BigDecimal amountProfitUsd;
+			BigDecimal amountDrLoc = new BigDecimal("0.00");
+			BigDecimal amountCrLoc = new BigDecimal("0.00");
+			BigDecimal amountProfitLoc;
+			amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			amountCrUsd = list.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+			//利润 = 收 - 付
+			amountProfit = amountDr.subtract(amountCr);
+			amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+			amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+			bills.setAmountDr(amountDr);
+			bills.setAmountCr(amountCr);
+			bills.setAmountProfit(amountProfit);
+			bills.setAmountDrUsd(amountDrUsd);
+			bills.setAmountCrUsd(amountCrUsd);
+			bills.setAmountProfitUsd(amountProfitUsd);
+			bills.setAmountDrLoc(amountDrLoc);
+			bills.setAmountCrLoc(amountCrLoc);
+			bills.setAmountProfitLoc(amountProfitLoc);
+			billsMapper.updateById(bills);
 		} else {
 			throw new RuntimeException("导入失败,未查到可用模版信息");
 		}
@@ -1219,6 +1246,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", branchId);
 			int count = 1;
+			List<FeeCenter> list1 = new ArrayList<>();
 			for (FeesTemplateSonItems items : sonItemsList) {
 				FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> e.getId().equals(items.getPpid()))
 					.findFirst().orElse(null);
@@ -1401,6 +1429,36 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					}
 				}
 				list.add(feeCenter);
+				list1.add(feeCenter);
+			}
+			if (!list1.isEmpty()) {
+				BigDecimal amountDr;
+				BigDecimal amountCr;
+				BigDecimal amountProfit;
+				BigDecimal amountDrUsd;
+				BigDecimal amountCrUsd;
+				BigDecimal amountProfitUsd;
+				BigDecimal amountDrLoc = new BigDecimal("0.00");
+				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountProfitLoc;
+				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				//利润 = 收 - 付
+				amountProfit = amountDr.subtract(amountCr);
+				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+				bills.setAmountDr(amountDr);
+				bills.setAmountCr(amountCr);
+				bills.setAmountProfit(amountProfit);
+				bills.setAmountDrUsd(amountDrUsd);
+				bills.setAmountCrUsd(amountCrUsd);
+				bills.setAmountProfitUsd(amountProfitUsd);
+				bills.setAmountDrLoc(amountDrLoc);
+				bills.setAmountCrLoc(amountCrLoc);
+				bills.setAmountProfitLoc(amountProfitLoc);
+				billsMapper.updateById(bills);
 			}
 		}
 		if (!list.isEmpty()) {
@@ -1508,6 +1566,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", branchId);
 			int count = 1;
+			List<FeeCenter> list1 = new ArrayList<>();
 			for (RouteCostItem items : routeCostItemList) {
 				if ("DD".equals(bills.getBillType())) {
 					FeeCenter feeCenter = this.addFeeCenter(bills, "C", count, fees, "船公司", items,
@@ -1516,6 +1575,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenter.setBranchId(branchId);
 						feeCenter.setBranchName(deptName);
 						list.add(feeCenter);
+						list1.add(feeCenter);
 						count++;
 					}
 					FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
@@ -1524,6 +1584,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenterD.setBranchId(branchId);
 						feeCenterD.setBranchName(deptName);
 						list.add(feeCenterD);
+						list1.add(feeCenterD);
 						count++;
 					}
 				} else if ("MM".equals(bills.getBillType())) {
@@ -1533,6 +1594,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenter.setBranchId(branchId);
 						feeCenter.setBranchName(deptName);
 						list.add(feeCenter);
+						list1.add(feeCenter);
 						count++;
 					}
 					FeeCenter feeCenterD = this.addFeeCenter(bills, "D", count, feesD, "国内直接客户", items,
@@ -1541,6 +1603,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenterD.setBranchId(branchId);
 						feeCenterD.setBranchName(deptName);
 						list.add(feeCenterD);
+						list1.add(feeCenterD);
 						count++;
 					}
 				} else if ("MH".equals(bills.getBillType())) {
@@ -1558,6 +1621,35 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				}
 
 			}
+			if (!list1.isEmpty()) {
+				BigDecimal amountDr;
+				BigDecimal amountCr;
+				BigDecimal amountProfit;
+				BigDecimal amountDrUsd;
+				BigDecimal amountCrUsd;
+				BigDecimal amountProfitUsd;
+				BigDecimal amountDrLoc = new BigDecimal("0.00");
+				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountProfitLoc;
+				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				//利润 = 收 - 付
+				amountProfit = amountDr.subtract(amountCr);
+				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+				bills.setAmountDr(amountDr);
+				bills.setAmountCr(amountCr);
+				bills.setAmountProfit(amountProfit);
+				bills.setAmountDrUsd(amountDrUsd);
+				bills.setAmountCrUsd(amountCrUsd);
+				bills.setAmountProfitUsd(amountProfitUsd);
+				bills.setAmountDrLoc(amountDrLoc);
+				bills.setAmountCrLoc(amountCrLoc);
+				bills.setAmountProfitLoc(amountProfitLoc);
+				billsMapper.updateById(bills);
+			}
 		}
 		if (!list.isEmpty()) {
 			this.saveOrUpdateBatch(list);
@@ -1663,6 +1755,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			String exrateType = currencyUtils.standardCurrency(branchId);
 			List<BCurExrate> curExrateList = currencyUtils.obtainRate(date, "1", branchId);
 			int count = 1;
+			List<FeeCenter> list1 = new ArrayList<>();
 			for (PreContainers item : preContainers) {
 				FeeCenter feeCenter = this.addFeeCenterQuotation(bills, "D", count, fees, "国内直接客户", item,
 					curExrateList, mktSlotQuotation, exrateType, "1");
@@ -1671,6 +1764,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					feeCenter.setBranchId(branchId);
 					feeCenter.setBranchName(deptName);
 					list.add(feeCenter);
+					list1.add(feeCenter);
 					count++;
 				}
 				if ("SOC".equals(bills.getBoxBelongsTo())) {
@@ -1681,6 +1775,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenterD.setBranchId(branchId);
 						feeCenterD.setBranchName(deptName);
 						list.add(feeCenterD);
+						list1.add(feeCenterD);
 						count++;
 					}
 				} else if ("COC".equals(bills.getBoxBelongsTo())) {
@@ -1691,12 +1786,41 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						feeCenterD.setBranchId(branchId);
 						feeCenterD.setBranchName(deptName);
 						list.add(feeCenterD);
+						list1.add(feeCenterD);
 						count++;
 					}
 				} else {
 					throw new RuntimeException("单号:" + bills.getBillNo() + "单据箱箱属不符");
 				}
-
+			}
+			if (!list1.isEmpty()) {
+				BigDecimal amountDr;
+				BigDecimal amountCr;
+				BigDecimal amountProfit;
+				BigDecimal amountDrUsd;
+				BigDecimal amountCrUsd;
+				BigDecimal amountProfitUsd;
+				BigDecimal amountDrLoc = new BigDecimal("0.00");
+				BigDecimal amountCrLoc = new BigDecimal("0.00");
+				BigDecimal amountProfitLoc;
+				amountDr = list1.stream().filter(e -> "D".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountDrUsd = list1.stream().filter(e -> "D".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCr = list1.stream().filter(e -> "C".equals(e.getDc()) && exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				amountCrUsd = list1.stream().filter(e -> "C".equals(e.getDc()) && !exrateType.equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+				//利润 = 收 - 付
+				amountProfit = amountDr.subtract(amountCr);
+				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
+				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
+				bills.setAmountDr(amountDr);
+				bills.setAmountCr(amountCr);
+				bills.setAmountProfit(amountProfit);
+				bills.setAmountDrUsd(amountDrUsd);
+				bills.setAmountCrUsd(amountCrUsd);
+				bills.setAmountProfitUsd(amountProfitUsd);
+				bills.setAmountDrLoc(amountDrLoc);
+				bills.setAmountCrLoc(amountCrLoc);
+				bills.setAmountProfitLoc(amountProfitLoc);
+				billsMapper.updateById(bills);
 			}
 		}
 		if (!list.isEmpty()) {
@@ -1828,7 +1952,8 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		}
 	}
 
-	private FeeCenter addFeeCenter(Bills bills, String dc, int count, BFees fees, String corpType, RouteCostItem items,
+	private FeeCenter addFeeCenter(Bills bills, String dc, int count, BFees fees, String corpType, RouteCostItem
+		items,
 								   List<BCurExrate> curExrateList, List<PreContainers> preContainers,
 								   String exrateType, String type) {
 		FeeCenter feeCenter = new FeeCenter();

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

@@ -148,7 +148,6 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			throw new RuntimeException("未找到可用业务类型");
 		}
 		List<FeeCenter> reducelList = finAccBills.getFeeCenterList().stream().filter(distinctByKey(FeeCenter::getBillKey)).collect(Collectors.toList());
-		String branchId = "";
 		if (ObjectUtils.isNotNull(ids) && !ids.isEmpty()) {
 			billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
 				.eq(Bills::getTenantId, AuthUtil.getTenantId())
@@ -158,15 +157,11 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 				for (Bills item : billsList) {
 					item.setBillingStatus(item.getBillingStatus() + reducelList.size());
 					billsMapper.updateById(item);
-					branchId = item.getBranchId();
 				}
 			}
 		}
-		if (ObjectUtils.isNull(branchId)) {
-			branchId = AuthUtil.getDeptId();
-		}
-		String exrateType = currencyUtils.standardCurrency(branchId);
 		for (FeeCenter item : reducelList) {
+			String exrateType = currencyUtils.standardCurrency(item.getBranchId());
 			BigDecimal amountCNY = finAccBills.getFeeCenterList().stream()
 				.filter(e -> e.getBillKey().equals(item.getBillKey()) && item.getCurCode().equals(e.getCurCode())
 					&& exrateType.equals(e.getCurCode()))
@@ -188,7 +183,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 			BusinessBillNo businessBillNo = new BusinessBillNo();
 			businessBillNo.setBusinessTypeId(businessType.getId());
 			businessBillNo.setCode(finAccBills.getBillNoFormat());
-			businessBillNo.setBranchId(branchId);
+			businessBillNo.setBranchId(item.getBranchId());
 			R clientBillNo = businessBillNoService.getBillNoLos(businessBillNo);
 			if (!clientBillNo.isSuccess()) {
 				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();