Browse Source

1.海运进出口-增加批量模板导入接口
2.海运进出口-增加批量单据请核接口
3.海运进出口列表,导入等接口增加数据权限
4.首页统计接口逻辑修改
5.海运进出口主单保存报错修改
6.海运出口转单,撤销转单接口增加消息通知逻辑
7.增加接口通过港口查询所属公司
8.海运进口列表可以查看已添加主单的分单数据

纪新园 8 months ago
parent
commit
e17a9684ac
23 changed files with 889 additions and 1393 deletions
  1. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/amends/entity/Amends.java
  2. 10 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  3. 1 1
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java
  4. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/app/service/impl/IndexServiceImpl.java
  5. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/TradingBoxMapper.java
  6. 57 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/TradingBoxMapper.xml
  7. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/ITradingBoxService.java
  8. 5 0
      blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java
  9. 112 80
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  10. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.java
  11. 14 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  12. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java
  13. 219 217
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  14. 6 5
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  15. 10 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java
  16. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java
  17. 235 475
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  18. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  19. 171 604
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java
  20. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/BoxNumberProfitMapper.xml
  21. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/FinanceProfitMapper.xml
  22. 18 0
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
  23. 1 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/amends/entity/Amends.java

@@ -480,6 +480,17 @@ public class Amends implements Serializable {
 	private String tenantId;
 
 	/**
+	 * 客服
+	 */
+	@ApiModelProperty(value = "客服")
+	private String customerServiceId;
+	/**
+	 * 客服
+	 */
+	@ApiModelProperty(value = "客服")
+	private String customerServiceName;
+
+	/**
 	 * 物流-费用中心
 	 */
 	@TableField(exist = false)

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

@@ -1491,6 +1491,16 @@ public class Bills implements Serializable {
 	 */
 	@ApiModelProperty(value = "ML-MB/L NO")
 	private String mlMblno;
+	/**
+	 * 客服
+	 */
+	@ApiModelProperty(value = "客服")
+	private String customerServiceId;
+	/**
+	 * 客服
+	 */
+	@ApiModelProperty(value = "客服")
+	private String customerServiceName;
 
 	/**
 	 * 到港日期

+ 1 - 1
blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Dept.java

@@ -118,7 +118,7 @@ public class Dept implements Serializable {
 	 * 装货港 id
 	 */
 	@ApiModelProperty(value = "装货港 id")
-	private Long polId;
+	private String polId;
 	/**
 	 * 装货港中文名称
 	 */

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/app/service/impl/IndexServiceImpl.java

@@ -733,11 +733,11 @@ public class IndexServiceImpl implements IndexService {
 	public R containerVolumeTrend(String branchId, String startDate) {
 		if (ObjectUtils.isNotNull(branchId)) {
 			List<Map<String, Object>> mapList = billsMapper.trend(AuthUtil.getTenantId(), Long.parseLong(branchId),
-				null, startDate);
+				null, startDate,null,null);
 			return R.data(mapList);
 		} else {
 			List<Map<String, Object>> mapList = billsMapper.trend(AuthUtil.getTenantId(), null,
-				null, startDate);
+				null, startDate,null,null);
 			return R.data(mapList);
 		}
 	}

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/mapper/TradingBoxMapper.java

@@ -23,6 +23,7 @@ import org.springblade.los.box.vo.TradingBoxVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 买(卖)箱表 Mapper 接口
@@ -42,4 +43,6 @@ public interface TradingBoxMapper extends BaseMapper<TradingBox> {
 	List<TradingBoxVO> selectTradingBoxPage(IPage page, TradingBoxVO tradingBox);
 
     List<ExportTradingBoxItemOut> exportTradingBoxItemOut(@Param("item") TradingBox tradingBox);
+
+    List<Map<String, Object>> trend(@Param("tenantId")String tenantId, @Param("type")String type, @Param("date")String date);
 }

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

@@ -99,5 +99,62 @@
         </if>
         order by c.create_time desc
     </select>
+    <select id="trend" resultType="java.util.Map">
+        SELECT
+        m.id moon,
+        IFNULL( n.money, 0 ) money
+        FROM
+        (
+        SELECT
+        1 AS id UNION
+        SELECT
+        2 UNION
+        SELECT
+        3 UNION
+        SELECT
+        4 UNION
+        SELECT
+        5 UNION
+        SELECT
+        6 UNION
+        SELECT
+        7 UNION
+        SELECT
+        8 UNION
+        SELECT
+        9 UNION
+        SELECT
+        10 UNION
+        SELECT
+        11 UNION
+        SELECT
+        12
+        ) m
+        LEFT JOIN (
+        SELECT
+        DATE_FORMAT( sea.effective_date, '%m' ) AS moon,
+        SUM( IF( sea.box_number,sea.box_number,0)) AS money
+        FROM
+        container_trading_box sea
+        WHERE
+        sea.is_deleted = 0
+        <if test="type!=null and type != ''">
+            AND sea.type = #{type}
+        </if>
+        <if test="tenantId!=null and tenantId != ''">
+            AND sea.tenant_id = #{tenantId}
+        </if>
+        <if test="date==null or date == ''">
+            AND YEAR ( sea.effective_date ) = YEAR (NoW())
+        </if>
+        <if test="date!=null and date != ''">
+            AND YEAR ( sea.effective_date ) = #{date}
+        </if>
+        GROUP BY
+        DATE_FORMAT( sea.effective_date, '%m' )
+        ) n ON m.id = n.moon
+        ORDER BY
+        m.id
+    </select>
 
 </mapper>

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

@@ -26,6 +26,7 @@ import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 买(卖)箱表 服务类
@@ -62,4 +63,6 @@ public interface ITradingBoxService extends IService<TradingBox> {
 	R countRent(TradingBox tradingBox);
 
 	R revokeCountRent(TradingBox tradingBox);
+
+	List<Map<String, Object>> trend(String tenantId, String type, String date);
 }

+ 5 - 0
blade-service/blade-los/src/main/java/org/springblade/los/box/service/impl/TradingBoxServiceImpl.java

@@ -2346,4 +2346,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		return R.data(tradingBox);
 	}
 
+	@Override
+	public List<Map<String, Object>> trend(String tenantId, String type, String date) {
+		return baseMapper.trend(AuthUtil.getTenantId(), type, date);
+	}
+
 }

+ 112 - 80
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -33,7 +33,6 @@ 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.Util.IDeptUtils;
 import org.springblade.los.business.release.entity.SeaReleaseBillItems;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.SeaBillsDetail;
@@ -43,7 +42,6 @@ import org.springblade.los.business.sea.vo.BillsVO;
 import org.springblade.los.excel.BillsExcel;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
-import org.springblade.system.feign.ISysClient;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -66,8 +64,6 @@ public class BillsController extends BladeController {
 
 	private final IBillsService billsService;
 
-	private final IDeptUtils deptUtils;
-
 	private final IDictBizClient dictBizClient;
 
 	private final ISeaBillsDetailService seaBillsDetailService;
@@ -93,8 +89,6 @@ public class BillsController extends BladeController {
 		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.and(i -> i.isNull(Bills::getMasterId).or()
-				.eq(Bills::getMasterId, 0))
 			.like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
 			.like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
 			.like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
@@ -127,16 +121,24 @@ public class BillsController extends BladeController {
 			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
 			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
-		if (AuthUtil.getUserRole().contains("业务员")) {
-			lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
+			if (!AuthUtil.getUserRole().contains("分公司经理")) {
+				if (AuthUtil.getUserRole().contains("业务员")) {
+					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("操作员")) {
+					lambdaQueryWrapper.eq(Bills::getOperatorId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("客服")) {
+					lambdaQueryWrapper.eq(Bills::getCustomerServiceId, AuthUtil.getUserId());
+				} else {
+					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
+				}
+			}
 		} else {
 			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
 				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
 					.like(Bills::getSrcEnName, bills.getSrcCnName()));
 		}
-		if (!AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
-		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 				.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
@@ -147,33 +149,35 @@ public class BillsController extends BladeController {
 			.eq(ObjectUtils.isNotNull(bills.getStlCrStatusDescr()), Bills::getStlCrStatusDescr, bills.getStlCrStatusDescr())
 			.eq(ObjectUtils.isNotNull(bills.getAccountStatus()), Bills::getAccountStatus, bills.getAccountStatus())
 			.eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus());
-		if (ObjectUtils.isNotNull(bills.getBillStatus())){
-			if ("SE".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+		if (ObjectUtils.isNotNull(bills.getBillStatus())) {
+			if ("SE".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNull(Bills::getMblno);
-				}else if (4 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-				}else if (5 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.and(i -> i.isNull(Bills::getMblno).or().eq(Bills::getMblno, ""));
+				} else if (4 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+				} else if (5 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEtd);
-				}else if (6 == bills.getBillStatus()){
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
 				}
-			}else if ("SI".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+			} else if ("SI".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"3");
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"1");
-				}else if (6 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "3");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "1");
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
-				}else if (8 == bills.getBillStatus()){
+				} else if (8 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getReturnEmptyDate);
-				}else if (9 == bills.getBillStatus()){
+				} else if (9 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getChangeOrderDate);
-				}else if (10 == bills.getBillStatus()){
+				} else if (10 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getClearanceDate);
 				}
 			}
@@ -259,16 +263,24 @@ public class BillsController extends BladeController {
 			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
 			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
-		if (AuthUtil.getUserRole().contains("业务员")) {
-			lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
+			if (!AuthUtil.getUserRole().contains("分公司经理")) {
+				if (AuthUtil.getUserRole().contains("业务员")) {
+					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("操作员")) {
+					lambdaQueryWrapper.eq(Bills::getOperatorId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("客服")) {
+					lambdaQueryWrapper.eq(Bills::getCustomerServiceId, AuthUtil.getUserId());
+				} else {
+					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
+				}
+			}
 		} else {
 			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
 				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
 					.like(Bills::getSrcEnName, bills.getSrcCnName()));
 		}
-		if (!AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
-		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 				.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
@@ -279,33 +291,35 @@ public class BillsController extends BladeController {
 
 			.eq(ObjectUtils.isNotNull(bills.getMasterBillNo()), Bills::getMasterBillNo, bills.getMasterBillNo())
 			.eq(ObjectUtils.isNotNull(bills.getMasterId()), Bills::getMasterId, bills.getMasterId());
-		if (ObjectUtils.isNotNull(bills.getBillStatus())){
-			if ("SE".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+		if (ObjectUtils.isNotNull(bills.getBillStatus())) {
+			if ("SE".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNull(Bills::getMblno);
-				}else if (4 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-				}else if (5 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.and(i -> i.isNull(Bills::getMblno).or().eq(Bills::getMblno, ""));
+				} else if (4 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+				} else if (5 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEtd);
-				}else if (6 == bills.getBillStatus()){
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
 				}
-			}else if ("SI".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+			} else if ("SI".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"3");
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"1");
-				}else if (6 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "3");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "1");
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
-				}else if (8 == bills.getBillStatus()){
+				} else if (8 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getReturnEmptyDate);
-				}else if (9 == bills.getBillStatus()){
+				} else if (9 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getChangeOrderDate);
-				}else if (10 == bills.getBillStatus()){
+				} else if (10 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getClearanceDate);
 				}
 			}
@@ -475,6 +489,16 @@ public class BillsController extends BladeController {
 	}
 
 	/**
+	 * 批量单据请核
+	 */
+	@GetMapping("/checkBillsBatch")
+	@RepeatSubmit
+	public R checkBillsBatch(@RequestParam("billsIds") String billsIds, @RequestParam("url") String url,
+							 @RequestParam("pageStatus") String pageStatus, @RequestParam("pageLabel") String pageLabel) {
+		return billsService.checkBillsBatch(billsIds, url, pageStatus, pageLabel);
+	}
+
+	/**
 	 * 撤销单据请核
 	 */
 	@PostMapping("/revokeCheckBills")
@@ -577,8 +601,6 @@ public class BillsController extends BladeController {
 		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.and(i -> i.isNull(Bills::getMasterId).or()
-				.eq(Bills::getMasterId, 0))
 			.like(ObjectUtils.isNotNull(bills.getBillNo()), Bills::getBillNo, bills.getBillNo())
 			.like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
 			.like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
@@ -617,16 +639,24 @@ public class BillsController extends BladeController {
 				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
 					.like(Bills::getSrcEnName, bills.getSrcCnName()));
 		}
-		if (AuthUtil.getUserRole().contains("业务员")) {
-			lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+		if (!AuthUtil.getUserRole().contains("总部") && !AuthUtil.getUserRole().contains("admin")) {
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
+			if (!AuthUtil.getUserRole().contains("分公司经理")) {
+				if (AuthUtil.getUserRole().contains("业务员")) {
+					lambdaQueryWrapper.eq(Bills::getSrcId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("操作员")) {
+					lambdaQueryWrapper.eq(Bills::getOperatorId, AuthUtil.getUserId());
+				} else if (AuthUtil.getUserRole().contains("客服")) {
+					lambdaQueryWrapper.eq(Bills::getCustomerServiceId, AuthUtil.getUserId());
+				} else {
+					lambdaQueryWrapper.eq(Bills::getCreateUser, AuthUtil.getUserId());
+				}
+			}
 		} else {
 			lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getSrcType()), Bills::getSrcType, bills.getSrcType())
 				.and(ObjectUtils.isNotNull(bills.getSrcCnName()), i -> i.like(Bills::getSrcCnName, bills.getSrcCnName()).or()
 					.like(Bills::getSrcEnName, bills.getSrcCnName()));
 		}
-		if (!AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
-		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 				.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
@@ -635,33 +665,35 @@ public class BillsController extends BladeController {
 			.eq(ObjectUtils.isNotNull(bills.getSeaType()), Bills::getSeaType, bills.getSeaType())
 			.eq(ObjectUtils.isNotNull(bills.getStatus()), Bills::getStatus, bills.getStatus())
 			.orderByDesc(Bills::getCreateTime);
-		if (ObjectUtils.isNotNull(bills.getBillStatus())){
-			if ("SE".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+		if (ObjectUtils.isNotNull(bills.getBillStatus())) {
+			if ("SE".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNull(Bills::getMblno);
-				}else if (4 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-				}else if (5 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.and(i -> i.isNull(Bills::getMblno).or().eq(Bills::getMblno, ""));
+				} else if (4 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+				} else if (5 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEtd);
-				}else if (6 == bills.getBillStatus()){
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
 				}
-			}else if ("SI".equals(bills.getBusinessType())){
-				if ("1,2,3".contains(bills.getBillStatus()+"")){
+			} else if ("SI".equals(bills.getBusinessType())) {
+				if ("1,2,3".contains(bills.getBillStatus() + "")) {
 					lambdaQueryWrapper.eq(Bills::getBillStatus, bills.getBillStatus());
-				}else if (0 == bills.getBillStatus()){
-					lambdaQueryWrapper.isNotNull(Bills::getMblno);
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"3");
-					lambdaQueryWrapper.ne(Bills::getBillStatus,"1");
-				}else if (6 == bills.getBillStatus()){
+				} else if (0 == bills.getBillStatus()) {
+					lambdaQueryWrapper.isNotNull(Bills::getMblno)
+						.ne(Bills::getMblno, "");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "3");
+					lambdaQueryWrapper.ne(Bills::getBillStatus, "1");
+				} else if (6 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getActualEta);
-				}else if (8 == bills.getBillStatus()){
+				} else if (8 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getReturnEmptyDate);
-				}else if (9 == bills.getBillStatus()){
+				} else if (9 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getChangeOrderDate);
-				}else if (10 == bills.getBillStatus()){
+				} else if (10 == bills.getBillStatus()) {
 					lambdaQueryWrapper.isNotNull(Bills::getClearanceDate);
 				}
 			}

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

@@ -58,6 +58,6 @@ public interface BillsMapper extends BaseMapper<Bills> {
 
 	List<FinanceProfitDtoList> financeProfit(@Param("data") FinanceProfitDtoList financeProfit);
 
-	List<Map<String, Object>> trend(@Param("tenantId") String tenantId, @Param("deptPid") Long deptPid, @Param("postId") String postId,
-									@Param("date") String date);
+	List<Map<String, Object>> trend(@Param("tenantId") String tenantId, @Param("deptPid") Long deptPid, @Param("businessType") String businessType,
+									@Param("date") String date,@Param("type") String type,@Param("userId") Long userId);
 }

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

@@ -745,8 +745,20 @@
         <if test="deptPid!=null">
             AND sea.branch_id = #{deptPid}
         </if>
-        <if test="postId!=null and postId != ''">
-            AND find_in_set(sea.team_id,#{postId})
+        <if test="type!=null and type == '0'">
+            AND sea.create_user = #{userId}
+        </if>
+        <if test="type!=null and type == '1'">
+            AND sea.src_id = #{userId}
+        </if>
+        <if test="type!=null and type == '2'">
+            AND sea.operator_id = #{userId}
+        </if>
+        <if test="type!=null and type == '3'">
+            AND sea.customer_service_id = #{userId}
+        </if>
+        <if test="businessType!=null and businessType != ''">
+            AND sea.business_type = #{businessType}
         </if>
         <if test="tenantId!=null and tenantId != ''">
             AND sea.tenant_id = #{tenantId}

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java

@@ -22,6 +22,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.los.business.release.entity.SeaReleaseBillItems;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.vo.BillsVO;
+import org.springblade.los.check.entity.LosAuditPathsLevels;
 
 import java.util.List;
 
@@ -168,4 +169,6 @@ public interface IBillsService extends IService<Bills> {
 	R returningSecurityMoney(Bills bills);
 
 	R revokeReturningSecurityMoney(Bills bills);
+
+	R checkBillsBatch(String billsIds, String url, String pageStatus, String pageLabel);
 }

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

@@ -31,15 +31,12 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.Util.StringTools;
 import org.springblade.los.Util.ZrUtil;
 import org.springblade.los.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
-import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.entity.BCorpsAttn;
 import org.springblade.los.basic.corps.mapper.CorpsAttnMapper;
-import org.springblade.los.basic.corps.service.IBCorpsService;
 import org.springblade.los.basic.cur.entity.BCurrency;
 import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.basic.vessels.entity.BVessels;
@@ -68,7 +65,6 @@ import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
 import org.springblade.los.finance.genleg.entity.FinPeriod;
 import org.springblade.los.finance.genleg.mapper.FinPeriodMapper;
-import org.springblade.system.entity.Dept;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -77,7 +73,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
-import java.math.MathContext;
 import java.math.RoundingMode;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -104,8 +99,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 	private final ISysClient sysClient;
 
-	private final IDeptUtils deptUtils;
-
 	private final IPreContainersService preContainersService;
 
 	private final IFilesCenterService filesCenterService;
@@ -132,8 +125,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 
 	private final IAuditProecessService auditProecessService;
 
-	private final IBCorpsService ibCorpsService;
-
 	private final FinPeriodMapper finPeriodMapper;
 
 	private final AmendsMapper amendsMapper;
@@ -164,16 +155,13 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	public R submit(Bills billss) throws Exception {
 		Object object = StringTools.handle(billss, "Bills");
 		Bills bills = JSONObject.parseObject(JSONObject.toJSONString(object), Bills.class);
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
-		if (ObjectUtils.isNotNull(branchId)) {
-			deptId = deptUtils.getDeptPid() + "";
-			R<List<String>> res = sysClient.getDeptNames(branchId);
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
-			}
+		R<String> res = sysClient.getDeptName(Long.parseLong(branchId));
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+			deptName = res.getData();
 		}
 		if (ObjectUtils.isNotNull(bills.getMblno())) {
 			bills.setMblno(bills.getMblno().replaceAll(" ", ""));
@@ -759,15 +747,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 			seaContainerNumberItemService.saveOrUpdateBatch(bills.getContainerNumberItemList());
 		}
-
-		LocalDateTime now = LocalDateTime.now();
-		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-		String formatted = now.format(formatter);
-		System.out.println("起2 " + formatted);
 		this.updateById(bills);
-		LocalDateTime now2 = LocalDateTime.now();
-		String formatted2 = now2.format(formatter);
-		System.out.println("止2 " + formatted2);
 		String openZr = sysClient.getParamService(CommonEnum.OPEN_ZR_TRANSMIT.info);
 		if (Objects.equals(CommonEnum.ONE.info, openZr)) {
 			// 参数为1 则同步提单号
@@ -787,27 +767,27 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				if (!details.getEtd().equals(bills.getEtd())) {
 					statusEtd = true;
 				}
-				if (!details.getActualEtd().equals(bills.getActualEtd())) {
+				if (ObjectUtils.isNotNull(details.getActualEtd()) && !details.getActualEtd().equals(bills.getActualEtd())) {
 					statusAtd = true;
 				}
 			} else if ("SI".equals(bills.getBusinessType())) {
 				if (!details.getEta().equals(bills.getEta())) {
 					statusEta = true;
 				}
-				if (!details.getActualEta().equals(bills.getActualEta())) {
+				if (ObjectUtils.isNotNull(details.getActualEta()) && !details.getActualEta().equals(bills.getActualEta())) {
 					statusAta = true;
 				}
 			}
-			boolean statusVessel = !details.getVesselId().equals(bills.getVesselId());
-			boolean statusVoyageNo = !details.getVoyageNo().equals(bills.getVoyageNo());
-			boolean statusMblno = !details.getMblno().equals(bills.getMblno());
-			boolean statusPolId = !details.getPolId().equals(bills.getPolId());
-			boolean statusPodId = !details.getPodId().equals(bills.getPodId());
-			boolean statusCyTrailerTime = !details.getCyTrailerTime().equals(bills.getCyTrailerTime());
-			boolean statusCyReturnTime = !details.getCyReturnTime().equals(bills.getCyReturnTime());
-			boolean statusLineId = !details.getLineId().equals(bills.getLineId());
-			boolean statusForwarding = !details.getForwarding().equals(bills.getForwarding());
-			boolean statusBookingAgentId = !details.getBookingAgentId().equals(bills.getBookingAgentId());
+			boolean statusVessel = ObjectUtils.isNotNull(details.getVesselId()) && !details.getVesselId().equals(bills.getVesselId());
+			boolean statusVoyageNo = ObjectUtils.isNotNull(details.getVoyageNo()) && !details.getVoyageNo().equals(bills.getVoyageNo());
+			boolean statusMblno = ObjectUtils.isNotNull(details.getMblno()) && !details.getMblno().equals(bills.getMblno());
+			boolean statusPolId = ObjectUtils.isNotNull(details.getPolId()) && !details.getPolId().equals(bills.getPolId());
+			boolean statusPodId = ObjectUtils.isNotNull(details.getPodId()) && !details.getPodId().equals(bills.getPodId());
+			boolean statusCyTrailerTime = ObjectUtils.isNotNull(details.getCyTrailerTime()) && !details.getCyTrailerTime().equals(bills.getCyTrailerTime());
+			boolean statusCyReturnTime = ObjectUtils.isNotNull(details.getCyReturnTime()) && !details.getCyReturnTime().equals(bills.getCyReturnTime());
+			boolean statusLineId = ObjectUtils.isNotNull(details.getLineId()) && !details.getLineId().equals(bills.getLineId());
+			boolean statusForwarding = ObjectUtils.isNotNull(details.getForwarding()) && !details.getForwarding().equals(bills.getForwarding());
+			boolean statusBookingAgentId = ObjectUtils.isNotNull(details.getBookingAgentId()) && !details.getBookingAgentId().equals(bills.getBookingAgentId());
 			if (statusEtd || statusEta || statusAtd || statusAta || statusVessel || statusVoyageNo || statusMblno || statusPolId
 				|| statusPodId || statusCyTrailerTime || statusCyReturnTime || statusLineId || statusForwarding || statusBookingAgentId) {
 				List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
@@ -1375,91 +1355,24 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(LosAuditPathsActs::getIsEnable, 1)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
+			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
 			.eq(LosAuditPathsActs::getActId, actId);
 		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
 		//获取审批信息
 		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
 			.eq(LosAuditPathsActs::getActId, actId)
 			.eq(LosAuditPathsActs::getFidStatus, "status")
-			.eq(LosAuditPathsActs::getSalesCompanyId, deptUtils.getDeptPid())
+			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
 			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
 		Long pathId = losAuditPathsActs.getPathId();
 		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
 			.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
 		auditProecessDTO.setTimes(1);
 		auditProecessDTO.setProcessType(processType);
-		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-			.eq(FeeCenter::getIsDeleted, 0)
-			.eq(FeeCenter::getPid, declare.getId()));
-		if (feeCenterList.isEmpty()) {
-			throw new RuntimeException("请维护费用信息");
-		}
-		if ("MM".equals(declare.getBillType())) {
-			List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
-				.eq(Bills::getTenantId, AuthUtil.getTenantId())
-				.eq(Bills::getIsDeleted, 0)
-				.eq(Bills::getMasterId, declare.getId()));
-			List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
-				.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-				.eq(FeeCenter::getIsDeleted, 0)
-				.in(FeeCenter::getPid, billsList.stream().map(Bills::getId).collect(Collectors.toList())));
-			if (!feeCenters.isEmpty()) {
-				feeCenterList.addAll(feeCenters);
-			}
-		}
-		String status = sysClient.getParamServiceNew("is.profit.margin");
-		if ("1".equals(status)) {
-			List<FeeCenter> feeCenterListPS = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("PS")).collect(Collectors.toList());
-			List<FeeCenter> feeCenterListHY = feeCenterList.stream().filter(e -> e.getFeeCnName().equals("海运费")).collect(Collectors.toList());
-			if (!feeCenterListPS.isEmpty() && feeCenterListHY.isEmpty()) {
-				throw new RuntimeException("PS费与海运费需同时存在,当前缺少海运费用信息");
-			}
-			if (!feeCenterListPS.isEmpty()) {
-				BigDecimal amountHYD = feeCenterList.stream()
-					.filter(e -> e.getFeeCnName().equals("海运费") && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				BigDecimal amountHYC = feeCenterList.stream()
-					.filter(e -> e.getFeeCnName().equals("海运费") && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				BigDecimal amountPSD = feeCenterList.stream()
-					.filter(e -> e.getFeeCnName().equals("PS") && "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				BigDecimal amountPSC = feeCenterList.stream()
-					.filter(e -> e.getFeeCnName().equals("PS") && "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-				if (("PP".equals(declare.getMpaymode()) && ("MM".equals(declare.getBillType()) || "DD".equals(declare.getBillType()))) ||
-					("CC".equals(declare.getMpaymode()) && "MH".equals(declare.getBillType()))) {
-					BCorps bCorps = ibCorpsService.getById(declare.getCorpId());
-					BigDecimal PSAmount = amountPSC.subtract(amountPSD);
-					BigDecimal HYAmount = amountHYD.subtract(amountHYC);
-					BigDecimal rate = new BigDecimal("0.00");
-					if (PSAmount.compareTo(new BigDecimal("0.00")) > 0 && HYAmount.compareTo(new BigDecimal("0.00")) > 0) {
-						rate = PSAmount.divide(HYAmount, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP);
-					} else {
-						throw new RuntimeException("海运费利润:" + HYAmount + ",  PS利润:" + PSAmount);
-					}
-					if (ObjectUtils.isNotNull(bCorps) && ObjectUtils.isNotNull(bCorps.getPsRate()) && new BigDecimal(bCorps.getPsRate()).compareTo(new BigDecimal("0.00")) == 0) {
-						throw new RuntimeException("往来单位PS规则为空或零,不能存在PS费用");
-					}
-					if (new BigDecimal(bCorps.getPsRate()).compareTo(rate) < 0) {
-						throw new RuntimeException("PS比例高,公司实际分成比例:" + rate + ".系统比例为:" + bCorps.getPsRate());
-					}
-				} else {
-					throw new RuntimeException("只有预付、直单和主单,或分单和到付才可以输入PS");
-				}
-			} /*else if (!feeCenterListPS.isEmpty() && feeCenterListHY.isEmpty()) {
-				throw new RuntimeException("PS费与海运费需同时存在,当前缺少PS费用信息");
-			} else if (!feeCenterListPS.isEmpty()) {
-				throw new RuntimeException("PS费与海运费需同时存在,当前缺少海运费用信息");
-			}*/
-		}
 		// 没开启审批流直接走 通过流程
 		if (pathsActs == null || pathsActs.getIsEnable() == 2) {
 			throw new SecurityException("当前租户未查询到审批流配置");
 		} else {
-
 			if (CollectionUtils.isEmpty(auditPathsLevels)) {
 				throw new SecurityException("开启审批失败:未查询到审批信息");
 			}
@@ -1470,23 +1383,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			auditProecessDTO.setPageStatus(bills.getPageStatus());
 			auditProecessDTO.setPageLabel(bills.getPageLabel());
 			auditProecessDTO.setOrderRemark(declare.getRemarks());
-			List<LosAuditPathsLevels> pathsLevelsList = bills.getAuditPathsLevels();
-			if (ObjectUtils.isNotNull(pathsLevelsList) && !pathsLevelsList.isEmpty()) {
-				List<Long> idList = pathsLevelsList.stream().map(LosAuditPathsLevels::getId).collect(Collectors.toList());
-				List<LosAuditPathsLevels> levelsList = new ArrayList<>();
-				for (LosAuditPathsLevels item : auditPathsLevels) {
-					if (2 == item.getUserMold()) {
-						if (idList.contains(item.getId())) {
-							levelsList.add(item);
-						}
-					} else {
-						levelsList.add(item);
-					}
-				}
-				auditProecessDTO.setPathsLevelsList(levelsList);
-			} else {
-				auditProecessDTO.setPathsLevelsList(auditPathsLevels);
-			}
+			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
 			auditProecessDTO.setActId(1);
 			auditProecessDTO.setSrcBillId(declare.getId());
 			auditProecessDTO.setBillId(declare.getId());
@@ -1502,34 +1399,17 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			auditProecessDTO.setMorderNo(declare.getMblno());
 			auditProecessDTO.setBookingAgentId(declare.getBookingAgentId());
 			auditProecessDTO.setBookingAgentCnName(declare.getBookingAgentCnName());
-			Dept dept = deptUtils.getDept(declare.getCreateDept());
-			if (dept != null) {
-				auditProecessDTO.setSalesCompanyId(dept.getId());
-				auditProecessDTO.setSalesCompanyName(dept.getDeptName());
+			if (ObjectUtils.isNotNull(declare.getCreateDept())) {
+				auditProecessDTO.setSalesCompanyId(Long.parseLong(declare.getCreateDept()));
+				auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
+			} else {
+				auditProecessDTO.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
 			}
 			auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
 			auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
-
-			BigDecimal amountCnyD = feeCenterList.stream()
-				.filter(e -> "CNY".equals(e.getCurCode()) && "D".equals(e.getDc()))
-				.map(FeeCenter::getAmount)
-				.reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal amountCnyC = feeCenterList.stream()
-				.filter(e -> "CNY".equals(e.getCurCode()) && "C".equals(e.getDc()))
-				.map(FeeCenter::getAmount)
-				.reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal amountUsdD = feeCenterList.stream()
-				.filter(e -> "USD".equals(e.getCurCode()) && "D".equals(e.getDc()))
-				.map(FeeCenter::getAmount)
-				.reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal amountUsdC = feeCenterList.stream()
-				.filter(e -> "USD".equals(e.getCurCode()) && "C".equals(e.getDc()))
-				.map(FeeCenter::getAmount)
-				.reduce(BigDecimal.ZERO, BigDecimal::add);
-
-			auditProecessDTO.setGrossProfit(amountCnyD.subtract(amountCnyC));
-			auditProecessDTO.setGrossProfitUsd(amountUsdD.subtract(amountUsdC));
-			auditProecessDTO.setGrossProfitLoc(auditProecessDTO.getGrossProfit().add(bCurrencyService.converterCny("USD", auditProecessDTO.getGrossProfitUsd(), "", "1")));
+			auditProecessDTO.setGrossProfit(declare.getAmountProfit());
+			auditProecessDTO.setGrossProfitUsd(declare.getAmountProfitUsd());
+			auditProecessDTO.setGrossProfitLoc(declare.getAmountProfitLoc());
 			auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
 			auditProecessDTO.setSrcId(declare.getSrcId());
 			auditProecessDTO.setSrcCnName(declare.getSrcCnName());
@@ -1869,11 +1749,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		copyBills.setId(null);
 		copyBills.setOperatorId(AuthUtil.getUserId());
 		copyBills.setOperatorName(AuthUtil.getUserName());
-		Dept dept = deptUtils.getDept(AuthUtil.getDeptId());
-		if (dept != null) {
-			copyBills.setOperatorDept(dept.getId() + "");
-			copyBills.setOperatorDeptName(dept.getDeptName());
-		}
+		copyBills.setOperatorDept(AuthUtil.getDeptId());
+		copyBills.setOperatorDeptName(detail.getOperatorDeptName());
 		copyBills.setBillNo("");
 		copyBills.setMblno("");
 		copyBills.setHblno("");
@@ -1962,7 +1839,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
 		}
 		if (!AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getTenantId());
 		}
 		List<Bills> billsList = baseMapper.selectList(lambdaQueryWrapper);
 		if (billsList.isEmpty()) {
@@ -2038,7 +1915,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 		}
 		if (!AuthUtil.getUserRole().contains("admin")) {
-			lambdaQueryWrapper.eq(Bills::getBranchId, deptUtils.getDeptPid());
+			lambdaQueryWrapper.eq(Bills::getBranchId, AuthUtil.getDeptId());
 		}
 		List<Bills> billsList = baseMapper.selectList(lambdaQueryWrapper);
 		if (billsList.isEmpty()) {
@@ -2495,15 +2372,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 				sendMessage.setMessageBody("您有新的海运出口物流已提交,请及时待处理!提单号:" + detail.getMblno() + "时间:" + formatted);
 				R save = messageClient.save(sendMessage);
-				System.out.println("发送结果:" + save);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 				}
-			} else {
-				throw new SecurityException("未查到船务员工用户信息");
 			}
-		} else {
-			throw new SecurityException("请选择接收船务员工");
 		}
 		return R.data(detail);
 	}
@@ -2539,17 +2411,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				sendMessage.setUrl("/iosBasicData/SeafreightExportF/bills/index");
 				sendMessage.setPageLabel("海运出口");
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
-				sendMessage.setMessageBody("您的海运出口物流提交已撤销!提单号:" + detail.getMblno() + "时间:" + formatted);
+				sendMessage.setMessageBody("您的海运出口物流提交已撤销!时间:" + formatted);
 				R save = messageClient.save(sendMessage);
-				System.out.println("发送结果:" + save);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 				}
-			} else {
-				throw new SecurityException("未查到船务员工用户信息");
 			}
-		} else {
-			throw new SecurityException("请选择接收船务员工");
 		}
 		detail.setLogisticsStatus("录入");
 		detail.setUpdateUser(AuthUtil.getUserId());
@@ -2767,6 +2634,34 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		billsJkNew.setAmountCrLoc(billsJkNew.getAmountCrLoc().add(amountCrLoc));
 		billsJkNew.setAmountProfitLoc(billsJkNew.getAmountProfitLoc().add(amountProfitLoc));
 		this.updateById(billsJkNew);
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//发送消息
+		if (ObjectUtils.isNotNull(bills.getPodStaffId())) {
+			R<User> userR = userClient.userInfoById(bills.getPodStaffId());
+			if (userR.isSuccess() && ObjectUtils.isNotNull(userR.getData())) {
+				User datum = userR.getData();
+				Message sendMessage = new Message();
+				sendMessage.setParameter(billsJkNew.getId() + "");
+				sendMessage.setUserName(AuthUtil.getUserName());
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(datum.getId());
+				sendMessage.setToUserName(datum.getName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/iosBasicData/OceanFreightImport/bills/index");
+				sendMessage.setPageLabel("海运进口");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有新的海运进口转单,请及时待处理!提单号:" + billsJkNew.getMblno() + "时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		}
 		return R.data(billsJkNew);
 	}
 
@@ -2925,9 +2820,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				//计算字段null值处理
 				item.setQuantity(ObjectUtils.isNotNull(item.getQuantity()) ? item.getQuantity() : new BigDecimal("0.00"));
 				item.setPrice(ObjectUtils.isNotNull(item.getPrice()) ? item.getPrice() : new BigDecimal("0.00"));
-				item.setSurchargeRate(ObjectUtils.isNotNull(item.getSurchargeRate()) ? item.getSurchargeRate() : new BigDecimal("0.00"));
-				item.setTaxRate(ObjectUtils.isNotNull(item.getTaxRate()) ? item.getTaxRate() : new BigDecimal("0.00"));
-				item.setAmountDiscount(ObjectUtils.isNotNull(item.getAmountDiscount()) ? item.getAmountDiscount() : new BigDecimal("0.00"));
 				item.setStlTtlAmount(ObjectUtils.isNotNull(item.getStlTtlAmount()) ? item.getStlTtlAmount() : new BigDecimal("0.00"));
 
 				item.setId(null);
@@ -2944,41 +2836,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				item.setUpdateUser(null);
 				item.setUpdateTime(null);
 				item.setUpdateUserName(null);
-
-				// 去税金额 = 数量quantity * 单价price
-				BigDecimal amountNet = new BigDecimal("0.00");
-				// 税额 = 去税金额amountNet * 税率taxRateSum
-				BigDecimal amountTax = new BigDecimal("0.00");
-				// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
-				BigDecimal amount = new BigDecimal("0.00");
-				//总税率  = 税率taxRate + 附加税率surchargeRate
-				BigDecimal taxRate = new BigDecimal("0.00");
-				// 税率 = 总税率/100
-				BigDecimal taxRateSum = new BigDecimal("0.00");
-
-				amountNet = amountNet.add(item.getQuantity().multiply(item.getPrice()))
-					.setScale(2, RoundingMode.HALF_UP);
-				taxRate = taxRate.add(item.getTaxRate()).add(item.getSurchargeRate());
-				taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
-				amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
-				amount = amount.add(amountNet.add(amountTax).subtract(item.getAmountDiscount()));
-
+				// 金额
+				BigDecimal amount = item.getAmount();
 				//判断是否是本位币
 				if ("CNY".equals(item.getCurCode())) {
-					item.setAmountNetLoc(amountNet);
-					item.setAmountTaxLoc(amountTax);
 					item.setAmountLoc(amount);
-					item.setAmountDiscountLoc(amount);
 					amountCr = amountCr.add(item.getAmount());
 				} else {
-					item.setAmountNetLoc(amountNet.multiply(exrateC));
-					item.setAmountTaxLoc(amountTax.multiply(exrateC));
 					item.setAmountLoc(amount.multiply(exrateC));
-					item.setAmountDiscountLoc(amount.multiply(exrateC));
 					amountCrUsd = amountCrUsd.add(item.getAmount());
 				}
-				item.setAmountNet(amountNet);
-				item.setAmountTax(amountTax);
 				item.setAmount(amount);
 				item.setUnsettledAmount(item.getAmount().subtract(item.getStlTtlAmount()));
 			}
@@ -3031,10 +2898,39 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				this.removeByIds(details.stream().map(Bills::getId).collect(Collectors.toList()));
 			}
 		}
+		LocalDateTime now = LocalDateTime.now();
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+		String formatted = now.format(formatter);
+		//发送消息
+		if (ObjectUtils.isNotNull(detail.getPodStaffId())) {
+			R<User> userR = userClient.userInfoById(bills.getPodStaffId());
+			if (userR.isSuccess() && ObjectUtils.isNotNull(userR.getData())) {
+				User datum = userR.getData();
+				Message sendMessage = new Message();
+				sendMessage.setParameter(detail.getId() + "");
+				sendMessage.setUserName(AuthUtil.getUserName());
+				sendMessage.setUserId(null);
+				sendMessage.setToUserId(datum.getId());
+				sendMessage.setToUserName(datum.getName());
+				sendMessage.setMessageType(1);
+				sendMessage.setTenantId(AuthUtil.getTenantId());
+				sendMessage.setCreateUser(null);
+				sendMessage.setCreateTime(new Date());
+				sendMessage.setUrl("/iosBasicData/OceanFreightImport/bills/index");
+				sendMessage.setPageLabel("海运进口");
+				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
+				sendMessage.setMessageBody("您有新的海运进口转单已撤销!时间:" + formatted);
+				R save = messageClient.save(sendMessage);
+				if (!save.isSuccess()) {
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		}
 		return R.data(billsJk);
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R receive(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
@@ -3052,8 +2948,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 		String formatted = now.format(formatter);
 		//发送消息
-		if (ObjectUtils.isNotNull(bills.getShippingStaffId())) {
-			R<User> userR = userClient.userInfoById(bills.getShippingStaffId());
+		if (ObjectUtils.isNotNull(detail.getShippingStaffId())) {
+			R<User> userR = userClient.userInfoById(detail.getShippingStaffId());
 			if (userR.isSuccess() && ObjectUtils.isNotNull(userR.getData())) {
 				User datum = userR.getData();
 				Message sendMessage = new Message();
@@ -3071,20 +2967,16 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
 				sendMessage.setMessageBody("您有新的海运进口已接收,请及时待处理!提单号:" + detail.getMblno() + "时间:" + formatted);
 				R save = messageClient.save(sendMessage);
-				System.out.println("发送结果:" + save);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 				}
-			} else {
-				throw new SecurityException("未查到船务员工用户信息");
 			}
-		} else {
-			throw new SecurityException("请选择接收船务员工");
 		}
 		return R.data(detail);
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R revokeReceive(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
@@ -3114,17 +3006,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				sendMessage.setUrl("/iosBasicData/OceanFreightImport/bills/index");
 				sendMessage.setPageLabel("海运进口");
 				sendMessage.setPageStatus("this.$store.getters.domSaleStatus");
-				sendMessage.setMessageBody("您的海运进口已撤销接收!提单号:" + detail.getMblno() + "时间:" + formatted);
+				sendMessage.setMessageBody("您的海运进口已撤销接收!时间:" + formatted);
 				R save = messageClient.save(sendMessage);
-				System.out.println("发送结果:" + save);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 				}
-			} else {
-				throw new SecurityException("未查到船务员工用户信息");
 			}
-		} else {
-			throw new SecurityException("请选择接收船务员工");
 		}
 		detail.setReceiveStatus("录入");
 		detail.setUpdateUser(AuthUtil.getUserId());
@@ -3135,17 +3022,18 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R changeOrders(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		Bills detail = baseMapper.selectById(bills.getId());
-		if ("录入".equals(bills.getChangeOrdersStatus())){
+		if ("录入".equals(bills.getChangeOrdersStatus())) {
 			if ("可换单".equals(detail.getChangeOrdersStatus())) {
 				throw new RuntimeException("可换单,请勿重复提交");
 			}
 			detail.setChangeOrdersStatus("可换单");
-		}else{
+		} else {
 			if ("已换单".equals(detail.getChangeOrdersStatus())) {
 				throw new RuntimeException("已换单,请勿重复提交");
 			}
@@ -3160,17 +3048,18 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R revokeChangeOrders(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		Bills detail = baseMapper.selectById(bills.getId());
-		if ("可换单".equals(bills.getChangeOrdersStatus())){
+		if ("可换单".equals(bills.getChangeOrdersStatus())) {
 			if ("录入".equals(detail.getChangeOrdersStatus())) {
 				throw new RuntimeException("已撤销换单,请勿重复撤销");
 			}
 			detail.setChangeOrdersStatus("录入");
-		}else{
+		} else {
 			if ("可换单".equals(detail.getChangeOrdersStatus())) {
 				throw new RuntimeException("已撤销换单,请勿重复撤销");
 			}
@@ -3185,17 +3074,18 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R returningSecurityMoney(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		Bills detail = baseMapper.selectById(bills.getId());
-		if ("录入".equals(bills.getReturningSecurityMoneyStatus())){
+		if ("录入".equals(bills.getReturningSecurityMoneyStatus())) {
 			if ("可退押".equals(detail.getReturningSecurityMoneyStatus())) {
 				throw new RuntimeException("可退押,请勿重复提交");
 			}
 			detail.setReturningSecurityMoneyStatus("可退押");
-		}else{
+		} else {
 			if ("已退押".equals(detail.getReturningSecurityMoneyStatus())) {
 				throw new RuntimeException("已退押,请勿重复提交");
 			}
@@ -3209,17 +3099,18 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R revokeReturningSecurityMoney(Bills bills) {
 		if (bills.getId() == null) {
 			throw new RuntimeException("缺少必要参数");
 		}
 		Bills detail = baseMapper.selectById(bills.getId());
-		if ("可退押".equals(bills.getReturningSecurityMoneyStatus())){
+		if ("可退押".equals(bills.getReturningSecurityMoneyStatus())) {
 			if ("录入".equals(detail.getChangeOrdersStatus())) {
 				throw new RuntimeException("已撤销退押,请勿重复撤销");
 			}
 			detail.setReturningSecurityMoneyStatus("录入");
-		}else{
+		} else {
 			if ("可退押".equals(detail.getReturningSecurityMoneyStatus())) {
 				throw new RuntimeException("已撤销退押,请勿重复撤销");
 			}
@@ -3232,6 +3123,117 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		return R.data(detail);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R checkBillsBatch(String billsIds, String url, String pageStatus, String pageLabel) {
+		List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getBranchId, AuthUtil.getDeptId())
+			.apply("find_in_set(id,'" + billsIds + "')"));
+		if (billsList.isEmpty()) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		Integer actId = null;
+		String processType = "";
+		String checkType = "";
+		if ("SE".equals(billsList.get(0).getBusinessType())) {
+			actId = 1108;
+			processType = "海运出口审核";
+			checkType = "HYCK-DJ";
+		} else if ("SI".equals(billsList.get(0).getBusinessType())) {
+			actId = 1113;
+			processType = "海运进口审核";
+			checkType = "HYJK-DJ";
+		}
+		//获取审批级次
+		List<LosAuditPathsLevels> auditPathsLevels;
+		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
+		LosAuditPathsActs pathsActs;
+		//是否开启流程
+		LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		auditPathsActsLambdaQueryWrapper
+			.eq(LosAuditPathsActs::getIsEnable, 1)
+			.eq(LosAuditPathsActs::getFidStatus, "status")
+			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
+			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getActId, actId);
+		pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
+		//获取审批信息
+		LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
+			.eq(LosAuditPathsActs::getActId, actId)
+			.eq(LosAuditPathsActs::getFidStatus, "status")
+			.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
+			.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
+		Long pathId = losAuditPathsActs.getPathId();
+		auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
+			.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
+		for (Bills declare : billsList) {
+			//审批数据
+			LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
+			auditProecessDTO.setTimes(1);
+			auditProecessDTO.setProcessType(processType);
+			// 没开启审批流直接走 通过流程
+			if (pathsActs == null || pathsActs.getIsEnable() == 2) {
+				throw new SecurityException("当前租户未查询到审批流配置");
+			} else {
+				if (CollectionUtils.isEmpty(auditPathsLevels)) {
+					throw new SecurityException("开启审批失败:未查询到审批信息");
+				}
+				// 绑定审核类型
+				auditProecessDTO.setCheckType(checkType);
+				// 追加跳转路由url
+				auditProecessDTO.setUrl(url);
+				auditProecessDTO.setPageStatus(pageStatus);
+				auditProecessDTO.setPageLabel(pageLabel);
+				auditProecessDTO.setOrderRemark(declare.getRemarks());
+				auditProecessDTO.setPathsLevelsList(auditPathsLevels);
+				auditProecessDTO.setActId(1);
+				auditProecessDTO.setSrcBillId(declare.getId());
+				auditProecessDTO.setBillId(declare.getId());
+				auditProecessDTO.setBillNo(declare.getBillNo());
+				auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+				auditProecessDTO.setSendName(AuthUtil.getUserName());
+				auditProecessDTO.setSendTime(new Date());
+				auditProecessDTO.setBillTime(declare.getCreateTime());
+				auditProecessDTO.setTenantId(AuthUtil.getTenantId());
+				auditProecessDTO.setCorpId(declare.getCorpId());
+				auditProecessDTO.setCorpsName(declare.getCorpCnName());
+				auditProecessDTO.setReferenceNumber(declare.getMblno());
+				auditProecessDTO.setMorderNo(declare.getMblno());
+				auditProecessDTO.setBookingAgentId(declare.getBookingAgentId());
+				auditProecessDTO.setBookingAgentCnName(declare.getBookingAgentCnName());
+				if (ObjectUtils.isNotNull(declare.getCreateDept())) {
+					auditProecessDTO.setSalesCompanyId(Long.parseLong(declare.getCreateDept()));
+					auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
+				} else {
+					auditProecessDTO.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+				}
+				auditProecessDTO.setPayAmount(declare.getAmountCrLoc());
+				auditProecessDTO.setReceivableAmount(declare.getAmountDrLoc());
+				auditProecessDTO.setGrossProfit(declare.getAmountProfit());
+				auditProecessDTO.setGrossProfitUsd(declare.getAmountProfitUsd());
+				auditProecessDTO.setGrossProfitLoc(declare.getAmountProfitLoc());
+				auditProecessDTO.setSalesCompanyName(declare.getCreateDeptName());
+				auditProecessDTO.setSrcId(declare.getSrcId());
+				auditProecessDTO.setSrcCnName(declare.getSrcCnName());
+				auditProecessDTO.setSrcEnName(declare.getSrcEnName());
+				if ("SE".equals(declare.getBusinessType())) {
+					auditProecessDTO.setEtd(declare.getEtd());
+				} else if ("SI".equals(declare.getBusinessType())) {
+					auditProecessDTO.setEtd(declare.getEta());
+				}
+				R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
+				if (!financeProcess.isSuccess()) {
+					throw new SecurityException("操作失败,请联系管理员");
+				}
+			}
+			declare.setStatus(1);
+		}
+		this.updateBatchById(billsList);
+		return R.success("操作成功");
+	}
+
 	/**
 	 * 删除海运进出口明细表
 	 *

+ 6 - 5
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -550,6 +550,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getPid, bills.getId()));
 				if ("MM".equals(bills.getBillType())) {
 					List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
@@ -563,6 +564,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 							List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 								.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 								.eq(FeeCenter::getIsDeleted, 0)
+								.eq(FeeCenter::getAccStatus, 0)
 								.in(FeeCenter::getPid, ids));
 							feeCenterList.addAll(feeCenters);
 						}
@@ -572,12 +574,11 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					item.setApproverId(AuthUtil.getUserId());
 					item.setApproverName(AuthUtil.getUserName());
 					item.setApproveTime(new Date());
-					item.setAuditStatus("1");
+					item.setAuditStatus("4");
 				}
-				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> 0 == e.getAccStatus()).collect(Collectors.toList());
-				if (!feeCenters.isEmpty()) {
+				if (!feeCenterList.isEmpty()) {
 					FinAccBills finAccBills = new FinAccBills();
-					finAccBills.setFeeCenterList(feeCenters);
+					finAccBills.setFeeCenterList(feeCenterList);
 					finAccBills.setBusinessTypeCode("HYZD");
 					finAccBills.setBillNoFormat("HYZD");
 					finAccBills.setAccountType("");
@@ -590,7 +591,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					finAccBills.setTeamName(bills.getTeamName());
 					finAccBillsService.generateBill(finAccBills);
 				}
-				feeCenterService.saveOrUpdateBatch(feeCenterList);
+				feeCenterService.updateBatchById(feeCenterList);
 				String status = sysClient.getParamServiceNew("automatic.generate.voucher");
 				if ("1".equals(status)) {
 					generateVoucher(auditProecess.getCheckType(), bills.getId());

+ 10 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FeeCenterController.java

@@ -236,6 +236,16 @@ public class FeeCenterController extends BladeController {
 	}
 
 	/**
+	 * 批量模板导入
+	 */
+	@GetMapping("/templateImportBatch")
+	@RepeatSubmit
+	public R templateImportBatch(@RequestParam("billsIds") String billsIds,@RequestParam("templateId") String templateId
+		,@RequestParam("dc") String dc) {
+		return feeCenterService.templateImportBatch(billsIds,templateId,dc);
+	}
+
+	/**
 	 * 物流-费用中心
 	 */
 	@GetMapping("/selectByAccNoList")

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

@@ -85,4 +85,5 @@ public interface IFeeCenterService extends IService<FeeCenter> {
 
 	R submitListBox(List<FeeCenter> feeCenter);
 
+	R templateImportBatch(String billsIds, String templateId, String dc);
 }

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

@@ -23,21 +23,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
-import org.springblade.los.Util.IDeptUtils;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.corps.service.IBCorpsService;
 import org.springblade.los.basic.cur.entity.BCurrency;
 import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.basic.fees.entity.FeesTemplateItems;
+import org.springblade.los.basic.fees.entity.FeesTemplateSonItems;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.basic.fees.service.IFeesTemplateItemsService;
+import org.springblade.los.basic.fees.service.IFeesTemplateSonItemsService;
 import org.springblade.los.box.entity.TradingBox;
 import org.springblade.los.box.mapper.TradingBoxMapper;
-import org.springblade.los.business.aea.entity.AeaBills;
-import org.springblade.los.business.aea.mapper.AeaBillsMapper;
 import org.springblade.los.business.amends.entity.Amends;
 import org.springblade.los.business.amends.mapper.AmendsMapper;
-import org.springblade.los.business.customsDeclaration.entity.CustomsDeclaration;
-import org.springblade.los.business.customsDeclaration.mapper.CustomsDeclarationMapper;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.business.sea.mapper.BillsMapper;
@@ -69,14 +67,8 @@ import java.util.stream.Collectors;
 public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter> implements IFeeCenterService {
 	private final ISysClient sysClient;
 
-	private final IDeptUtils deptUtils;
-
 	private final BillsMapper billsMapper;
 
-	private final AeaBillsMapper aeaBillsMapper;
-
-	private final CustomsDeclarationMapper customsDeclarationMapper;
-
 	private final AmendsMapper amendsMapper;
 
 	private final IBCurrencyService bCurrencyService;
@@ -87,6 +79,10 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 
 	private final TradingBoxMapper tradingBoxMapper;
 
+	private final IFeesTemplateItemsService feesTemplateItemsService;
+
+	private final IFeesTemplateSonItemsService feesTemplateSonItemsService;
+
 	@Override
 	public IPage<FeeCenterVO> selectFeeCenterPage(IPage<FeeCenterVO> page, FeeCenterVO feeCenter) {
 		return page.setRecords(baseMapper.selectFeeCenterPage(page, feeCenter));
@@ -95,16 +91,13 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submit(FeeCenter feeCenter) {
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
-		if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
-			deptId = AuthUtil.getDeptId();
-			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
-			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
-			}
+		R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
+		if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+			deptName = res.getData();
 		}
 		if (ObjectUtils.isNotNull(feeCenter.getBillCorpId())) {
 			BCorps corps = bCorpsService.getById(feeCenter.getBillCorpId());
@@ -132,48 +125,18 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			feeCenter.setUpdateTime(new Date());
 			feeCenter.setUpdateUserName(AuthUtil.getUserName());
 		}
-
-		/** --------------------金额计算-------------------------**/
-		// 去税金额 = 数量quantity * 单价price
-		BigDecimal amountNet = new BigDecimal("0.00");
-		// 税额 = 去税金额amountNet * 税率taxRateSum
-		BigDecimal amountTax = new BigDecimal("0.00");
-		// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
-		BigDecimal amount = new BigDecimal("0.00");
-		//总税率  = 税率taxRate + 附加税率surchargeRate
-		BigDecimal taxRate = new BigDecimal("0.00");
-		// 税率 = 总税率/100
-		BigDecimal taxRateSum = new BigDecimal("0.00");
-
+		// 金额
+		BigDecimal amount = feeCenter.getAmount();
 		//计算字段null值处理
 		feeCenter.setQuantity(ObjectUtils.isNotNull(feeCenter.getQuantity()) ? feeCenter.getQuantity() : new BigDecimal("0.00"));
 		feeCenter.setPrice(ObjectUtils.isNotNull(feeCenter.getPrice()) ? feeCenter.getPrice() : new BigDecimal("0.00"));
-		feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
-		feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
-		feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
 		feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
-
-		amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
-			.setScale(2, RoundingMode.HALF_UP);
-		taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
-		taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
-		amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
-		amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
-
 		//判断是否是本位币
 		if ("CNY".equals(feeCenter.getCurCode())) {
-			feeCenter.setAmountNetLoc(amountNet);
-			feeCenter.setAmountTaxLoc(amountTax);
 			feeCenter.setAmountLoc(amount);
-			feeCenter.setAmountDiscountLoc(amount);
 		} else {
-			feeCenter.setAmountNetLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountNet, "", "1"));
-			feeCenter.setAmountTaxLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountTax, "", "1"));
 			feeCenter.setAmountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
-			feeCenter.setAmountDiscountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
 		}
-		feeCenter.setAmountNet(amountNet);
-		feeCenter.setAmountTax(amountTax);
 		feeCenter.setAmount(amount);
 		feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
 		this.saveOrUpdate(feeCenter);
@@ -355,186 +318,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				}
 			}
 			this.saveOrUpdateBatch(list);
-		} else if ("KYCK".equals(losBFeesTemplate.getBusinessTypeCode()) || "KYJK".equals(losBFeesTemplate.getBusinessTypeCode())) {
-			AeaBills bills = aeaBillsMapper.selectById(losBFeesTemplate.getBillNoId());
-			if (bills == null) {
-				throw new RuntimeException("未找到主表信息");
-			}
-			if (!losBFeesTemplate.getFeesTemplateItemsList().isEmpty()) {
-				int count = 1;
-				for (FeesTemplateItems items : losBFeesTemplate.getFeesTemplateItemsList()) {
-					FeeCenter feeCenter = new FeeCenter();
-
-					feeCenter.setElementsCnName(items.getElementsCnName());
-					feeCenter.setElementsEnName(items.getElementsEnName());
-					feeCenter.setElementsId(items.getElementsId());
-					feeCenter.setElementsCode(items.getElementsCode());
-
-					feeCenter.setPid(bills.getId());
-					feeCenter.setBillNo(bills.getBillNo());
-					feeCenter.setBusinessType(bills.getBusinessType());
-					feeCenter.setBillType(bills.getBillType());
-					feeCenter.setBillDate(bills.getBillDate());
-					feeCenter.setBillCorpId(bills.getCorpId());
-					feeCenter.setBillCorpCnName(bills.getCorpCnName());
-					feeCenter.setBillCorpEnName(bills.getCorpEnName());
-					feeCenter.setVoyageNo(bills.getVoyageNo());
-					feeCenter.setMblno(bills.getMblno());
-					feeCenter.setHblno(bills.getHblno());
-					feeCenter.setEtd(bills.getEtd());
-					feeCenter.setEta(bills.getEta());
-					feeCenter.setDc(losBFeesTemplate.getDc());
-					feeCenter.setSort(count);
-					count++;
-					feeCenter.setCorpId(items.getCorpId());
-					feeCenter.setCorpCnName(items.getCorpCnName());
-					feeCenter.setCorpEnName(items.getCorpEnName());
-					feeCenter.setShortName(items.getCorpCnName());
-					feeCenter.setFeeId(items.getFeeId());
-					feeCenter.setFeeCode(items.getFeeCode());
-					feeCenter.setFeeCnName(items.getFeeCnName());
-					feeCenter.setFeeEnName(items.getFeeEnName());
-					feeCenter.setUnitNo(items.getUnitNo());
-					feeCenter.setPrice(items.getPrice());
-					feeCenter.setCurCode(items.getCurCode());
-					if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
-						BCurrency bCurrency = new BCurrency();
-						bCurrency.setDate(bills.getEtd());
-						bCurrency.setDc(losBFeesTemplate.getDc());
-						List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
-						if (!bCurrencyList.isEmpty()) {
-							BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
-							if (currency != null) {
-								feeCenter.setExrate(currency.getExrate());
-							} else {
-								throw new RuntimeException("未找到汇率信息");
-							}
-						}
-					}
-					if ("按票".equals(items.getQuantityRule())) {
-						if ("JOB".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(new BigDecimal("1"));
-							feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于JOB!";
-							continue;
-						}
-					} else if ("按重量".equals(items.getQuantityRule())) {
-						if ("KGS".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(bills.getGrossWeight());
-							feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于KGS!";
-							continue;
-						}
-					} else if ("按尺码".equals(items.getQuantityRule())) {
-						if ("CBM".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(bills.getMeasurement());
-							feeCenter.setAmount(items.getPrice().multiply(bills.getMeasurement()));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于CBM!";
-							continue;
-						}
-					} else {
-						feeCenter.setQuantity(new BigDecimal("1"));
-						feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-					}
-					if (ObjectUtils.isNotNull(feeCenter.getAmount())) {
-						feeCenter.setAmount(new BigDecimal("0"));
-					}
-					list.add(feeCenter);
-				}
-			}
-			this.saveOrUpdateBatch(list);
-		} else if ("BGSE".equals(losBFeesTemplate.getBusinessTypeCode()) || "BGSI".equals(losBFeesTemplate.getBusinessTypeCode())
-			|| "BGAE".equals(losBFeesTemplate.getBusinessTypeCode()) || "BGAI".equals(losBFeesTemplate.getBusinessTypeCode())) {
-			CustomsDeclaration bills = customsDeclarationMapper.selectById(losBFeesTemplate.getBillNoId());
-			if (bills == null) {
-				throw new RuntimeException("未找到主表信息");
-			}
-			if (!losBFeesTemplate.getFeesTemplateItemsList().isEmpty()) {
-				int count = 1;
-				for (FeesTemplateItems items : losBFeesTemplate.getFeesTemplateItemsList()) {
-					FeeCenter feeCenter = new FeeCenter();
-
-					feeCenter.setElementsCnName(items.getElementsCnName());
-					feeCenter.setElementsEnName(items.getElementsEnName());
-					feeCenter.setElementsId(items.getElementsId());
-					feeCenter.setElementsCode(items.getElementsCode());
-
-					feeCenter.setPid(bills.getId());
-					feeCenter.setBillNo(bills.getBillNo());
-					feeCenter.setBusinessType(bills.getBusinessType());
-					feeCenter.setBillType(bills.getSeaType());
-					feeCenter.setBillDate(bills.getBillDate());
-					feeCenter.setBillCorpId(bills.getCorpId());
-					feeCenter.setBillCorpCnName(bills.getCorpCnName());
-					feeCenter.setBillCorpEnName(bills.getCorpEnName());
-					feeCenter.setMblno(bills.getMblno());
-					feeCenter.setEtd(bills.getEtdDate());
-					feeCenter.setDc(losBFeesTemplate.getDc());
-					feeCenter.setSort(count);
-					count++;
-					feeCenter.setCorpId(items.getCorpId());
-					feeCenter.setCorpCnName(items.getCorpCnName());
-					feeCenter.setCorpEnName(items.getCorpEnName());
-					feeCenter.setShortName(items.getCorpCnName());
-					feeCenter.setFeeId(items.getFeeId());
-					feeCenter.setFeeCode(items.getFeeCode());
-					feeCenter.setFeeCnName(items.getFeeCnName());
-					feeCenter.setFeeEnName(items.getFeeEnName());
-					feeCenter.setUnitNo(items.getUnitNo());
-					feeCenter.setPrice(items.getPrice());
-					feeCenter.setCurCode(items.getCurCode());
-					if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
-						BCurrency bCurrency = new BCurrency();
-						bCurrency.setDate(bills.getEtdDate());
-						bCurrency.setDc(losBFeesTemplate.getDc());
-						List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
-						if (!bCurrencyList.isEmpty()) {
-							BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
-							if (currency != null) {
-								feeCenter.setExrate(currency.getExrate());
-							} else {
-								throw new RuntimeException("未找到汇率信息");
-							}
-						}
-					}
-					if ("按票".equals(items.getQuantityRule())) {
-						if ("JOB".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(new BigDecimal("1"));
-							feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于JOB!";
-							continue;
-						}
-					} else if ("按重量".equals(items.getQuantityRule())) {
-						if ("KGS".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(bills.getGrossWeight());
-							feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于KGS!";
-							continue;
-						}
-					} else if ("按尺码".equals(items.getQuantityRule())) {
-						if ("CBM".equals(items.getUnitNo())) {
-							feeCenter.setQuantity(new BigDecimal("1"));
-							feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-						} else {
-							text += "费用:" + items.getFeeCnName() + "计量单位不等于CBM!";
-							continue;
-						}
-					} else {
-						feeCenter.setQuantity(new BigDecimal("1"));
-						feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-					}
-					if (ObjectUtils.isNotNull(feeCenter.getAmount())) {
-						feeCenter.setAmount(new BigDecimal("0"));
-					}
-					list.add(feeCenter);
-				}
-			}
-			this.saveOrUpdateBatch(list);
 		}
 		if (ObjectUtils.isNotNull(text)) {
 			return R.data(list, text + "未导入!!!");
@@ -546,15 +329,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submitList(List<FeeCenter> list) {
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-			deptId = AuthUtil.getDeptId();
-			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
+				deptName = res.getData();
 			}
 		}
 		List<FeeCenter> feeCenterList = new ArrayList<>();
@@ -587,63 +369,34 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					feeCenter.setUpdateTime(new Date());
 					feeCenter.setUpdateUserName(AuthUtil.getUserName());
 				}
-
-				/** --------------------金额计算-------------------------**/
-				// 去税金额 = 数量quantity * 单价price
-				BigDecimal amountNet = new BigDecimal("0.00");
-				// 税额 = 去税金额amountNet * 税率taxRateSum
-				BigDecimal amountTax = new BigDecimal("0.00");
-				// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
-				BigDecimal amount = new BigDecimal("0.00");
-				//总税率  = 税率taxRate + 附加税率surchargeRate
-				BigDecimal taxRate = new BigDecimal("0.00");
-				// 税率 = 总税率/100
-				BigDecimal taxRateSum = new BigDecimal("0.00");
+				// 金额
+				BigDecimal amount = feeCenter.getAmount();
 
 				//计算字段null值处理
 				feeCenter.setQuantity(ObjectUtils.isNotNull(feeCenter.getQuantity()) ? feeCenter.getQuantity() : new BigDecimal("0.00"));
 				feeCenter.setPrice(ObjectUtils.isNotNull(feeCenter.getPrice()) ? feeCenter.getPrice() : new BigDecimal("0.00"));
-				feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
-				feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
-				feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
 				feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
-
-				amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
-					.setScale(2, RoundingMode.HALF_UP);
-				taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
-				taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
-				amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
-				amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
-
 				//判断是否是本位币
 				if ("CNY".equals(feeCenter.getCurCode())) {
-					feeCenter.setAmountNetLoc(amountNet);
-					feeCenter.setAmountTaxLoc(amountTax);
 					feeCenter.setAmountLoc(amount);
-					feeCenter.setAmountDiscountLoc(amount);
 				} else {
-					feeCenter.setAmountNetLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountNet, "", "1"));
-					feeCenter.setAmountTaxLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amountTax, "", "1"));
 					feeCenter.setAmountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
-					feeCenter.setAmountDiscountLoc(bCurrencyService.converterCny(feeCenter.getCurCode(), amount, "", "1"));
 				}
-				feeCenter.setAmountNet(amountNet);
-				feeCenter.setAmountTax(amountTax);
 				feeCenter.setAmount(amount);
 				feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
 				feeCenterList.add(feeCenter);
 			}
 			this.saveOrUpdateBatch(feeCenterList);
 
-			BigDecimal amountDr = new BigDecimal("0.00");
-			BigDecimal amountCr = new BigDecimal("0.00");
-			BigDecimal amountProfit = new BigDecimal("0.00");
-			BigDecimal amountDrUsd = new BigDecimal("0.00");
-			BigDecimal amountCrUsd = new BigDecimal("0.00");
-			BigDecimal amountProfitUsd = new BigDecimal("0.00");
+			BigDecimal amountDr;
+			BigDecimal amountCr;
+			BigDecimal amountProfit;
+			BigDecimal amountDrUsd;
+			BigDecimal amountCrUsd;
+			BigDecimal amountProfitUsd;
 			BigDecimal amountDrLoc = new BigDecimal("0.00");
 			BigDecimal amountCrLoc = new BigDecimal("0.00");
-			BigDecimal amountProfitLoc = new BigDecimal("0.00");
+			BigDecimal amountProfitLoc;
 			amountDr = list.stream().filter(e -> "D".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			amountDrUsd = list.stream().filter(e -> "D".equals(e.getDc()) && "USD".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 			amountCr = list.stream().filter(e -> "C".equals(e.getDc()) && "CNY".equals(e.getCurCode())).map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -766,142 +519,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 				bills.setAmountCrLoc(amountCrLoc);
 				bills.setAmountProfitLoc(amountProfitLoc);
 				billsMapper.updateById(bills);
-			} else if ("AE".equals(list.get(0).getBusinessType()) || "AI".equals(list.get(0).getBusinessType())) {
-				AeaBills aeaBills = aeaBillsMapper.selectById(list.get(0).getPid());
-				//主单应加上分单费用
-				if ("MM".equals(aeaBills.getBillType())) {
-					List<AeaBills> details = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
-						.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
-						.eq(AeaBills::getIsDeleted, 0)
-						.eq(AeaBills::getMasterId, aeaBills.getId()));
-					if (!details.isEmpty()) {
-						amountDr = amountDr.add(details.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCr = amountCr.add(details.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrUsd = amountDrUsd.add(details.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrUsd = amountCrUsd.add(details.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountDrLoc = amountDrLoc.add(details.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						amountCrLoc = amountCrLoc.add(details.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-
-					}
-				} else if ("MH".equals(aeaBills.getBillType())) {
-					AeaBills details = aeaBillsMapper.selectById(aeaBills.getMasterId());
-					//重新计算主单合计
-					if (details != null) {
-						BigDecimal amountDrM = new BigDecimal("0.00");
-						BigDecimal amountCrM = new BigDecimal("0.00");
-						BigDecimal amountProfitM = new BigDecimal("0.00");
-						BigDecimal amountDrUsdM = new BigDecimal("0.00");
-						BigDecimal amountCrUsdM = new BigDecimal("0.00");
-						BigDecimal amountProfitUsdM = new BigDecimal("0.00");
-						BigDecimal amountDrLocM = new BigDecimal("0.00");
-						BigDecimal amountCrLocM = new BigDecimal("0.00");
-						BigDecimal amountProfitLocM = new BigDecimal("0.00");
-						BigDecimal quantityM = new BigDecimal("0.00");
-						BigDecimal grossWeightM = new BigDecimal("0.00");
-						BigDecimal measurementM = new BigDecimal("0.00");
-						List<FeeCenter> feeCenters = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-							.eq(FeeCenter::getIsDeleted, 0)
-							.eq(FeeCenter::getPid, details.getId()));
-						for (FeeCenter item : feeCenters) {
-							if ("C".equals(item.getDc())) {
-								if ("USD".equals(item.getCurCode())) {
-									amountCrUsdM = amountCrUsdM.add(item.getAmount());
-								} else if ("CNY".equals(item.getCurCode())) {
-									amountCrM = amountCrM.add(item.getAmount());
-								} else {
-									BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
-									amountCrUsdM = amountCrUsdM.add(usd);
-								}
-							} else {
-								if ("USD".equals(item.getCurCode())) {
-									amountDrUsdM = amountDrUsdM.add(item.getAmount());
-								} else if ("CNY".equals(item.getCurCode())) {
-									amountDrM = amountDrM.add(item.getAmount());
-								} else {
-									BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
-									amountDrUsdM = amountDrUsdM.add(usd);
-								}
-							}
-						}
-						List<AeaBills> billsList = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
-							.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
-							.eq(AeaBills::getIsDeleted, 0)
-							.eq(AeaBills::getMasterId, details.getId()));
-						List<AeaBills> billsLists = billsList.stream().filter(e -> !e.getId().equals(aeaBills.getId())).collect(Collectors.toList());
-						if (!billsLists.isEmpty()) {
-							amountDrM = amountDrM.add(billsLists.stream().map(AeaBills::getAmountDr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrM = amountCrM.add(billsLists.stream().map(AeaBills::getAmountCr).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountDrUsdM = amountDrUsdM.add(billsLists.stream().map(AeaBills::getAmountDrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrUsdM = amountCrUsdM.add(billsLists.stream().map(AeaBills::getAmountCrUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountDrLocM = amountDrLocM.add(billsLists.stream().map(AeaBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							amountCrLocM = amountCrLocM.add(billsLists.stream().map(AeaBills::getAmountCrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							quantityM = quantityM.add(billsLists.stream().map(AeaBills::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							grossWeightM = grossWeightM.add(billsLists.stream().map(AeaBills::getGrossWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-							measurementM = measurementM.add(billsLists.stream().map(AeaBills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
-						}
-						amountDrM = amountDrM.add(amountDr);
-						amountCrM = amountCrM.add(amountCr);
-						amountDrUsdM = amountDrUsdM.add(amountDrUsd);
-						amountCrUsdM = amountCrUsdM.add(amountCrUsd);
-						amountDrLocM = amountDrLocM.add(amountDrLoc);
-						amountCrLocM = amountCrLocM.add(amountCrLoc);
-						//利润 = 收 - 付
-						amountProfitM = amountDrM.subtract(amountCrM);
-						amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
-						amountDrLocM = amountDrLocM.add(bCurrencyService.converterCny("USD", amountDrUsdM, "D", "1")).add(amountDrM);
-						amountCrLocM = amountCrLocM.add(bCurrencyService.converterCny("USD", amountCrUsdM, "C", "1")).add(amountCrM);
-						amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
-						details.setAmountDr(amountDrM);
-						details.setAmountCr(amountCrM);
-						details.setAmountProfit(amountProfitM);
-						details.setAmountDrUsd(amountDrUsdM);
-						details.setAmountCrUsd(amountCrUsdM);
-						details.setAmountProfitUsd(amountProfitUsdM);
-						details.setAmountDrLoc(amountDrLocM);
-						details.setAmountCrLoc(amountCrLocM);
-						details.setAmountProfitLoc(amountProfitLocM);
-						details.setQuantity(quantityM);
-						details.setGrossWeight(grossWeightM);
-						details.setMeasurement(measurementM);
-						aeaBillsMapper.updateById(details);
-					}
-				}
-				//利润 = 收 - 付
-				amountProfit = amountDr.subtract(amountCr);
-				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
-				amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd, "D", "1")).add(amountDr);
-				amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd, "C", "1")).add(amountCr);
-				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
-				aeaBills.setAmountDr(amountDr);
-				aeaBills.setAmountCr(amountCr);
-				aeaBills.setAmountProfit(amountProfit);
-				aeaBills.setAmountDrUsd(amountDrUsd);
-				aeaBills.setAmountCrUsd(amountCrUsd);
-				aeaBills.setAmountProfitUsd(amountProfitUsd);
-				aeaBills.setAmountDrLoc(amountDrLoc);
-				aeaBills.setAmountCrLoc(amountCrLoc);
-				aeaBills.setAmountProfitLoc(amountProfitLoc);
-				aeaBillsMapper.updateById(aeaBills);
-			} else if ("BGSE".equals(list.get(0).getBusinessType()) || "BGSI".equals(list.get(0).getBusinessType())
-				|| "BGAE".equals(list.get(0).getBusinessType()) || "BGAI".equals(list.get(0).getBusinessType())) {
-				CustomsDeclaration customsDeclaration = customsDeclarationMapper.selectById(list.get(0).getPid());
-				//利润 = 收 - 付
-				amountProfit = amountDr.subtract(amountCr);
-				amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
-				amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd, "D", "1")).add(amountDr);
-				amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd, "C", "1")).add(amountCr);
-				amountProfitLoc = amountDrLoc.subtract(amountCrLoc);
-				customsDeclaration.setAmountDr(amountDr);
-				customsDeclaration.setAmountCr(amountCr);
-				customsDeclaration.setAmountProfit(amountProfit);
-				customsDeclaration.setAmountDrUsd(amountDrUsd);
-				customsDeclaration.setAmountCrUsd(amountCrUsd);
-				customsDeclaration.setAmountProfitUsd(amountProfitUsd);
-				customsDeclaration.setAmountDrLoc(amountDrLoc);
-				customsDeclaration.setAmountCrLoc(amountCrLoc);
-				customsDeclaration.setAmountProfitLoc(amountProfitLoc);
-				customsDeclarationMapper.updateById(customsDeclaration);
 			}
 		} else {
 			R.fail("请选择明细");
@@ -912,15 +529,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submitListOptimization(List<FeeCenter> list) {
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-			deptId = AuthUtil.getDeptId();
-			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
+				deptName = res.getData();
 			}
 		}
 		List<FeeCenter> feeCenterList = new ArrayList<>();
@@ -1043,55 +659,6 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 				}
 			}
-		} else if ("KYCK".equals(type) || "KYJK".equals(type)) {
-			AeaBills bills = aeaBillsMapper.selectById(billId);
-			if (bills != null) {
-				if ("MM".equals(bills.getBillType())) {
-					List<AeaBills> billsList = aeaBillsMapper.selectList(new LambdaQueryWrapper<AeaBills>()
-						.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
-						.eq(AeaBills::getIsDeleted, 0)
-						.eq(AeaBills::getMasterId, bills.getId())
-						.eq(AeaBills::getMasterBillNo, bills.getBillNo()));
-					if (!billsList.isEmpty()) {
-						List<Long> billIds;
-						billIds = billsList.stream().map(AeaBills::getId).collect(Collectors.toList());
-						if (!billIds.isEmpty()) {
-							billIds.add(billId);
-						} else {
-							billIds = new ArrayList<>();
-							billIds.add(billId);
-						}
-						List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-							.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-							.eq(FeeCenter::getIsDeleted, 0)
-							.eq(FeeCenter::getDc, dc)
-							.in(FeeCenter::getPid, billIds));
-						if (!feeCenterList.isEmpty()) {
-							corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-						}
-					}
-				}
-				List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getDc, dc)
-					.eq(FeeCenter::getPid, billId));
-				if (!feeCenterList.isEmpty()) {
-					corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-				}
-			}
-		} else if ("BGSE".equals(type) || "BGSI".equals(type) || "BGAI".equals(type) || "BGAE".equals(type)) {
-			CustomsDeclaration bills = customsDeclarationMapper.selectById(billId);
-			if (bills != null) {
-				List<FeeCenter> feeCenterList = baseMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
-					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
-					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getDc, dc)
-					.eq(FeeCenter::getPid, billId));
-				if (!feeCenterList.isEmpty()) {
-					corpIds = feeCenterList.stream().map(FeeCenter::getCorpId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-				}
-			}
 		} else if ("AMEND".equals(type)) {
 			Amends amends = amendsMapper.selectById(billId);
 			if (amends != null) {
@@ -1119,15 +686,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submitBox(FeeCenter feeCenter) {
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
-		if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
-			deptId = AuthUtil.getDeptId();
-			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
+				deptName = res.getData();
 			}
 		}
 		if (ObjectUtils.isNotNull(feeCenter.getBillCorpId())) {
@@ -1165,15 +731,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submitListBox(List<FeeCenter> list) {
-		String deptId = "";
+		String deptId = AuthUtil.getDeptId();
 		String deptName = "";
-		String branchId = deptUtils.getDeptPid() + "";
+		String branchId = AuthUtil.getDeptId();
 		//获取部门ids对应中文名
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
-			deptId = AuthUtil.getDeptId();
-			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			R<String> res = sysClient.getDeptName(Long.parseLong(AuthUtil.getDeptId()));
 			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
-				deptName = String.join(",", res.getData());
+				deptName = res.getData();
 			}
 		}
 		List<BCorps> bCorpsList = bCorpsService.list(new LambdaQueryWrapper<BCorps>()
@@ -1274,4 +839,199 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 		return R.data(feeCenterList);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R templateImportBatch(String billsIds, String templateId, String dc) {
+		List<FeesTemplateItems> feesTemplateItemsList = feesTemplateItemsService.list(new LambdaQueryWrapper<FeesTemplateItems>()
+			.eq(FeesTemplateItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FeesTemplateItems::getIsDeleted, 0)
+			.eq(FeesTemplateItems::getPid, templateId)
+			.eq(FeesTemplateItems::getDc, dc));
+		if (feesTemplateItemsList.isEmpty()) {
+			throw new RuntimeException("未查到模板明细");
+		}
+		List<FeesTemplateSonItems> sonItemsList = feesTemplateSonItemsService.list(new LambdaQueryWrapper<FeesTemplateSonItems>()
+			.eq(FeesTemplateSonItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FeesTemplateSonItems::getIsDeleted, 0)
+			.in(FeesTemplateSonItems::getPpid, feesTemplateItemsList.stream().map(FeesTemplateItems::getId).collect(Collectors.toList()))
+			.eq(FeesTemplateSonItems::getDc, dc));
+		if (sonItemsList.isEmpty()) {
+			throw new RuntimeException("未查到模板明细");
+		}
+		List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
+			.eq(Bills::getTenantId, AuthUtil.getTenantId())
+			.eq(Bills::getIsDeleted, 0)
+			.eq(Bills::getBranchId, AuthUtil.getTenantId())
+			.apply("find_in_set(id,'" + billsIds + "')"));
+		if (billsList.isEmpty()) {
+			throw new RuntimeException("未查到单据信息");
+		}
+		List<PreContainers> preContainersList = preContainersService.list(new LambdaQueryWrapper<PreContainers>()
+			.eq(PreContainers::getTenantId, AuthUtil.getTenantId())
+			.eq(PreContainers::getIsDeleted, 0)
+			.apply("find_in_set(pid,'" + billsIds + "')"));
+		List<FeeCenter> list = new ArrayList<>();
+		StringBuilder text = new StringBuilder();
+		for (Bills bills : billsList) {
+			List<PreContainers> preContainers = new ArrayList<>();
+			if (!preContainersList.isEmpty()) {
+				preContainers = preContainersList.stream().filter(e -> e.getPid().equals(bills.getId())).collect(Collectors.toList());
+			}
+			int count = 1;
+			for (FeesTemplateSonItems items : sonItemsList) {
+				FeesTemplateItems templateItems = feesTemplateItemsList.stream().filter(e -> e.getId().equals(items.getPpid()))
+					.findFirst().orElse(null);
+				if (templateItems == null) {
+					throw new RuntimeException("模版数据错误,请联系管理员");
+				}
+				FeeCenter feeCenter = new FeeCenter();
+				feeCenter.setElementsCnName(templateItems.getElementsCnName());
+				feeCenter.setElementsEnName(templateItems.getElementsEnName());
+				feeCenter.setElementsId(templateItems.getElementsId());
+				feeCenter.setElementsCode(templateItems.getElementsCode());
+				feeCenter.setPid(bills.getId());
+				feeCenter.setCntrNo(bills.getQuantityCntrTypesDescr());
+				feeCenter.setBillNo(bills.getBillNo());
+				feeCenter.setBusinessType(bills.getBusinessType());
+				feeCenter.setBillType(bills.getBillType());
+				feeCenter.setBillDate(bills.getBillDate());
+				feeCenter.setBillCorpId(bills.getCorpId());
+				feeCenter.setBillCorpCnName(bills.getCorpCnName());
+				feeCenter.setBillCorpEnName(bills.getCorpEnName());
+				feeCenter.setBillShortName(bills.getCorpCnName());
+				feeCenter.setLineId(bills.getLineId());
+				feeCenter.setLineCnName(bills.getLineCnName());
+				feeCenter.setLineEnName(bills.getLineEnName());
+				feeCenter.setVesselId(bills.getVesselId());
+				feeCenter.setVesselCnName(bills.getVesselCnName());
+				feeCenter.setVesselEnName(bills.getVesselEnName());
+				feeCenter.setVoyageNo(bills.getVoyageNo());
+				feeCenter.setMblno(bills.getMblno());
+				feeCenter.setHblno(bills.getHblno());
+				feeCenter.setEtd(bills.getEtd());
+				feeCenter.setEta(bills.getEta());
+				feeCenter.setPolId(bills.getPolId());
+				feeCenter.setPolCode(bills.getPolCode());
+				feeCenter.setPolCnName(bills.getPolCnName());
+				feeCenter.setPolEnName(bills.getPolEnName());
+				feeCenter.setPodId(bills.getPodId());
+				feeCenter.setPodCode(bills.getPodCode());
+				feeCenter.setPodCnName(bills.getPodCnName());
+				feeCenter.setPodEnName(bills.getPodEnName());
+				feeCenter.setDc(items.getDc());
+				feeCenter.setPaymode(bills.getMpaymode());
+				feeCenter.setSort(count);
+				count++;
+				if ("客户".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getCorpId());
+					feeCenter.setCorpCnName(bills.getCorpCnName());
+					feeCenter.setCorpEnName(bills.getCorpEnName());
+					feeCenter.setShortName(bills.getShortName());
+				} else if ("船公司".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getCarrierId());
+					feeCenter.setCorpCnName(bills.getCarrierCnName());
+					feeCenter.setCorpEnName(bills.getCarrierEnName());
+					feeCenter.setShortName(bills.getCarrierCnName());
+				} else if ("场站".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getCyId());
+					feeCenter.setCorpCnName(bills.getCyCnName());
+					feeCenter.setCorpEnName(bills.getCyEnName());
+					feeCenter.setShortName(bills.getCyCnName());
+				} else if ("订舱代理".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getBookingAgentId());
+					feeCenter.setCorpCnName(bills.getBookingAgentCnName());
+					feeCenter.setCorpEnName(bills.getBookingAgentEnName());
+					feeCenter.setShortName(bills.getBookingAgentCnName());
+				} else if ("收货代理".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getMconsigneeId());
+					feeCenter.setCorpCnName(bills.getMconsigneeCnName());
+					feeCenter.setCorpEnName(bills.getMconsigneeEnName());
+					feeCenter.setShortName(bills.getMconsigneeCnName());
+				} else if ("MBL通知人".equals(templateItems.getCorpType())) {
+					feeCenter.setCorpId(bills.getMnotifyId());
+					feeCenter.setCorpCnName(bills.getMnotifyCnName());
+					feeCenter.setCorpEnName(bills.getMnotifyEnName());
+					feeCenter.setShortName(bills.getMnotifyCnName());
+				} else {
+					feeCenter.setCorpId(templateItems.getCorpId());
+					feeCenter.setCorpCnName(templateItems.getCorpCnName());
+					feeCenter.setCorpEnName(templateItems.getCorpEnName());
+					feeCenter.setShortName(templateItems.getCorpCnName());
+				}
+				feeCenter.setFeeId(items.getFeeId());
+				feeCenter.setFeeCode(items.getFeeCode());
+				feeCenter.setFeeCnName(items.getFeeCnName());
+				feeCenter.setFeeEnName(items.getFeeEnName());
+				feeCenter.setUnitNo(items.getUnitNo());
+				feeCenter.setPrice(items.getSalesPrice());
+				feeCenter.setCurCode(items.getCurCode());
+				if (ObjectUtils.isNotNull(feeCenter.getCurCode())) {
+					BCurrency bCurrency = new BCurrency();
+					bCurrency.setDate(bills.getEtd());
+					bCurrency.setDc(items.getDc());
+					List<BCurrency> bCurrencyList = bCurrencyService.getExrate(bCurrency);
+					if (!bCurrencyList.isEmpty()) {
+						BCurrency currency = bCurrencyList.stream().filter(e -> e.getCode().equals(feeCenter.getCurCode())).findFirst().orElse(null);
+						if (currency != null) {
+							feeCenter.setExrate(currency.getExrate());
+						} else {
+							throw new RuntimeException("未找到汇率信息");
+						}
+					}
+				}
+				if ("按箱型".equals(items.getQuantityRule())) {
+					if (preContainers.isEmpty()) {
+						text.append("费用:").append(items.getFeeCnName()).append("未找到集装箱信息!");
+						continue;
+					}
+					Integer quantity = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(0, Integer::sum);
+					if (quantity == 0) {
+						text.append("费用:").append(items.getFeeCnName()).append("集装箱数量为零!");
+						continue;
+					}
+					feeCenter.setQuantity(new BigDecimal(quantity + ""));
+					feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				} else if ("按票".equals(items.getQuantityRule())) {
+					feeCenter.setQuantity(new BigDecimal("1"));
+					feeCenter.setAmount(feeCenter.getPrice().multiply(new BigDecimal("1")));
+				} else if ("按重量".equals(items.getQuantityRule())) {
+					feeCenter.setQuantity(bills.getGrossWeight());
+					feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				} else if ("按TEU".equals(items.getQuantityRule())) {
+					if (preContainers.isEmpty()) {
+						text.append("费用:").append(items.getFeeCnName()).append("未找到集装箱信息!");
+						continue;
+					}
+					BigDecimal quantityTeu = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+					Integer quantityGP = preContainers.stream().filter(e -> items.getUnitNo().equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).mapToInt(Integer::intValue).sum();
+					BigDecimal quantity = quantityTeu.multiply(new BigDecimal(quantityGP + ""));
+					if (quantity.compareTo(new BigDecimal("0")) == 0) {
+						text.append("费用:").append(items.getFeeCnName()).append("集装箱teu或数量为零!");
+						continue;
+					}
+					feeCenter.setQuantity(new BigDecimal(quantity + ""));
+					feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				} else if ("按尺码".equals(items.getQuantityRule())) {
+					feeCenter.setQuantity(bills.getMeasurement());
+					feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				} else {
+					feeCenter.setQuantity(new BigDecimal("1"));
+					feeCenter.setAmount(feeCenter.getPrice().multiply(feeCenter.getQuantity()));
+				}
+				if (ObjectUtils.isNull(feeCenter.getAmount())) {
+					feeCenter.setAmount(new BigDecimal("0"));
+				}
+				list.add(feeCenter);
+			}
+		}
+		if (!list.isEmpty()) {
+			this.saveOrUpdateBatch(list);
+		}
+		if (ObjectUtils.isNotNull(text.toString())) {
+			return R.data(list, text + "未导入!!!");
+		} else {
+			return R.data(list);
+		}
+	}
+
 }

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

@@ -321,7 +321,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 				feeCenterItem.setAccStatus(1);
 				feeCenterItem.setAccById(AuthUtil.getUserId());
 				feeCenterItem.setAccByName(AuthUtil.getUserName());
-				feeCenterItem.setAuditStatus("2");
+				feeCenterItem.setAuditStatus("4");
 				feeCenterList.add(feeCenterItem);
 			}
 		}

File diff suppressed because it is too large
+ 171 - 604
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java


+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/BoxNumberProfitMapper.xml

@@ -88,7 +88,7 @@
             and operator_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '3'">
-            and src_dept_id = #{data.selecTypeId}
+            and customer_service_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '4'">
             and get_src_id = #{data.selecTypeId}
@@ -158,7 +158,7 @@
             and operator_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '3'">
-            and src_dept_id = #{data.selecTypeId}
+            and customer_service_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '4'">
             and src_id = #{data.selecTypeId}

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/view/mapper/FinanceProfitMapper.xml

@@ -125,7 +125,7 @@
             and seb.operator_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '3'">
-            and seb.src_dept_id = #{data.selecTypeId}
+            and seb.customer_service_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '4'">
             and seb.src_id = #{data.selecTypeId}
@@ -243,7 +243,7 @@
             and seb.operator_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '3'">
-            and seb.src_dept_id = #{data.selecTypeId}
+            and seb.customer_service_id = #{data.selecTypeId}
         </if>
         <if test="data.selecType != null and data.selecType != '' and data.selecType == '4'">
             and seb.src_id = #{data.selecTypeId}

+ 18 - 0
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java

@@ -18,6 +18,7 @@ package org.springblade.system.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.*;
@@ -243,6 +244,23 @@ public class DeptController extends BladeController {
 		return R.data(deptService.getDetailPol(dept));
 	}
 
+	/**
+	 * 获取所属公司
+	 */
+	@GetMapping("/getDeptList")
+	public R<List<Dept>> getDeptList(@RequestParam(value = "id",required = false) Long id,
+									 @RequestParam(value = "polId",required = false) Long polId,
+									 @RequestParam(value = "deptName",required = false) String deptName,
+									 @RequestParam(value = "fullName",required = false) String fullName) {
+		List<Dept> deptList = deptService.list(new LambdaQueryWrapper<Dept>()
+			.eq(ObjectUtils.isNotNull(id), Dept::getId, id)
+			.like(ObjectUtils.isNotNull(polId), Dept::getPolId, polId)
+			.like(ObjectUtils.isNotNull(deptName), Dept::getDeptName, deptName)
+			.like(ObjectUtils.isNotNull(fullName), Dept::getFullName, fullName)
+		);
+		return R.data(deptList);
+	}
+
 
 	/**
 	 * 顶级部门列表

+ 1 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -527,6 +527,7 @@ public class UserController {
 		LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.like(StringUtils.isNotBlank(userVO.getRealName()), User::getRealName, userVO.getRealName())
 			.like(ObjectUtil.isNotEmpty(userVO.getDeptPid()), User::getDeptPid, userVO.getDeptPid())
+			.like(ObjectUtil.isNotEmpty(userVO.getDeptId()), User::getDeptId, userVO.getDeptId())
 			.eq(User::getTenantId, AuthUtil.getTenantId())
 			.like(ObjectUtil.isNotEmpty(userVO.getRealName()), User::getRealName, userVO.getRealName())
 			.eq(User::getIsDeleted, 0);

Some files were not shown because too many files changed in this diff