Browse Source

2023年10月10日17:02:00

纪新园 2 years ago
parent
commit
c367a890eb
60 changed files with 3334 additions and 30 deletions
  1. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/entity/BAccItemsType.java
  2. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/dto/BCorpsExcel.java
  3. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/dto/CorpsInvoiceHeaderDTO.java
  4. 31 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorps.java
  5. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsAttn.java
  6. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsBadrecord.java
  7. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsBank.java
  8. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsFiles.java
  9. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsRename.java
  10. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsTypes.java
  11. 141 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/CorpsInvoiceHeader.java
  12. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/vo/CorpsInvoiceHeaderVO.java
  13. 18 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/cur/entity/BCurExrate.java
  14. 19 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/cur/entity/BCurrency.java
  15. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/FeesTemplateItemsDTO.java
  16. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/LosBFeesTemplateDTO.java
  17. 91 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/LosBFeesTemplateExcel.java
  18. 4 4
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/entity/BFees.java
  19. 179 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/entity/FeesTemplateItems.java
  20. 161 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/entity/LosBFeesTemplate.java
  21. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/vo/FeesTemplateItemsVO.java
  22. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/vo/LosBFeesTemplateVO.java
  23. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceDTO.java
  24. 117 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceExcel.java
  25. 34 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceItemsDTO.java
  26. 192 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/entity/AgreementPrice.java
  27. 158 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/entity/AgreementPriceItems.java
  28. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/vo/AgreementPriceItemsVO.java
  29. 36 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/vo/AgreementPriceVO.java
  30. 4 4
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/service/impl/BAccItemsTypeServiceImpl.java
  31. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/controller/CorpsInvoiceHeaderController.java
  32. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsInvoiceHeaderMapper.java
  33. 32 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsInvoiceHeaderMapper.xml
  34. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsMapper.xml
  35. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/ICorpsInvoiceHeaderService.java
  36. 26 6
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsServiceImpl.java
  37. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/CorpsInvoiceHeaderServiceImpl.java
  38. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/mapper/CurExrateMapper.xml
  39. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/mapper/CurrencyMapper.xml
  40. 5 5
      blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/service/impl/BCurrencyServiceImpl.java
  41. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/controller/FeesTemplateItemsController.java
  42. 184 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/controller/LosBFeesTemplateController.java
  43. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/FeesTemplateItemsMapper.java
  44. 40 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/FeesTemplateItemsMapper.xml
  45. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/LosBFeesTemplateMapper.java
  46. 35 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/LosBFeesTemplateMapper.xml
  47. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/IFeesTemplateItemsService.java
  48. 65 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/ILosBFeesTemplateService.java
  49. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/FeesTemplateItemsServiceImpl.java
  50. 145 0
      blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/LosBFeesTemplateServiceImpl.java
  51. 199 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceController.java
  52. 126 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceItemsController.java
  53. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceItemsMapper.java
  54. 36 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceItemsMapper.xml
  55. 42 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceMapper.java
  56. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceMapper.xml
  57. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/IAgreementPriceItemsService.java
  58. 65 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/IAgreementPriceService.java
  59. 41 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/impl/AgreementPriceItemsServiceImpl.java
  60. 144 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/impl/AgreementPriceServiceImpl.java

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/acc/entity/BAccItemsType.java

@@ -129,7 +129,7 @@ public class BAccItemsType implements Serializable {
 	 * 财务核算项目
 	 */
 	@TableField(exist = false)
-	private List<BAccItems> bAccItemsList;
+	private List<BAccItems> accItemsList;
 
 
 }

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/dto/BCorpsExcel.java

@@ -44,7 +44,7 @@ public class BCorpsExcel implements Serializable {
 	 * 分公司 Id
 	 */
 	@ExcelProperty(value = "分公司 Id")
-	private Long branchId;
+	private String branchId;
 
 	/**
 	 * 单位编码

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/dto/CorpsInvoiceHeaderDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.dto;
+
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 客户发票数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CorpsInvoiceHeaderDTO extends CorpsInvoiceHeader {
+	private static final long serialVersionUID = 1L;
+
+}

+ 31 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorps.java

@@ -52,7 +52,7 @@ public class BCorps implements Serializable {
 	 * 分公司 Id
 	 */
 	@ApiModelProperty(value = "分公司 Id")
-	private Long branchId;
+	private String branchId;
 	/**
 	 * 创建人 Id
 	 */
@@ -446,7 +446,7 @@ public class BCorps implements Serializable {
 	/**
 	 * 是否已删除(0 否 1是)
 	 */
-	@TableLogic(value = "0",delval = "1")
+	@TableLogic(value = "0", delval = "1")
 	@ApiModelProperty(value = "是否已删除(0 否 1是)")
 	private Integer isDeleted;
 	/**
@@ -461,6 +461,30 @@ public class BCorps implements Serializable {
 	private String tenantId;
 
 	/**
+	 * 企业类型
+	 */
+	@ApiModelProperty(value = "企业类型")
+	private String enterpriseType;
+
+	/**
+	 * 优势航线
+	 */
+	@ApiModelProperty(value = "优势航线")
+	private String advantageRoute;
+
+	/**
+	 * 维护人员
+	 */
+	@ApiModelProperty(value = "维护人员")
+	private String maintenanceStaffId;
+
+	/**
+	 * 维护人员
+	 */
+	@ApiModelProperty(value = "维护人员")
+	private String maintenanceStaffName;
+
+	/**
 	 * 客户更改授信等级记录
 	 */
 	@TableField(exist = false)
@@ -489,6 +513,11 @@ public class BCorps implements Serializable {
 	 */
 	@TableField(exist = false)
 	private List<BCorpsFiles> corpsFilesList;
+	/**
+	 * 客户发表抬头
+	 */
+	@TableField(exist = false)
+	private List<CorpsInvoiceHeader> corpsInvoiceHeaderList;
 
 
 }

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsAttn.java

@@ -46,7 +46,7 @@ public class BCorpsAttn implements Serializable {
 	* 分公司 Id
 	*/
 		@ApiModelProperty(value = "分公司 Id")
-		private Long branchId;
+		private String branchId;
 	/**
 	* 创建人 Id
 	*/

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsBadrecord.java

@@ -46,7 +46,7 @@ public class BCorpsBadrecord implements Serializable {
 	* 分公司 Id
 	*/
 		@ApiModelProperty(value = "分公司 Id")
-		private Long branchId;
+		private String branchId;
 	/**
 	* 创建人 Id
 	*/

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsBank.java

@@ -46,7 +46,7 @@ public class BCorpsBank implements Serializable {
 	* 分公司 Id
 	*/
 		@ApiModelProperty(value = "分公司 Id")
-		private Long branchId;
+		private String branchId;
 	/**
 	* 创建人 Id
 	*/

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsFiles.java

@@ -46,7 +46,7 @@ public class BCorpsFiles implements Serializable {
 	* 分公司 Id
 	*/
 		@ApiModelProperty(value = "分公司 Id")
-		private Long branchId;
+		private String branchId;
 	/**
 	* 创建人 Id
 	*/

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsRename.java

@@ -46,7 +46,7 @@ public class BCorpsRename implements Serializable {
 	* 分公司 Id
 	*/
 		@ApiModelProperty(value = "分公司 Id")
-		private Long branchId;
+		private String branchId;
 	/**
 	* 创建人 Id
 	*/

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/BCorpsTypes.java

@@ -47,7 +47,7 @@ public class BCorpsTypes implements Serializable {
 	 * 分公司 Id
 	 */
 	@ApiModelProperty(value = "分公司 Id")
-	private Long branchId;
+	private String branchId;
 	/**
 	 * 创建人 Id
 	 */

+ 141 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/entity/CorpsInvoiceHeader.java

@@ -0,0 +1,141 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 客户发票实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@TableName("los_b_corps_invoice_header")
+@ApiModel(value = "CorpsInvoiceHeader对象", description = "客户发票")
+public class CorpsInvoiceHeader implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 主表id
+	 */
+	@ApiModelProperty(value = "主表id")
+	private Long pid;
+	/**
+	 * 保函号码
+	 */
+	@ApiModelProperty(value = "保函号码")
+	private String guaranteeNo;
+	/**
+	 * 保函日期
+	 */
+	@ApiModelProperty(value = "保函日期")
+	private String guaranteeDate;
+	/**
+	 * 发票抬头
+	 */
+	@ApiModelProperty(value = "发票抬头")
+	private String invoiceHeader;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/corps/vo/CorpsInvoiceHeaderVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.vo;
+
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 客户发票视图实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "CorpsInvoiceHeaderVO对象", description = "客户发票")
+public class CorpsInvoiceHeaderVO extends CorpsInvoiceHeader {
+	private static final long serialVersionUID = 1L;
+
+}

+ 18 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/cur/entity/BCurExrate.java

@@ -164,5 +164,23 @@ public class BCurExrate implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 汇率年
+	 */
+	@ApiModelProperty(value = "租户")
+	private Integer exrateYear;
+
+	/**
+	 * 汇率月
+	 */
+	@ApiModelProperty(value = "租户")
+	private Integer exrateMonth;
+
+	/**
+	 * 汇率日
+	 */
+	@ApiModelProperty(value = "租户")
+	private Integer exrateDay;
+
 
 }

+ 19 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/cur/entity/BCurrency.java

@@ -157,10 +157,28 @@ public class BCurrency implements Serializable {
 	private String tenantId;
 
 	/**
+	 * 汇率类型
+	 */
+	@ApiModelProperty(value = "汇率类型")
+	private String paritiesType;
+
+	/**
+	 * 年
+	 */
+	@ApiModelProperty(value = "年")
+	private Integer annual;
+
+	/**
+	 * 月
+	 */
+	@ApiModelProperty(value = "月")
+	private Integer moon;
+
+	/**
 	 * 币种汇率
 	 */
 	@TableField(exist = false)
-	private List<BCurExrate> bCurExrateList;
+	private List<BCurExrate> curExrateList;
 
 
 }

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/FeesTemplateItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.dto;
+
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 基础资料-费用模版及明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class FeesTemplateItemsDTO extends FeesTemplateItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/LosBFeesTemplateDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.dto;
+
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 基础资料-费用模版及明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class LosBFeesTemplateDTO extends LosBFeesTemplate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 91 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/dto/LosBFeesTemplateExcel.java

@@ -0,0 +1,91 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 基础资料-费用模版及明细实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class LosBFeesTemplateExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+	/**
+	 * 业务类型 Id
+	 */
+	@ExcelProperty(value = "业务类型 Id")
+	private Long businessTypeId;
+	/**
+	 * 业务类型中文名称
+	 */
+	@ExcelProperty(value = "业务类型中文名称")
+	private String businessTypeCnName;
+	/**
+	 * 业务类型英文名称
+	 */
+	@ExcelProperty(value = "业务类型英文名称")
+	private String businessTypeEnName;
+	/**
+	 * 模版编号
+	 */
+	@ExcelProperty(value = "模版编号")
+	private String code;
+	/**
+	 * 模版中文名称
+	 */
+	@ExcelProperty(value = "模版中文名称")
+	private String cnName;
+	/**
+	 * 模版英文名称
+	 */
+	@ExcelProperty(value = "模版英文名称")
+	private String enName;
+	/**
+	 * 收付,D:收 C 付
+	 */
+	@ExcelProperty(value = "收付,D:收 C 付")
+	private String dc;
+	/**
+	 * 是否公开共享
+	 */
+	@ExcelProperty(value = "是否公开共享")
+	private String isShared;
+
+	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+
+
+}

+ 4 - 4
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/entity/BFees.java

@@ -164,15 +164,15 @@ public class BFees implements Serializable {
 	private String tenantId;
 
 	/**
-	 * 租户
+	 * 费用类别
 	 */
-	@ApiModelProperty(value = "租户")
+	@ApiModelProperty(value = "费用类别")
 	private String feesTypeId;
 
 	/**
-	 * 租户
+	 * 费用类别
 	 */
-	@ApiModelProperty(value = "租户")
+	@ApiModelProperty(value = "费用类别")
 	private String feesTypeName;
 
 

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

@@ -0,0 +1,179 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 基础资料-费用模版及明细实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@TableName("los_b_fees_template_items")
+@ApiModel(value = "FeesTemplateItems对象", description = "基础资料-费用模版及明细")
+public class FeesTemplateItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 费用模版 Id
+	 */
+	@ApiModelProperty(value = "费用模版 Id")
+	private Long pid;
+	/**
+	 * 结算单位类别
+	 */
+	@ApiModelProperty(value = "结算单位类别")
+	private String corpType;
+	/**
+	 * 客户 Id
+	 */
+	@ApiModelProperty(value = "客户 Id")
+	private Long corpId;
+	/**
+	 * 客户中文名称
+	 */
+	@ApiModelProperty(value = "客户中文名称")
+	private String corpCnName;
+	/**
+	 * 客户英文名称
+	 */
+	@ApiModelProperty(value = "客户英文名称")
+	private String corpEnName;
+	/**
+	 * 费用 Id
+	 */
+	@ApiModelProperty(value = "费用 Id")
+	private Long feeId;
+	/**
+	 * 费用中文名称
+	 */
+	@ApiModelProperty(value = "费用中文名称")
+	private String feeCode;
+	/**
+	 * 费用中文名称
+	 */
+	@ApiModelProperty(value = "费用中文名称")
+	private String feeCnName;
+	/**
+	 * 费用英文名称
+	 */
+	@ApiModelProperty(value = "费用英文名称")
+	private String feeEnName;
+	/**
+	 * 数量规则,用于根据单位自动计算数量
+	 */
+	@ApiModelProperty(value = "数量规则,用于根据单位自动计算数量")
+	private String quantityRule;
+	/**
+	 * 数量
+	 */
+	@ApiModelProperty(value = "数量")
+	private BigDecimal quantity;
+	/**
+	 * 单价
+	 */
+	@ApiModelProperty(value = "单价")
+	private BigDecimal price;
+	/**
+	 * 币种
+	 */
+	@ApiModelProperty(value = "币种")
+	private String curCode;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

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

@@ -0,0 +1,161 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@TableName("los_b_fees_template")
+@ApiModel(value = "LosBFeesTemplate对象", description = "基础资料-费用模版及明细")
+public class LosBFeesTemplate implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 业务类型 Id
+	 */
+	@ApiModelProperty(value = "业务类型 Id")
+	private Long businessTypeId;
+	/**
+	 * 业务类型中文名称
+	 */
+	@ApiModelProperty(value = "业务类型中文名称")
+	private String businessTypeCnName;
+	/**
+	 * 业务类型英文名称
+	 */
+	@ApiModelProperty(value = "业务类型英文名称")
+	private String businessTypeEnName;
+	/**
+	 * 模版编号
+	 */
+	@ApiModelProperty(value = "模版编号")
+	private String code;
+	/**
+	 * 模版中文名称
+	 */
+	@ApiModelProperty(value = "模版中文名称")
+	private String cnName;
+	/**
+	 * 模版英文名称
+	 */
+	@ApiModelProperty(value = "模版英文名称")
+	private String enName;
+	/**
+	 * 收付,D:收 C 付
+	 */
+	@ApiModelProperty(value = "收付,D:收 C 付")
+	private String dc;
+	/**
+	 * 是否公开共享
+	 */
+	@ApiModelProperty(value = "是否公开共享")
+	private String isShared;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+	/**
+	 * 费用模版及明细
+	 */
+	@TableField(exist = false)
+	private List<FeesTemplateItems> feesTemplateItemsList;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/vo/FeesTemplateItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.vo;
+
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 基础资料-费用模版及明细视图实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "FeesTemplateItemsVO对象", description = "基础资料-费用模版及明细")
+public class FeesTemplateItemsVO extends FeesTemplateItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/basic/fees/vo/LosBFeesTemplateVO.java

@@ -0,0 +1,36 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.vo;
+
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 基础资料-费用模版及明细视图实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "LosBFeesTemplateVO对象", description = "基础资料-费用模版及明细")
+public class LosBFeesTemplateVO extends LosBFeesTemplate {
+	private static final long serialVersionUID = 1L;
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.finance.agreement.dto;
+
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 物流-业务-协议价管理主表数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AgreementPriceDTO extends AgreementPrice {
+	private static final long serialVersionUID = 1L;
+
+}

+ 117 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceExcel.java

@@ -0,0 +1,117 @@
+/*
+ *      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.finance.agreement.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 物流-业务-协议价管理主表实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class AgreementPriceExcel implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+
+	/**
+	 * 单位编码
+	 */
+	@ExcelProperty(value = "单位编码")
+	private String billNo;
+	/**
+	 * 单位编码
+	 */
+	@ExcelProperty(value = "单位编码")
+	private String agreementNo;
+	/**
+	 * 客户 Id
+	 */
+	@ExcelProperty(value = "客户 Id")
+	private Long corpId;
+	/**
+	 * 客户中文名称
+	 */
+	@ExcelProperty(value = "客户中文名称")
+	private String corpCnName;
+	/**
+	 * 客户英文名称
+	 */
+	@ExcelProperty(value = "客户英文名称")
+	private String corpEnName;
+	/**
+	 * 授信等级,A=A级,B=B级,B+=B+级,B-=B-级,C=C级,D=黑名单
+	 */
+	@ExcelProperty(value = "授信等级,A=A级,B=B级,B+=B+级,B-=B-级,C=C级,D=黑名单")
+	private String creditLevel;
+	/**
+	 * 协议生效日期
+	 */
+	@ExcelProperty(value = "协议生效日期")
+	private LocalDateTime effectiveDate;
+	/**
+	 * 协议失效日期
+	 */
+	@ExcelProperty(value = "协议失效日期")
+	private LocalDateTime expiringDate;
+	/**
+	 * 人民币协议金额
+	 */
+	@ExcelProperty(value = "人民币协议金额")
+	private BigDecimal amountCny;
+	/**
+	 * 美元协议金额
+	 */
+	@ExcelProperty(value = "美元协议金额")
+	private BigDecimal amountUsd;
+	/**
+	 * 协议签订人 Id
+	 */
+	@ExcelProperty(value = "协议签订人 Id")
+	private Long signedId;
+	/**
+	 * 协议签订人姓名
+	 */
+	@ExcelProperty(value = "协议签订人姓名")
+	private String signedName;
+	/**
+	 * 账期备注
+	 */
+	@ExcelProperty(value = "账期备注")
+	private String accountPeriodRemarks;
+
+	/**
+	 * 备注
+	 */
+	@ExcelProperty(value = "备注")
+	private String remarks;
+
+
+}

+ 34 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/dto/AgreementPriceItemsDTO.java

@@ -0,0 +1,34 @@
+/*
+ *      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.finance.agreement.dto;
+
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 物流-业务-协议价管理-明细数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class AgreementPriceItemsDTO extends AgreementPriceItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 192 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/entity/AgreementPrice.java

@@ -0,0 +1,192 @@
+/*
+ *      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.finance.agreement.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理主表实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@TableName("los_bs_agreement_price")
+@ApiModel(value = "AgreementPrice对象", description = "物流-业务-协议价管理主表")
+public class AgreementPrice implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 单位编码
+	 */
+	@ApiModelProperty(value = "单位编码")
+	private String billNo;
+	/**
+	 * 单位编码
+	 */
+	@ApiModelProperty(value = "单位编码")
+	private String agreementNo;
+	/**
+	 * 客户 Id
+	 */
+	@ApiModelProperty(value = "客户 Id")
+	private Long corpId;
+	/**
+	 * 客户中文名称
+	 */
+	@ApiModelProperty(value = "客户中文名称")
+	private String corpCnName;
+	/**
+	 * 客户英文名称
+	 */
+	@ApiModelProperty(value = "客户英文名称")
+	private String corpEnName;
+	/**
+	 * 授信等级,A=A级,B=B级,B+=B+级,B-=B-级,C=C级,D=黑名单
+	 */
+	@ApiModelProperty(value = "授信等级,A=A级,B=B级,B+=B+级,B-=B-级,C=C级,D=黑名单")
+	private String creditLevel;
+	/**
+	 * 协议生效日期
+	 */
+	@ApiModelProperty(value = "协议生效日期")
+	private Date effectiveDate;
+	/**
+	 * 协议失效日期
+	 */
+	@ApiModelProperty(value = "协议失效日期")
+	private Date expiringDate;
+	/**
+	 * 人民币协议金额
+	 */
+	@ApiModelProperty(value = "人民币协议金额")
+	private BigDecimal amountCny;
+	/**
+	 * 美元协议金额
+	 */
+	@ApiModelProperty(value = "美元协议金额")
+	private BigDecimal amountUsd;
+	/**
+	 * 协议签订人 Id
+	 */
+	@ApiModelProperty(value = "协议签订人 Id")
+	private Long signedId;
+	/**
+	 * 协议签订人姓名
+	 */
+	@ApiModelProperty(value = "协议签订人姓名")
+	private String signedName;
+	/**
+	 * 账期备注
+	 */
+	@ApiModelProperty(value = "账期备注")
+	private String accountPeriodRemarks;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+	/**
+	 * 协议价管理-明细
+	 */
+	@TableField(exist = false)
+	private List<AgreementPriceItems> agreementPriceItemsList;
+
+
+}

+ 158 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/entity/AgreementPriceItems.java

@@ -0,0 +1,158 @@
+/*
+ *      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.finance.agreement.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 物流-业务-协议价管理-明细实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@TableName("los_bs_agreement_price_items")
+@ApiModel(value = "AgreementPriceItems对象", description = "物流-业务-协议价管理-明细")
+public class AgreementPriceItems implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * 主键
+	 */
+	@ApiModelProperty(value = "主键")
+	private Long id;
+	/**
+	 * 分公司 Id
+	 */
+	@ApiModelProperty(value = "分公司 Id")
+	private String branchId;
+	/**
+	 * 创建人 Id
+	 */
+	@ApiModelProperty(value = "创建人 Id")
+	private Long createUser;
+	/**
+	 * 创建人
+	 */
+	@ApiModelProperty(value = "创建人")
+	private String createUserName;
+	/**
+	 * 创建部门 Id
+	 */
+	@ApiModelProperty(value = "创建部门 Id")
+	private String createDept;
+	/**
+	 * 创建部门
+	 */
+	@ApiModelProperty(value = "创建部门")
+	private String createDeptName;
+	/**
+	 * 创建时间
+	 */
+	@ApiModelProperty(value = "创建时间")
+	private Date createTime;
+	/**
+	 * 修改人 Id
+	 */
+	@ApiModelProperty(value = "修改人 Id")
+	private Long updateUser;
+	/**
+	 * 修改人
+	 */
+	@ApiModelProperty(value = "修改人")
+	private String updateUserName;
+	/**
+	 * 修改时间
+	 */
+	@ApiModelProperty(value = "修改时间")
+	private Date updateTime;
+	/**
+	 * 协议价管理主表id
+	 */
+	@ApiModelProperty(value = "协议价管理主表id")
+	private Long pid;
+	/**
+	 * 船公司 Id
+	 */
+	@ApiModelProperty(value = "船公司 Id")
+	private Long carrierId;
+	/**
+	 * 船公司中文名称
+	 */
+	@ApiModelProperty(value = "船公司中文名称")
+	private String carrierCnName;
+	/**
+	 * 船公司英文名称
+	 */
+	@ApiModelProperty(value = "船公司英文名称")
+	private String carrierEnName;
+	/**
+	 * 账期天数
+	 */
+	@ApiModelProperty(value = "账期天数")
+	private Integer accountPeriodDays;
+	/**
+	 * 结算周期类型
+	 */
+	@ApiModelProperty(value = "结算周期类型")
+	private String settlementPeriodType;
+	/**
+	 * 结算周期名称
+	 */
+	@ApiModelProperty(value = "结算周期名称")
+	private String settlementPeriodName;
+	/**
+	 * 结算周期描述
+	 */
+	@ApiModelProperty(value = "结算周期描述")
+	private String settlementPeriodDescr;
+	/**
+	 * 是否已删除(0 否 1是)
+	 */
+	@ApiModelProperty(value = "是否已删除(0 否 1是)")
+	private Integer isDeleted;
+	/**
+	 * 版本
+	 */
+	@ApiModelProperty(value = "版本")
+	private String version;
+	/**
+	 * 状态(0 正常 1停用)
+	 */
+	@ApiModelProperty(value = "状态(0 正常 1停用)")
+	private Integer status;
+	/**
+	 * 备注
+	 */
+	@ApiModelProperty(value = "备注")
+	private String remarks;
+
+	/**
+	 * 租户
+	 */
+	@ApiModelProperty(value = "租户")
+	private String tenantId;
+
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/vo/AgreementPriceItemsVO.java

@@ -0,0 +1,36 @@
+/*
+ *      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.finance.agreement.vo;
+
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 物流-业务-协议价管理-明细视图实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AgreementPriceItemsVO对象", description = "物流-业务-协议价管理-明细")
+public class AgreementPriceItemsVO extends AgreementPriceItems {
+	private static final long serialVersionUID = 1L;
+
+}

+ 36 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/agreement/vo/AgreementPriceVO.java

@@ -0,0 +1,36 @@
+/*
+ *      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.finance.agreement.vo;
+
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 物流-业务-协议价管理主表视图实体类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AgreementPriceVO对象", description = "物流-业务-协议价管理主表")
+public class AgreementPriceVO extends AgreementPrice {
+	private static final long serialVersionUID = 1L;
+
+}

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

@@ -83,8 +83,8 @@ public class BAccItemsTypeServiceImpl extends ServiceImpl<AccItemsTypeMapper, BA
 			bAccItemsType.setUpdateUserName(AuthUtil.getUserName());
 		}
 		this.saveOrUpdate(bAccItemsType);
-		if (ObjectUtils.isNotNull(bAccItemsType.getBAccItemsList())) {
-			for (BAccItems item : bAccItemsType.getBAccItemsList()) {
+		if (ObjectUtils.isNotNull(bAccItemsType.getAccItemsList())) {
+			for (BAccItems item : bAccItemsType.getAccItemsList()) {
 				item.setPid(bAccItemsType.getId());
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
@@ -99,7 +99,7 @@ public class BAccItemsTypeServiceImpl extends ServiceImpl<AccItemsTypeMapper, BA
 					item.setUpdateUserName(AuthUtil.getUserName());
 				}
 			}
-			bAccItemsService.saveOrUpdateBatch(bAccItemsType.getBAccItemsList());
+			bAccItemsService.saveOrUpdateBatch(bAccItemsType.getAccItemsList());
 		}
 		return R.data(bAccItemsType);
 	}
@@ -110,7 +110,7 @@ public class BAccItemsTypeServiceImpl extends ServiceImpl<AccItemsTypeMapper, BA
 			throw new RuntimeException("缺少必要参数");
 		}
 		BAccItemsType detail = baseMapper.selectById(bAccItemsType.getId());
-		detail.setBAccItemsList(bAccItemsService.list(new LambdaQueryWrapper<BAccItems>()
+		detail.setAccItemsList(bAccItemsService.list(new LambdaQueryWrapper<BAccItems>()
 			.eq(BAccItems::getIsDeleted, 0)
 			.eq(BAccItems::getTenantId, AuthUtil.getTenantId())
 			.eq(BAccItems::getPid, bAccItemsType.getId())

+ 126 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/controller/CorpsInvoiceHeaderController.java

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import org.springblade.los.basic.corps.vo.CorpsInvoiceHeaderVO;
+import org.springblade.los.basic.corps.service.ICorpsInvoiceHeaderService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 客户发票 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/corpsinvoiceheader")
+@Api(value = "客户发票", tags = "客户发票接口")
+public class CorpsInvoiceHeaderController extends BladeController {
+
+	private final ICorpsInvoiceHeaderService corpsInvoiceHeaderService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入corpsInvoiceHeader")
+	public R<CorpsInvoiceHeader> detail(CorpsInvoiceHeader corpsInvoiceHeader) {
+		CorpsInvoiceHeader detail = corpsInvoiceHeaderService.getOne(Condition.getQueryWrapper(corpsInvoiceHeader));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 客户发票
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入corpsInvoiceHeader")
+	public R<IPage<CorpsInvoiceHeader>> list(CorpsInvoiceHeader corpsInvoiceHeader, Query query) {
+		IPage<CorpsInvoiceHeader> pages = corpsInvoiceHeaderService.page(Condition.getPage(query), Condition.getQueryWrapper(corpsInvoiceHeader));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 客户发票
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入corpsInvoiceHeader")
+	public R<IPage<CorpsInvoiceHeaderVO>> page(CorpsInvoiceHeaderVO corpsInvoiceHeader, Query query) {
+		IPage<CorpsInvoiceHeaderVO> pages = corpsInvoiceHeaderService.selectCorpsInvoiceHeaderPage(Condition.getPage(query), corpsInvoiceHeader);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 客户发票
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入corpsInvoiceHeader")
+	public R save(@Valid @RequestBody CorpsInvoiceHeader corpsInvoiceHeader) {
+		return R.status(corpsInvoiceHeaderService.save(corpsInvoiceHeader));
+	}
+
+	/**
+	 * 修改 客户发票
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入corpsInvoiceHeader")
+	public R update(@Valid @RequestBody CorpsInvoiceHeader corpsInvoiceHeader) {
+		return R.status(corpsInvoiceHeaderService.updateById(corpsInvoiceHeader));
+	}
+
+	/**
+	 * 新增或修改 客户发票
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsInvoiceHeader")
+	public R submit(@Valid @RequestBody CorpsInvoiceHeader corpsInvoiceHeader) {
+		return R.status(corpsInvoiceHeaderService.saveOrUpdate(corpsInvoiceHeader));
+	}
+
+	
+	/**
+	 * 删除 客户发票
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(corpsInvoiceHeaderService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsInvoiceHeaderMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.mapper;
+
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import org.springblade.los.basic.corps.vo.CorpsInvoiceHeaderVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 客户发票 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface CorpsInvoiceHeaderMapper extends BaseMapper<CorpsInvoiceHeader> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param corpsInvoiceHeader
+	 * @return
+	 */
+	List<CorpsInvoiceHeaderVO> selectCorpsInvoiceHeaderPage(IPage page, CorpsInvoiceHeaderVO corpsInvoiceHeader);
+
+}

+ 32 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsInvoiceHeaderMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.basic.corps.mapper.CorpsInvoiceHeaderMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="corpsInvoiceHeaderResultMap" type="org.springblade.los.basic.corps.entity.CorpsInvoiceHeader">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="pid" property="pid"/>
+        <result column="guarantee_no" property="guaranteeNo"/>
+        <result column="guarantee_date" property="guaranteeDate"/>
+        <result column="invoice-header" property="invoice-header"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectCorpsInvoiceHeaderPage" resultMap="corpsInvoiceHeaderResultMap">
+        select * from los_b_corps_invoice_header where is_deleted = 0
+    </select>
+
+</mapper>

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/mapper/CorpsMapper.xml

@@ -85,6 +85,10 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="remarks" property="remarks"/>
         <result column="tenant_id" property="tenantId"/>
+        <result column="enterprise_type" property="enterpriseType"/>
+        <result column="advantage_route" property="advantageRoute"/>
+        <result column="maintenance_staff_id" property="maintenanceStaffId"/>
+        <result column="maintenance_staff_name" property="maintenanceStaffName"/>
     </resultMap>
 
 

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/ICorpsInvoiceHeaderService.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.service;
+
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import org.springblade.los.basic.corps.vo.CorpsInvoiceHeaderVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 客户发票 服务类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface ICorpsInvoiceHeaderService extends IService<CorpsInvoiceHeader> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param corpsInvoiceHeader
+	 * @return
+	 */
+	IPage<CorpsInvoiceHeaderVO> selectCorpsInvoiceHeaderPage(IPage<CorpsInvoiceHeaderVO> page, CorpsInvoiceHeaderVO corpsInvoiceHeader);
+
+}

+ 26 - 6
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/BCorpsServiceImpl.java

@@ -65,6 +65,8 @@ public class BCorpsServiceImpl extends ServiceImpl<CorpsMapper, BCorps> implemen
 
 	private final IUserClient userClient;
 
+	private final ICorpsInvoiceHeaderService corpsInvoiceHeaderService;
+
 	static final int GB_SP_DIFF = 160;
 	// 存放国标一级汉字不同读音的起始区位码
 	static final int[] secPosValueList = {1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635,
@@ -226,6 +228,25 @@ public class BCorpsServiceImpl extends ServiceImpl<CorpsMapper, BCorps> implemen
 			}
 			bCorpsFilesService.saveOrUpdateBatch(bCorps.getCorpsFilesList());
 		}
+		//客户发表抬头
+		if (ObjectUtils.isNotNull(bCorps.getCorpsInvoiceHeaderList())) {
+			for (CorpsInvoiceHeader item : bCorps.getCorpsInvoiceHeaderList()) {
+				if (item.getId() == null) {
+					item.setPid(bCorps.getId());
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(deptId);
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			corpsInvoiceHeaderService.saveOrUpdateBatch(bCorps.getCorpsInvoiceHeaderList());
+		}
 		return R.data(bCorps);
 	}
 
@@ -260,6 +281,11 @@ public class BCorpsServiceImpl extends ServiceImpl<CorpsMapper, BCorps> implemen
 			.eq(BCorpsFiles::getTenantId, AuthUtil.getTenantId())
 			.eq(BCorpsFiles::getPid, bCorps.getId())
 		));
+		detail.setCorpsInvoiceHeaderList(corpsInvoiceHeaderService.list(new LambdaQueryWrapper<CorpsInvoiceHeader>()
+			.eq(CorpsInvoiceHeader::getIsDeleted, 0)
+			.eq(CorpsInvoiceHeader::getTenantId, AuthUtil.getTenantId())
+			.eq(CorpsInvoiceHeader::getPid, bCorps.getId())
+		));
 		return detail;
 	}
 
@@ -282,12 +308,6 @@ public class BCorpsServiceImpl extends ServiceImpl<CorpsMapper, BCorps> implemen
 			if (ObjectUtils.isNotNull(bCorps.getAdminProfiles())) {
 				bCorps.setAdminProfiles(userClient.selectUserByNames(bCorps.getAdminProfiles()));
 			}
-			if (ObjectUtils.isNotNull(bCorps.getCorpName())) {
-				bCorps.setCorpId(baseMapper.selectOne(new LambdaQueryWrapper<BCorps>()
-					.eq(BCorps::getIsDeleted, 0)
-					.eq(BCorps::getTenantId, AuthUtil.getTenantId())
-					.eq(BCorps::getCnName, bCorps.getCorpName())).getId());
-			}
 			if (ObjectUtils.isNotNull(bCorps.getSalesName())) {
 				List<User> userList = userClient.userInfoByName(bCorps.getSalesName(), AuthUtil.getTenantId());
 				if (ObjectUtils.isNotNull(userList) && userList.size() > 0) {

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/corps/service/impl/CorpsInvoiceHeaderServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.corps.service.impl;
+
+import org.springblade.los.basic.corps.entity.CorpsInvoiceHeader;
+import org.springblade.los.basic.corps.vo.CorpsInvoiceHeaderVO;
+import org.springblade.los.basic.corps.mapper.CorpsInvoiceHeaderMapper;
+import org.springblade.los.basic.corps.service.ICorpsInvoiceHeaderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 客户发票 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Service
+public class CorpsInvoiceHeaderServiceImpl extends ServiceImpl<CorpsInvoiceHeaderMapper, CorpsInvoiceHeader> implements ICorpsInvoiceHeaderService {
+
+	@Override
+	public IPage<CorpsInvoiceHeaderVO> selectCorpsInvoiceHeaderPage(IPage<CorpsInvoiceHeaderVO> page, CorpsInvoiceHeaderVO corpsInvoiceHeader) {
+		return page.setRecords(baseMapper.selectCorpsInvoiceHeaderPage(page, corpsInvoiceHeader));
+	}
+
+}

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/mapper/CurExrateMapper.xml

@@ -29,6 +29,9 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="remarks" property="remarks"/>
         <result column="tenant_id" property="tenantId"/>
+        <result column="exrate_year" property="exrateYear"/>
+        <result column="exrate_month" property="exrateMonth"/>
+        <result column="exrate_day" property="exrateDay"/>
     </resultMap>
 
 

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/mapper/CurrencyMapper.xml

@@ -27,6 +27,9 @@
         <result column="is_deleted" property="isDeleted"/>
         <result column="remarks" property="remarks"/>
         <result column="tenant_id" property="tenantId"/>
+        <result column="parities_type" property="paritiesType"/>
+        <result column="annual" property="annual"/>
+        <result column="moon" property="moon"/>
     </resultMap>
 
 

+ 5 - 5
blade-service/blade-los/src/main/java/org/springblade/los/basic/cur/service/impl/BCurrencyServiceImpl.java

@@ -82,8 +82,8 @@ public class BCurrencyServiceImpl extends ServiceImpl<CurrencyMapper, BCurrency>
 			bCurrency.setUpdateUserName(AuthUtil.getUserName());
 		}
 		this.saveOrUpdate(bCurrency);
-		if (ObjectUtils.isNotNull(bCurrency.getBCurExrateList())) {
-			for (BCurExrate item : bCurrency.getBCurExrateList()) {
+		if (ObjectUtils.isNotNull(bCurrency.getCurExrateList())) {
+			for (BCurExrate item : bCurrency.getCurExrateList()) {
 				item.setCode(bCurrency.getCode());
 				if (item.getId() == null) {
 					item.setCreateTime(new Date());
@@ -98,7 +98,7 @@ public class BCurrencyServiceImpl extends ServiceImpl<CurrencyMapper, BCurrency>
 					item.setUpdateUserName(AuthUtil.getUserName());
 				}
 			}
-			bCurExrateService.saveOrUpdateBatch(bCurrency.getBCurExrateList());
+			bCurExrateService.saveOrUpdateBatch(bCurrency.getCurExrateList());
 		}
 		return R.data(bCurrency);
 	}
@@ -109,10 +109,10 @@ public class BCurrencyServiceImpl extends ServiceImpl<CurrencyMapper, BCurrency>
 			throw new RuntimeException("缺少必要参数");
 		}
 		BCurrency detail = baseMapper.selectById(bCurrency.getId());
-		detail.setBCurExrateList(bCurExrateService.list(new LambdaQueryWrapper<BCurExrate>()
+		detail.setCurExrateList(bCurExrateService.list(new LambdaQueryWrapper<BCurExrate>()
 			.eq(BCurExrate::getIsDeleted, 0)
 			.eq(BCurExrate::getTenantId, AuthUtil.getTenantId())
-			.eq(BCurExrate::getCode, bCurrency.getCode())
+			.eq(BCurExrate::getCode, detail.getCode())
 		));
 		return detail;
 	}

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

@@ -0,0 +1,126 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
+import org.springblade.los.basic.fees.service.IFeesTemplateItemsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 基础资料-费用模版及明细 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/feestemplateitems")
+@Api(value = "基础资料-费用模版及明细", tags = "基础资料-费用模版及明细接口")
+public class FeesTemplateItemsController extends BladeController {
+
+	private final IFeesTemplateItemsService feesTemplateItemsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入feesTemplateItems")
+	public R<FeesTemplateItems> detail(FeesTemplateItems feesTemplateItems) {
+		FeesTemplateItems detail = feesTemplateItemsService.getOne(Condition.getQueryWrapper(feesTemplateItems));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 基础资料-费用模版及明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入feesTemplateItems")
+	public R<IPage<FeesTemplateItems>> list(FeesTemplateItems feesTemplateItems, Query query) {
+		IPage<FeesTemplateItems> pages = feesTemplateItemsService.page(Condition.getPage(query), Condition.getQueryWrapper(feesTemplateItems));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 基础资料-费用模版及明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入feesTemplateItems")
+	public R<IPage<FeesTemplateItemsVO>> page(FeesTemplateItemsVO feesTemplateItems, Query query) {
+		IPage<FeesTemplateItemsVO> pages = feesTemplateItemsService.selectFeesTemplateItemsPage(Condition.getPage(query), feesTemplateItems);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 基础资料-费用模版及明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入feesTemplateItems")
+	public R save(@Valid @RequestBody FeesTemplateItems feesTemplateItems) {
+		return R.status(feesTemplateItemsService.save(feesTemplateItems));
+	}
+
+	/**
+	 * 修改 基础资料-费用模版及明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入feesTemplateItems")
+	public R update(@Valid @RequestBody FeesTemplateItems feesTemplateItems) {
+		return R.status(feesTemplateItemsService.updateById(feesTemplateItems));
+	}
+
+	/**
+	 * 新增或修改 基础资料-费用模版及明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入feesTemplateItems")
+	public R submit(@Valid @RequestBody FeesTemplateItems feesTemplateItems) {
+		return R.status(feesTemplateItemsService.saveOrUpdate(feesTemplateItems));
+	}
+
+
+	/**
+	 * 删除 基础资料-费用模版及明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(feesTemplateItemsService.removeByIds(Func.toLongList(ids)));
+	}
+
+
+}

+ 184 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/controller/LosBFeesTemplateController.java

@@ -0,0 +1,184 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+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.basic.fees.dto.LosBFeesTemplateExcel;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.basic.fees.vo.LosBFeesTemplateVO;
+import org.springblade.los.basic.fees.service.ILosBFeesTemplateService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/losbfeestemplate")
+@Api(value = "基础资料-费用模版及明细", tags = "基础资料-费用模版及明细接口")
+public class LosBFeesTemplateController extends BladeController {
+
+	private final ILosBFeesTemplateService losBFeesTemplateService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入losBFeesTemplate")
+	public R<LosBFeesTemplate> detail(LosBFeesTemplate losBFeesTemplate) {
+		LosBFeesTemplate detail = losBFeesTemplateService.detail(losBFeesTemplate);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 基础资料-费用模版及明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入losBFeesTemplate")
+	public R<IPage<LosBFeesTemplate>> list(LosBFeesTemplate losBFeesTemplate, Query query) {
+		IPage<LosBFeesTemplate> pages = losBFeesTemplateService.page(Condition.getPage(query), Condition.getQueryWrapper(losBFeesTemplate));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 基础资料-费用模版及明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入losBFeesTemplate")
+	public R<IPage<LosBFeesTemplateVO>> page(LosBFeesTemplateVO losBFeesTemplate, Query query) {
+		IPage<LosBFeesTemplateVO> pages = losBFeesTemplateService.selectLosBFeesTemplatePage(Condition.getPage(query), losBFeesTemplate);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 基础资料-费用模版及明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入losBFeesTemplate")
+	public R save(@Valid @RequestBody LosBFeesTemplate losBFeesTemplate) {
+		return R.status(losBFeesTemplateService.save(losBFeesTemplate));
+	}
+
+	/**
+	 * 修改 基础资料-费用模版及明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入losBFeesTemplate")
+	public R update(@Valid @RequestBody LosBFeesTemplate losBFeesTemplate) {
+		return R.status(losBFeesTemplateService.updateById(losBFeesTemplate));
+	}
+
+	/**
+	 * 新增或修改 基础资料-费用模版及明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入losBFeesTemplate")
+	public R submit(@Valid @RequestBody LosBFeesTemplate losBFeesTemplate) {
+		return losBFeesTemplateService.submit(losBFeesTemplate);
+	}
+
+
+	/**
+	 * 删除 基础资料-费用模版及明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(losBFeesTemplateService.removeByIds(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 导出 基础资料-费用模版
+	 */
+	@GetMapping("/exportLosBFeesTemplate")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "导出 基础资料-费用", notes = "传入LosBFeesTemplate")
+	public void exportLosBFeesTemplate(LosBFeesTemplate losBFeesTemplate, HttpServletResponse response) {
+		LambdaQueryWrapper<LosBFeesTemplate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(LosBFeesTemplate::getTenantId, AuthUtil.getTenantId())
+			.eq(LosBFeesTemplate::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(losBFeesTemplate.getCode()), LosBFeesTemplate::getCode, losBFeesTemplate.getCode())
+			.like(ObjectUtils.isNotNull(losBFeesTemplate.getCnName()), LosBFeesTemplate::getCnName, losBFeesTemplate.getCnName())
+			.like(ObjectUtils.isNotNull(losBFeesTemplate.getEnName()), LosBFeesTemplate::getEnName, losBFeesTemplate.getEnName())
+			.orderByDesc(LosBFeesTemplate::getCreateTime);
+		List<LosBFeesTemplate> losBFeesTemplateList = losBFeesTemplateService.list(lambdaQueryWrapper);
+		ExcelUtil.export(response, "费用模版", "费用模版", BeanUtil.copy(losBFeesTemplateList, LosBFeesTemplateExcel.class), LosBFeesTemplateExcel.class);
+
+	}
+
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("/exportLosBFeesTemplate/template")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportLosBFeesTemplateTemplate(HttpServletResponse response) {
+		List<LosBFeesTemplateExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-费用模版", "费用模版", list, LosBFeesTemplateExcel.class);
+	}
+
+	/**
+	 * 导入 基础资料-费用模版
+	 */
+	@PostMapping("/importLosBFeesTemplate")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "导入 基础资料-费用模版", notes = "传入excel")
+	public R<List<LosBFeesTemplate>> importLosBFeesTemplate(@RequestParam("file") MultipartFile file) {
+		//导入数据
+		List<LosBFeesTemplateExcel> excelList = ExcelUtil.read(file, LosBFeesTemplateExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return losBFeesTemplateService.importLosBFeesTemplate(excelList);
+	}
+
+
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/FeesTemplateItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.mapper;
+
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface FeesTemplateItemsMapper extends BaseMapper<FeesTemplateItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param feesTemplateItems
+	 * @return
+	 */
+	List<FeesTemplateItemsVO> selectFeesTemplateItemsPage(IPage page, FeesTemplateItemsVO feesTemplateItems);
+
+}

+ 40 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/FeesTemplateItemsMapper.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.basic.fees.mapper.FeesTemplateItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="feesTemplateItemsResultMap" type="org.springblade.los.basic.fees.entity.FeesTemplateItems">
+        <id column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="pid" property="pid"/>
+        <result column="corp_type" property="corpType"/>
+        <result column="corp_id" property="corpId"/>
+        <result column="corp_cn_name" property="corpCnName"/>
+        <result column="corp_en_name" property="corpEnName"/>
+        <result column="fee_id" property="feeId"/>
+        <result column="fee_code" property="feeCode"/>
+        <result column="fee_cn_name" property="feeCnName"/>
+        <result column="fee_en_name" property="feeEnName"/>
+        <result column="quantity_rule" property="quantityRule"/>
+        <result column="quantity" property="quantity"/>
+        <result column="price" property="price"/>
+        <result column="cur_code" property="curCode"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectFeesTemplateItemsPage" resultMap="feesTemplateItemsResultMap">
+        select * from los_b_fees_template_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/LosBFeesTemplateMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.mapper;
+
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.basic.fees.vo.LosBFeesTemplateVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface LosBFeesTemplateMapper extends BaseMapper<LosBFeesTemplate> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param losBFeesTemplate
+	 * @return
+	 */
+	List<LosBFeesTemplateVO> selectLosBFeesTemplatePage(IPage page, LosBFeesTemplateVO losBFeesTemplate);
+
+}

+ 35 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/mapper/LosBFeesTemplateMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.basic.fees.mapper.LosBFeesTemplateMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="losBFeesTemplateResultMap" type="org.springblade.los.basic.fees.entity.LosBFeesTemplate">
+        <id column="id" property="id"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="business_type_id" property="businessTypeId"/>
+        <result column="business_type_cn_name" property="businessTypeCnName"/>
+        <result column="business_type_en_name" property="businessTypeEnName"/>
+        <result column="code" property="code"/>
+        <result column="cn_name" property="cnName"/>
+        <result column="en_name" property="enName"/>
+        <result column="dc" property="dc"/>
+        <result column="is_shared" property="isShared"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectLosBFeesTemplatePage" resultMap="losBFeesTemplateResultMap">
+        select * from los_b_fees_template where is_deleted = 0
+    </select>
+
+</mapper>

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

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.service;
+
+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;
+
+/**
+ * 基础资料-费用模版及明细 服务类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface IFeesTemplateItemsService extends IService<FeesTemplateItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param feesTemplateItems
+	 * @return
+	 */
+	IPage<FeesTemplateItemsVO> selectFeesTemplateItemsPage(IPage<FeesTemplateItemsVO> page, FeesTemplateItemsVO feesTemplateItems);
+
+}

+ 65 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/ILosBFeesTemplateService.java

@@ -0,0 +1,65 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.los.basic.fees.dto.LosBFeesTemplateExcel;
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.basic.fees.vo.LosBFeesTemplateVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细 服务类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface ILosBFeesTemplateService extends IService<LosBFeesTemplate> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param losBFeesTemplate
+	 * @return
+	 */
+	IPage<LosBFeesTemplateVO> selectLosBFeesTemplatePage(IPage<LosBFeesTemplateVO> page, LosBFeesTemplateVO losBFeesTemplate);
+
+	/**
+	 *
+	 * @param excelList
+	 * @return
+	 */
+	R<List<LosBFeesTemplate>> importLosBFeesTemplate(List<LosBFeesTemplateExcel> excelList);
+
+	/**
+	 * 新增或修改 基础资料-费用模版及明细
+	 * @param losBFeesTemplate
+	 * @return
+	 */
+	R submit(LosBFeesTemplate losBFeesTemplate);
+
+	/**
+	 * 详情
+	 * @param losBFeesTemplate
+	 * @return
+	 */
+	LosBFeesTemplate detail(LosBFeesTemplate losBFeesTemplate);
+}

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

@@ -0,0 +1,41 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.service.impl;
+
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import org.springblade.los.basic.fees.vo.FeesTemplateItemsVO;
+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.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 基础资料-费用模版及明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Service
+public class FeesTemplateItemsServiceImpl extends ServiceImpl<FeesTemplateItemsMapper, FeesTemplateItems> implements IFeesTemplateItemsService {
+
+	@Override
+	public IPage<FeesTemplateItemsVO> selectFeesTemplateItemsPage(IPage<FeesTemplateItemsVO> page, FeesTemplateItemsVO feesTemplateItems) {
+		return page.setRecords(baseMapper.selectFeesTemplateItemsPage(page, feesTemplateItems));
+	}
+
+}

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

@@ -0,0 +1,145 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.los.basic.fees.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.core.tool.utils.BeanUtil;
+import org.springblade.los.basic.cur.entity.BCurExrate;
+import org.springblade.los.basic.fees.dto.LosBFeesTemplateExcel;
+import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.basic.fees.mapper.LosBFeesTemplateMapper;
+import org.springblade.los.basic.fees.service.IFeesTemplateItemsService;
+import org.springblade.los.basic.fees.service.ILosBFeesTemplateService;
+import org.springblade.los.basic.fees.vo.LosBFeesTemplateVO;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 基础资料-费用模版及明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Service
+@AllArgsConstructor
+public class LosBFeesTemplateServiceImpl extends ServiceImpl<LosBFeesTemplateMapper, LosBFeesTemplate> implements ILosBFeesTemplateService {
+
+
+	private final ISysClient sysClient;
+
+	private final IFeesTemplateItemsService feesTemplateItemsService;
+
+	@Override
+	public IPage<LosBFeesTemplateVO> selectLosBFeesTemplatePage(IPage<LosBFeesTemplateVO> page, LosBFeesTemplateVO losBFeesTemplate) {
+		return page.setRecords(baseMapper.selectLosBFeesTemplatePage(page, losBFeesTemplate));
+	}
+
+	@Override
+	public R<List<LosBFeesTemplate>> importLosBFeesTemplate(List<LosBFeesTemplateExcel> excelList) {
+		List<LosBFeesTemplate> losBFeesTemplateList = new ArrayList<>();
+		for (LosBFeesTemplateExcel item : excelList) {
+			LosBFeesTemplate losBFeesTemplate = new LosBFeesTemplate();
+			BeanUtil.copy(item, losBFeesTemplate);
+			losBFeesTemplate.setCreateTime(new Date());
+			losBFeesTemplate.setCreateUser(AuthUtil.getUserId());
+			losBFeesTemplate.setCreateUserName(AuthUtil.getUserName());
+			//获取部门ids对应中文名
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				losBFeesTemplate.setCreateDept(AuthUtil.getDeptId());
+				R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					losBFeesTemplate.setCreateDeptName(String.join(",", res.getData()));
+				}
+			}
+			losBFeesTemplateList.add(losBFeesTemplate);
+		}
+		this.saveOrUpdateBatch(losBFeesTemplateList);
+		return R.data(losBFeesTemplateList);
+	}
+
+	@Override
+	public R submit(LosBFeesTemplate losBFeesTemplate) {
+		String deptId = "";
+		String deptName = "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		if (losBFeesTemplate.getId() == null) {
+			losBFeesTemplate.setCreateTime(new Date());
+			losBFeesTemplate.setCreateUser(AuthUtil.getUserId());
+			losBFeesTemplate.setCreateUserName(AuthUtil.getUserName());
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				losBFeesTemplate.setCreateDept(deptId);
+				losBFeesTemplate.setCreateDeptName(deptName);
+			}
+		} else {
+			losBFeesTemplate.setUpdateUser(AuthUtil.getUserId());
+			losBFeesTemplate.setUpdateUserName(AuthUtil.getUserName());
+		}
+		this.saveOrUpdate(losBFeesTemplate);
+		if (ObjectUtils.isNotNull(losBFeesTemplate.getFeesTemplateItemsList())) {
+			for (FeesTemplateItems item : losBFeesTemplate.getFeesTemplateItemsList()) {
+				item.setPid(losBFeesTemplate.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(deptId);
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			feesTemplateItemsService.saveOrUpdateBatch(losBFeesTemplate.getFeesTemplateItemsList());
+		}
+		return R.data(losBFeesTemplate);
+	}
+
+	@Override
+	public LosBFeesTemplate detail(LosBFeesTemplate losBFeesTemplate) {
+		if (losBFeesTemplate.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		LosBFeesTemplate detail = baseMapper.selectById(losBFeesTemplate.getId());
+		detail.setFeesTemplateItemsList(feesTemplateItemsService.list(new LambdaQueryWrapper<FeesTemplateItems>()
+			.eq(FeesTemplateItems::getIsDeleted, 0)
+			.eq(FeesTemplateItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FeesTemplateItems::getPid, detail.getId())
+		));
+		return detail;
+	}
+
+}

+ 199 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceController.java

@@ -0,0 +1,199 @@
+/*
+ *      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.finance.agreement.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+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.finance.agreement.dto.AgreementPriceExcel;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import org.springblade.los.finance.agreement.vo.AgreementPriceVO;
+import org.springblade.los.finance.agreement.service.IAgreementPriceService;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理主表 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/agreementprice")
+@Api(value = "物流-业务-协议价管理主表", tags = "物流-业务-协议价管理主表接口")
+public class AgreementPriceController extends BladeController {
+
+	private final IAgreementPriceService agreementPriceService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入agreementPrice")
+	public R<AgreementPrice> detail(AgreementPrice agreementPrice) {
+		AgreementPrice detail = agreementPriceService.detail(agreementPrice);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 物流-业务-协议价管理主表
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入agreementPrice")
+	public R<IPage<AgreementPrice>> list(AgreementPrice agreementPrice, Query query) {
+		LambdaQueryWrapper<AgreementPrice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(AgreementPrice::getTenantId, AuthUtil.getTenantId())
+			.eq(AgreementPrice::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(agreementPrice.getBillNo()), AgreementPrice::getBillNo, agreementPrice.getBillNo())
+			.like(ObjectUtils.isNotNull(agreementPrice.getAgreementNo()), AgreementPrice::getAgreementNo, agreementPrice.getAgreementNo())
+			.eq(ObjectUtils.isNotNull(agreementPrice.getCorpId()), AgreementPrice::getCorpId, agreementPrice.getCorpId())
+			.eq(ObjectUtils.isNotNull(agreementPrice.getCreditLevel()), AgreementPrice::getCreditLevel, agreementPrice.getCreditLevel())
+			.like(ObjectUtils.isNotNull(agreementPrice.getSignedId()), AgreementPrice::getSignedId, agreementPrice.getSignedId())
+			.lt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.gt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.orderByDesc(AgreementPrice::getCreateTime);
+		IPage<AgreementPrice> pages = agreementPriceService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 物流-业务-协议价管理主表
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入agreementPrice")
+	public R<IPage<AgreementPriceVO>> page(AgreementPriceVO agreementPrice, Query query) {
+		IPage<AgreementPriceVO> pages = agreementPriceService.selectAgreementPricePage(Condition.getPage(query), agreementPrice);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 物流-业务-协议价管理主表
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入agreementPrice")
+	public R save(@Valid @RequestBody AgreementPrice agreementPrice) {
+		return R.status(agreementPriceService.save(agreementPrice));
+	}
+
+	/**
+	 * 修改 物流-业务-协议价管理主表
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入agreementPrice")
+	public R update(@Valid @RequestBody AgreementPrice agreementPrice) {
+		return R.status(agreementPriceService.updateById(agreementPrice));
+	}
+
+	/**
+	 * 新增或修改 物流-业务-协议价管理主表
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入agreementPrice")
+	public R submit(@Valid @RequestBody AgreementPrice agreementPrice) {
+		return agreementPriceService.submit(agreementPrice);
+	}
+
+
+	/**
+	 * 删除 物流-业务-协议价管理主表
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(agreementPriceService.removeByIds(Func.toLongList(ids)));
+	}
+
+	/**
+	 * 导出 基础资料-币种
+	 */
+	@GetMapping("/exportAgreementPrice")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "导出 物流-业务-协议价管理主表", notes = "传入AgreementPrice")
+	public void exportAgreementPrice(AgreementPrice agreementPrice, HttpServletResponse response) {
+		LambdaQueryWrapper<AgreementPrice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(AgreementPrice::getTenantId, AuthUtil.getTenantId())
+			.eq(AgreementPrice::getIsDeleted, 0)
+			.like(ObjectUtils.isNotNull(agreementPrice.getBillNo()), AgreementPrice::getBillNo, agreementPrice.getBillNo())
+			.like(ObjectUtils.isNotNull(agreementPrice.getAgreementNo()), AgreementPrice::getAgreementNo, agreementPrice.getAgreementNo())
+			.eq(ObjectUtils.isNotNull(agreementPrice.getCorpId()), AgreementPrice::getCorpId, agreementPrice.getCorpId())
+			.eq(ObjectUtils.isNotNull(agreementPrice.getCreditLevel()), AgreementPrice::getCreditLevel, agreementPrice.getCreditLevel())
+			.like(ObjectUtils.isNotNull(agreementPrice.getSignedId()), AgreementPrice::getSignedId, agreementPrice.getSignedId())
+			.lt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.gt(ObjectUtils.isNotNull(agreementPrice.getEffectiveDate()), AgreementPrice::getEffectiveDate, agreementPrice.getEffectiveDate())
+			.orderByDesc(AgreementPrice::getCreateTime);
+		List<AgreementPrice> agreementPriceList = agreementPriceService.list(lambdaQueryWrapper);
+		ExcelUtil.export(response, "协议价管理", "协议价", BeanUtil.copy(agreementPriceList, AgreementPriceExcel.class), AgreementPriceExcel.class);
+
+	}
+
+	/**
+	 * 导出模板
+	 */
+	@GetMapping("/exportAgreementPrice/template")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportAgreementPriceTemplate(HttpServletResponse response) {
+		List<AgreementPriceExcel> list = new ArrayList<>();
+		ExcelUtil.export(response, "导入模板-物流-业务-协议价管理", "协议价", list, AgreementPriceExcel.class);
+	}
+
+	/**
+	 * 导入 物流-业务-协议价管理主表
+	 */
+	@PostMapping("/importAgreementPrice")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "导入 物流-业务-协议价管理主表", notes = "传入excel")
+	public R<List<AgreementPrice>> importAgreementPrice(@RequestParam("file") MultipartFile file) {
+		//导入数据
+		List<AgreementPriceExcel> excelList = ExcelUtil.read(file, AgreementPriceExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return agreementPriceService.importAgreementPrice(excelList);
+	}
+
+
+}

+ 126 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/controller/AgreementPriceItemsController.java

@@ -0,0 +1,126 @@
+/*
+ *      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.finance.agreement.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import org.springblade.los.finance.agreement.vo.AgreementPriceItemsVO;
+import org.springblade.los.finance.agreement.service.IAgreementPriceItemsService;
+import org.springblade.core.boot.ctrl.BladeController;
+
+/**
+ * 物流-业务-协议价管理-明细 控制器
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/agreementpriceitems")
+@Api(value = "物流-业务-协议价管理-明细", tags = "物流-业务-协议价管理-明细接口")
+public class AgreementPriceItemsController extends BladeController {
+
+	private final IAgreementPriceItemsService agreementPriceItemsService;
+
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入agreementPriceItems")
+	public R<AgreementPriceItems> detail(AgreementPriceItems agreementPriceItems) {
+		AgreementPriceItems detail = agreementPriceItemsService.getOne(Condition.getQueryWrapper(agreementPriceItems));
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页 物流-业务-协议价管理-明细
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入agreementPriceItems")
+	public R<IPage<AgreementPriceItems>> list(AgreementPriceItems agreementPriceItems, Query query) {
+		IPage<AgreementPriceItems> pages = agreementPriceItemsService.page(Condition.getPage(query), Condition.getQueryWrapper(agreementPriceItems));
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页 物流-业务-协议价管理-明细
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入agreementPriceItems")
+	public R<IPage<AgreementPriceItemsVO>> page(AgreementPriceItemsVO agreementPriceItems, Query query) {
+		IPage<AgreementPriceItemsVO> pages = agreementPriceItemsService.selectAgreementPriceItemsPage(Condition.getPage(query), agreementPriceItems);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增 物流-业务-协议价管理-明细
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入agreementPriceItems")
+	public R save(@Valid @RequestBody AgreementPriceItems agreementPriceItems) {
+		return R.status(agreementPriceItemsService.save(agreementPriceItems));
+	}
+
+	/**
+	 * 修改 物流-业务-协议价管理-明细
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入agreementPriceItems")
+	public R update(@Valid @RequestBody AgreementPriceItems agreementPriceItems) {
+		return R.status(agreementPriceItemsService.updateById(agreementPriceItems));
+	}
+
+	/**
+	 * 新增或修改 物流-业务-协议价管理-明细
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入agreementPriceItems")
+	public R submit(@Valid @RequestBody AgreementPriceItems agreementPriceItems) {
+		return R.status(agreementPriceItemsService.saveOrUpdate(agreementPriceItems));
+	}
+
+	
+	/**
+	 * 删除 物流-业务-协议价管理-明细
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(agreementPriceItemsService.removeByIds(Func.toLongList(ids)));
+	}
+
+	
+}

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceItemsMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.finance.agreement.mapper;
+
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import org.springblade.los.finance.agreement.vo.AgreementPriceItemsVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理-明细 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface AgreementPriceItemsMapper extends BaseMapper<AgreementPriceItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param agreementPriceItems
+	 * @return
+	 */
+	List<AgreementPriceItemsVO> selectAgreementPriceItemsPage(IPage page, AgreementPriceItemsVO agreementPriceItems);
+
+}

+ 36 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceItemsMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.finance.agreement.mapper.AgreementPriceItemsMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="agreementPriceItemsResultMap" type="org.springblade.los.finance.agreement.entity.AgreementPriceItems">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="pid" property="pid"/>
+        <result column="carrier_id" property="carrierId"/>
+        <result column="carrier_cn_name" property="carrierCnName"/>
+        <result column="carrier_en_name" property="carrierEnName"/>
+        <result column="account_period_days" property="accountPeriodDays"/>
+        <result column="settlement_period_type" property="settlementPeriodType"/>
+        <result column="settlement_period_name" property="settlementPeriodName"/>
+        <result column="settlement_period_descr" property="settlementPeriodDescr"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="version" property="version"/>
+        <result column="status" property="status"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectAgreementPriceItemsPage" resultMap="agreementPriceItemsResultMap">
+        select * from los_bs_agreement_price_items where is_deleted = 0
+    </select>
+
+</mapper>

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceMapper.java

@@ -0,0 +1,42 @@
+/*
+ *      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.finance.agreement.mapper;
+
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import org.springblade.los.finance.agreement.vo.AgreementPriceVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理主表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface AgreementPriceMapper extends BaseMapper<AgreementPrice> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param agreementPrice
+	 * @return
+	 */
+	List<AgreementPriceVO> selectAgreementPricePage(IPage page, AgreementPriceVO agreementPrice);
+
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/mapper/AgreementPriceMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.los.finance.agreement.mapper.AgreementPriceMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="agreementPriceResultMap" type="org.springblade.los.finance.agreement.entity.AgreementPrice">
+        <id column="id" property="id"/>
+        <result column="branch_id" property="branchId"/>
+        <result column="create_user" property="createUser"/>
+        <result column="create_user_name" property="createUserName"/>
+        <result column="create_dept" property="createDept"/>
+        <result column="create_dept_name" property="createDeptName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_user" property="updateUser"/>
+        <result column="update_user_name" property="updateUserName"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="bill_no" property="billNo"/>
+        <result column="agreement_no" property="agreementNo"/>
+        <result column="corp_id" property="corpId"/>
+        <result column="corp_cn_name" property="corpCnName"/>
+        <result column="corp_en_name" property="corpEnName"/>
+        <result column="credit_level" property="creditLevel"/>
+        <result column="effective_date" property="effectiveDate"/>
+        <result column="expiring_date" property="expiringDate"/>
+        <result column="amount_cny" property="amountCny"/>
+        <result column="amount_usd" property="amountUsd"/>
+        <result column="signed_id" property="signedId"/>
+        <result column="signed_name" property="signedName"/>
+        <result column="account_period_remarks" property="accountPeriodRemarks"/>
+        <result column="status" property="status"/>
+        <result column="version" property="version"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="remarks" property="remarks"/>
+    </resultMap>
+
+
+    <select id="selectAgreementPricePage" resultMap="agreementPriceResultMap">
+        select * from los_bs_agreement_price where is_deleted = 0
+    </select>
+
+</mapper>

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/IAgreementPriceItemsService.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.agreement.service;
+
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import org.springblade.los.finance.agreement.vo.AgreementPriceItemsVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 物流-业务-协议价管理-明细 服务类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface IAgreementPriceItemsService extends IService<AgreementPriceItems> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param agreementPriceItems
+	 * @return
+	 */
+	IPage<AgreementPriceItemsVO> selectAgreementPriceItemsPage(IPage<AgreementPriceItemsVO> page, AgreementPriceItemsVO agreementPriceItems);
+
+}

+ 65 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/IAgreementPriceService.java

@@ -0,0 +1,65 @@
+/*
+ *      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.finance.agreement.service;
+
+import org.springblade.core.tool.api.R;
+import org.springblade.los.finance.agreement.dto.AgreementPriceExcel;
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import org.springblade.los.finance.agreement.vo.AgreementPriceVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理主表 服务类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+public interface IAgreementPriceService extends IService<AgreementPrice> {
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param agreementPrice
+	 * @return
+	 */
+	IPage<AgreementPriceVO> selectAgreementPricePage(IPage<AgreementPriceVO> page, AgreementPriceVO agreementPrice);
+
+	/**
+	 * 新增或修改 物流-业务-协议价管理主表
+	 * @param agreementPrice
+	 * @return
+	 */
+	R submit(AgreementPrice agreementPrice);
+
+	/**
+	 * 入 物流-业务-协议价管理主表
+	 * @param excelList
+	 * @return
+	 */
+	R<List<AgreementPrice>> importAgreementPrice(List<AgreementPriceExcel> excelList);
+
+	/**
+	 * 详情
+	 * @param agreementPrice
+	 * @return
+	 */
+	AgreementPrice detail(AgreementPrice agreementPrice);
+}

+ 41 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/impl/AgreementPriceItemsServiceImpl.java

@@ -0,0 +1,41 @@
+/*
+ *      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.finance.agreement.service.impl;
+
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import org.springblade.los.finance.agreement.vo.AgreementPriceItemsVO;
+import org.springblade.los.finance.agreement.mapper.AgreementPriceItemsMapper;
+import org.springblade.los.finance.agreement.service.IAgreementPriceItemsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+/**
+ * 物流-业务-协议价管理-明细 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Service
+public class AgreementPriceItemsServiceImpl extends ServiceImpl<AgreementPriceItemsMapper, AgreementPriceItems> implements IAgreementPriceItemsService {
+
+	@Override
+	public IPage<AgreementPriceItemsVO> selectAgreementPriceItemsPage(IPage<AgreementPriceItemsVO> page, AgreementPriceItemsVO agreementPriceItems) {
+		return page.setRecords(baseMapper.selectAgreementPriceItemsPage(page, agreementPriceItems));
+	}
+
+}

+ 144 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/agreement/service/impl/AgreementPriceServiceImpl.java

@@ -0,0 +1,144 @@
+/*
+ *      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.finance.agreement.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.core.tool.utils.BeanUtil;
+import org.springblade.los.finance.agreement.dto.AgreementPriceExcel;
+import org.springblade.los.finance.agreement.entity.AgreementPrice;
+import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
+import org.springblade.los.finance.agreement.mapper.AgreementPriceMapper;
+import org.springblade.los.finance.agreement.service.IAgreementPriceItemsService;
+import org.springblade.los.finance.agreement.service.IAgreementPriceService;
+import org.springblade.los.finance.agreement.vo.AgreementPriceVO;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 物流-业务-协议价管理主表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-10-10
+ */
+@Service
+@AllArgsConstructor
+public class AgreementPriceServiceImpl extends ServiceImpl<AgreementPriceMapper, AgreementPrice> implements IAgreementPriceService {
+
+
+	private final ISysClient sysClient;
+
+	private final IAgreementPriceItemsService agreementPriceItemsService;
+
+	@Override
+	public IPage<AgreementPriceVO> selectAgreementPricePage(IPage<AgreementPriceVO> page, AgreementPriceVO agreementPrice) {
+		return page.setRecords(baseMapper.selectAgreementPricePage(page, agreementPrice));
+	}
+
+	@Override
+	public R submit(AgreementPrice agreementPrice) {
+		String deptId = "";
+		String deptName = "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		if (agreementPrice.getId() == null) {
+			agreementPrice.setCreateTime(new Date());
+			agreementPrice.setCreateUser(AuthUtil.getUserId());
+			agreementPrice.setCreateUserName(AuthUtil.getUserName());
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				agreementPrice.setCreateDept(deptId);
+				agreementPrice.setCreateDeptName(deptName);
+			}
+		} else {
+			agreementPrice.setUpdateUser(AuthUtil.getUserId());
+			agreementPrice.setUpdateUserName(AuthUtil.getUserName());
+		}
+		this.saveOrUpdate(agreementPrice);
+		if (ObjectUtils.isNotNull(agreementPrice.getAgreementPriceItemsList())) {
+			for (AgreementPriceItems item : agreementPrice.getAgreementPriceItemsList()) {
+				item.setPid(agreementPrice.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(deptId);
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+			}
+			agreementPriceItemsService.saveOrUpdateBatch(agreementPrice.getAgreementPriceItemsList());
+		}
+		return R.data(agreementPrice);
+	}
+
+	@Override
+	public R<List<AgreementPrice>> importAgreementPrice(List<AgreementPriceExcel> excelList) {
+		List<AgreementPrice> agreementPriceList = new ArrayList<>();
+		for (AgreementPriceExcel item : excelList) {
+			AgreementPrice agreementPrice = new AgreementPrice();
+			BeanUtil.copy(item, agreementPrice);
+			agreementPrice.setCreateTime(new Date());
+			agreementPrice.setCreateUser(AuthUtil.getUserId());
+			agreementPrice.setCreateUserName(AuthUtil.getUserName());
+			//获取部门ids对应中文名
+			if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+				agreementPrice.setCreateDept(AuthUtil.getDeptId());
+				R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+					agreementPrice.setCreateDeptName(String.join(",", res.getData()));
+				}
+			}
+			agreementPriceList.add(agreementPrice);
+		}
+		this.saveOrUpdateBatch(agreementPriceList);
+		return R.data(agreementPriceList);
+	}
+
+	@Override
+	public AgreementPrice detail(AgreementPrice agreementPrice) {
+		if (agreementPrice.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		AgreementPrice detail = baseMapper.selectById(agreementPrice.getId());
+		detail.setAgreementPriceItemsList(agreementPriceItemsService.list(new LambdaQueryWrapper<AgreementPriceItems>()
+			.eq(AgreementPriceItems::getIsDeleted, 0)
+			.eq(AgreementPriceItems::getTenantId, AuthUtil.getTenantId())
+			.eq(AgreementPriceItems::getPid, detail.getId())
+		));
+		return detail;
+	}
+
+}