reconciliationPOS = reconciliationDomainService.queryList(reconciliationDO);
for (ReconciliationPO reconciliationPO : reconciliationPOS) {
Long reconciliationId = reconciliationPO.getReconciliationId();
AjaxResult tmsOrderSettlementDetails = wlhyServiceFeign.getById(reconciliationId);
@@ -160,7 +155,7 @@ public class ReconciliationApplicationService {
}
}
}
- return reconciliationPOS;
+ return reconciliationPOS;*/
return reconciliationDomainService.queryList(reconciliationDO);
}
@@ -699,4 +694,4 @@ public class ReconciliationApplicationService {
{
return reconciliationDomainService.editIsInvoice(innerNumber,isInvoice,invoiceId,invoiceMakeTime,applyNumber);
}
-}
+}
\ No newline at end of file
diff --git a/mhd_finance/src/main/java/com/linke/finance/domain/tmsReceipt/entity/TmsReceipt.java b/mhd_finance/src/main/java/com/linke/finance/domain/tmsReceipt/entity/TmsReceipt.java
index 51d7de86f..989f9148b 100644
--- a/mhd_finance/src/main/java/com/linke/finance/domain/tmsReceipt/entity/TmsReceipt.java
+++ b/mhd_finance/src/main/java/com/linke/finance/domain/tmsReceipt/entity/TmsReceipt.java
@@ -2,15 +2,16 @@ package com.linke.finance.domain.tmsReceipt.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
-import com.mhd.common.core.annotation.Excel;
-import io.swagger.annotations.ApiModelProperty;
-import com.mhd.common.core.web.domain.BaseVOEntity;
-import java.math.BigDecimal;
-import lombok.Data;
-import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
+import java.math.BigDecimal;
+import java.util.Date;
+
/**
* 收款单对象 tms_receipt
@@ -43,9 +44,9 @@ public class TmsReceipt extends BaseVOEntity{
@Excel(name = "收款单号")
private String receivePaymentNumber;
-// @ApiModelProperty("结算方id")
-// @Excel(name = "结算方id")
-// private String settlementPartyId;
+ @ApiModelProperty("结算方id")
+ @Excel(name = "结算方id")
+ private String settlementPartyId;
@ApiModelProperty("结算方名称")
@Excel(name = "结算方名称")
private String settlementPartyName;
@@ -118,4 +119,4 @@ public class TmsReceipt extends BaseVOEntity{
@ApiModelProperty("结算币种")
private String settlementCurrency;
-}
+}
\ No newline at end of file
diff --git a/mhd_transport/src/main/java/com/linke/transport/application/service/warehouse/inBoundOrder/InboundOrderService.java b/mhd_transport/src/main/java/com/linke/transport/application/service/warehouse/inBoundOrder/InboundOrderService.java
index 83a01c4a7..75bc941a2 100644
--- a/mhd_transport/src/main/java/com/linke/transport/application/service/warehouse/inBoundOrder/InboundOrderService.java
+++ b/mhd_transport/src/main/java/com/linke/transport/application/service/warehouse/inBoundOrder/InboundOrderService.java
@@ -22,18 +22,6 @@ import com.linke.transport.interfaces.dto.warehouse.inBoundOrder.InboundOrderDTO
import com.linke.transport.interfaces.dto.warehouse.inBoundOrder.InboundOrderDTO.Create;
import com.mhd.common.core.utils.OrderSequence;
import com.mhd.common.security.utils.SecurityUtils;
-import com.mhd.system.api.model.LoginUser;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -43,6 +31,11 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
/**
*
* 入库单 服务实现类
@@ -471,4 +464,4 @@ public class InboundOrderService extends ServiceImpl
Date: Mon, 12 Jan 2026 13:53:01 +0800
Subject: [PATCH 19/33] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=89=AF=E9=A9=BE?=
=?UTF-8?q?=E7=BB=91=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DriverVehicleBindApplicationService.java | 11 ++++
.../service/UserDriverApplicationService.java | 21 ++++++
.../user/interfaces/facade/UserDriverAPI.java | 13 ++++
.../vehicle/VehicleApplicationService.java | 64 ++++++++++++++++---
.../feign/UserServiceFeign.java | 14 ++++
.../interfaces/dto/vehicle/VehicleDto.java | 3 +
.../interfaces/facade/vehicle/VehicleApi.java | 4 +-
7 files changed, 119 insertions(+), 11 deletions(-)
diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/DriverVehicleBindApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/DriverVehicleBindApplicationService.java
index dcd35b612..0cb1540d1 100644
--- a/mhd-user-center/src/main/java/com/mhd/user/application/service/DriverVehicleBindApplicationService.java
+++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/DriverVehicleBindApplicationService.java
@@ -4,14 +4,17 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.mhd.user.domain.userAggregate.entity.DriverVehicleBind;
+import com.mhd.user.domain.userAggregate.repository.mapper.DriverVehicleBindMapper;
import com.mhd.user.domain.userAggregate.repository.po.DriverVehicleBindPo;
import com.mhd.user.domain.userAggregate.repository.todo.DriverVehicleBindDo;
import com.mhd.user.domain.userAggregate.service.DriverVehicleBindDomainService;
import com.mhd.user.domain.userAggregate.service.UserDriverDomainService;
import com.mhd.system.api.TransportFeign;
import com.mhd.user.interfaces.dto.DriverVehicleBindDto;
+import com.mhd.user.interfaces.dto.addDTO.UserDriverDTO;
import com.mhd.user.interfaces.facadeApi.Po.VehicleDriverBindAppPo;
import com.mhd.common.core.domain.dto.VehicleDto;
import com.mhd.user.domain.userAggregate.repository.po.UserDriverPo;
@@ -49,6 +52,9 @@ public class DriverVehicleBindApplicationService {
private CommonApplicationService commonApplicationService;
@Resource
private UserDriverDomainService userDriverDomainService;
+ @Autowired
+ private DriverVehicleBindMapper driverVehicleBindMapper;
+
/**
* 分页查询司机车辆绑定关系列表
*/
@@ -355,4 +361,9 @@ public class DriverVehicleBindApplicationService {
}
return isTrue;
}
+
+ public int delectDriverBind(UserDriverDTO userDriverDTO) {
+ return driverVehicleBindMapper.delete(new LambdaQueryWrapper().eq(DriverVehicleBind::getDriverBindId,userDriverDTO.getUserId())
+ .eq(DriverVehicleBind::getVehicleId,userDriverDTO.getVehicleId()));
+ }
}
diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserDriverApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserDriverApplicationService.java
index 7300c47c1..1faac74e2 100644
--- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserDriverApplicationService.java
+++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserDriverApplicationService.java
@@ -44,6 +44,8 @@ import com.mhd.user.domain.roleAggregate.entity.RoleEntity;
import com.mhd.user.domain.roleAggregate.repository.todo.RoleDo;
import com.mhd.user.domain.roleAggregate.service.RoleDomainService;
import com.mhd.user.domain.userAggregate.entity.*;
+import com.mhd.user.domain.userAggregate.repository.mapper.DriverVehicleBindMapper;
+import com.mhd.user.domain.userAggregate.repository.mapper.UserMapper;
import com.mhd.user.domain.userAggregate.repository.po.*;
import com.mhd.user.domain.userAggregate.repository.po.UserDriverEnterprisePo;
import com.mhd.user.domain.userAggregate.repository.po.UserDriverPo;
@@ -178,6 +180,10 @@ public class UserDriverApplicationService {
private MotorcadeCollectionDomainService motorcadeCollectionDomainService;
@Resource
private VehicleBindingStrategyFactory vehicleBindingStrategyFactory;
+ @Autowired
+ private DriverVehicleBindMapper driverVehicleBindMapper;
+ @Autowired
+ private UserMapper userMapper;
/**
* @Description 承运人列表查询
@@ -2754,5 +2760,20 @@ public class UserDriverApplicationService {
// }
return motorcade.getDriverEnterpriseCode();
}
+
+ public int bindVehicleForHome(UserDriverDO userDriverDO) {
+ DriverVehicleBind driverVehicleBind = new DriverVehicleBind();
+ driverVehicleBind.setUserId(userDriverDO.getUserId());
+ driverVehicleBind.setVehicleId(userDriverDO.getVehicleId());
+ driverVehicleBind.setDefaultFlag(1);
+ driverVehicleBind.setDelFlag(1);
+ driverVehicleBind.setDriverBindId(userDriverDO.getUserId());
+ UserPo userPo = userMapper.selectByUserId(userDriverDO.getUserId());
+ driverVehicleBind.setBindDriverName(userPo.getUserName());
+ driverVehicleBind.setBindDriverPhone(userPo.getUserPhone());
+ //向网货同步添加绑定关系
+// wlhyDomainService.binding(driverVehicleBind);
+ return driverVehicleBindMapper.insert(driverVehicleBind);
+ }
}
diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserDriverAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserDriverAPI.java
index 0c3e28b4e..21929c130 100644
--- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserDriverAPI.java
+++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserDriverAPI.java
@@ -129,7 +129,20 @@ public class UserDriverAPI extends BaseController {
UserDriverDO userDriverDO = userDriverAssember.toUserDriverDO(userDriverDTO);
return toAjax(userDriverApplicationService.bindVehicle(userDriverDO));
}
+ @Log(title = "承运人管理-绑定车辆", description ="绑定车辆",businessType = BusinessType.UPDATE)
+ @ApiOperation("绑定车辆")
+ @PostMapping("/bindVehicleForHome")
+ public AjaxResult bindVehicleForHome(@RequestBody UserDriverDTO userDriverDTO){
+ UserDriverDO userDriverDO = userDriverAssember.toUserDriverDO(userDriverDTO);
+ return toAjax(userDriverApplicationService.bindVehicleForHome(userDriverDO));
+ }
+ @ApiOperation("删除司机绑定关系")
+ @PostMapping("/driverVehicleBindApi/delectDriverBind")
+ public AjaxResult delectDriverBind(@RequestBody UserDriverDTO userDriverDTO) {
+ return toAjax(driverVehicleBindApplicationService.delectDriverBind(userDriverDTO));
+
+ }
@Log(title = "承运人管理-个体承运人新增绑定车辆", description ="个体承运人新增绑定车辆",businessType = BusinessType.UPDATE)
@ApiOperation("个体承运人新增绑定车辆")
@PostMapping("/bindVehicle1")
diff --git a/mhd_transport/src/main/java/com/linke/transport/application/service/vehicle/VehicleApplicationService.java b/mhd_transport/src/main/java/com/linke/transport/application/service/vehicle/VehicleApplicationService.java
index 934ed4034..dd0f2d811 100644
--- a/mhd_transport/src/main/java/com/linke/transport/application/service/vehicle/VehicleApplicationService.java
+++ b/mhd_transport/src/main/java/com/linke/transport/application/service/vehicle/VehicleApplicationService.java
@@ -2921,14 +2921,16 @@ public class VehicleApplicationService {
*
* @param vehicleDto
* @return
+ *
*/
+ @Transactional(rollbackFor = Exception.class)
public Integer updatePilotDriver(VehicleDto vehicleDto) {
if (vehicleDto.getVehicleId() == null) {
throw new IllegalArgumentException("车辆ID不能为空");
}
- boolean hasPilot1 = StringUtils.hasText(vehicleDto.getPilot1());
- boolean hasPilot2 = StringUtils.hasText(vehicleDto.getPilot2());
+ boolean hasPilot1 = StringUtils.hasText(vehicleDto.getPilot1Id());
+ boolean hasPilot2 = StringUtils.hasText(vehicleDto.getPilot2Id());
// 两个都传了
if (hasPilot1 && hasPilot2) {
@@ -2938,17 +2940,61 @@ public class VehicleApplicationService {
if (!hasPilot1 && !hasPilot2) {
throw new IllegalArgumentException("请选择副驾");
}
- UserDriverDTO userDriverDTO = new UserDriverDTO();
- //将pilot1或是pilot2的id传给userDriverDTO,判断一下谁有值传谁
- userDriverDTO.setUserId(Long.valueOf(hasPilot1 ? vehicleDto.getPilot1Id() : vehicleDto.getPilot2Id()));
- userDriverDTO.setVehicleId(vehicleDto.getVehicleId());
+
+ Vehicle vehicle = vehicleMapper.selectById(vehicleDto.getVehicleId());
+ String modifyPilotId = vehicleDto.getModifyPilotId();
+ if (modifyPilotId != null){
+ UserDriverDTO userDriverDTO1 = new UserDriverDTO();
+ userDriverDTO1.setUserId(Long.valueOf(modifyPilotId));
+ userDriverDTO1.setVehicleId(vehicleDto.getVehicleId());
+ userServiceFeign.delectDriverBind(userDriverDTO1);
+ }
+ if (hasPilot1){
- // 更新
- vehicleMapper.updatePilotDriver(vehicleDto);
+ AjaxResult result = userServiceFeign.getDriverInfoByUserId(Long.valueOf(vehicleDto.getPilot1Id()));
+ UserDriverPo driverInfo = null;
+ if(result != null && "200".equals(String.valueOf(result.get("code")))){
+ // 提取数据
+ driverInfo = JSONUtil.toBean(JSONUtil.toJsonStr(result.get("data")), UserDriverPo.class);
+ vehicle.setPilot1(driverInfo.getUserName());
+ vehicle.setPilot1Id(vehicleDto.getPilot1Id());
+ // 更新车辆信息到数据库
+ vehicleDomainService.updateVehicle(vehicle);
+ // 在user库中的driver_vehicle_bind表中添加一条绑定信息
+ UserDriverDTO userDriverDTO = new UserDriverDTO();
+ userDriverDTO.setUserId(Long.valueOf(vehicleDto.getPilot1Id()));
+ userDriverDTO.setVehicleId(vehicleDto.getVehicleId());
+ userDriverDTO.setVehicleLicensePlateNumber(vehicle.getVehicleLicensePlateNumber());
+ userDriverDTO.setBindSource(2); // 2-副驾绑定
+ userServiceFeign.bindVehicleForHome(userDriverDTO);
+ }
- userServiceFeign.bindVehicle(userDriverDTO);
+ } else if (hasPilot2) {
+ // 如果是pilot2的情况,需要类似处理
+ AjaxResult result = userServiceFeign.getDriverInfoByUserId(Long.valueOf(vehicleDto.getPilot2Id()));
+ UserDriverPo driverInfo = null;
+ if(result != null && "200".equals(String.valueOf(result.get("code")))){
+ // 提取数据
+ driverInfo = JSONUtil.toBean(JSONUtil.toJsonStr(result.get("data")), UserDriverPo.class);
+ vehicle.setPilot2(driverInfo.getUserName());
+ vehicle.setPilot2Id(vehicleDto.getPilot2Id());
+
+ // 更新车辆信息到数据库
+ vehicleDomainService.updateVehicle(vehicle);
+
+ // 在user库中的driver_vehicle_bind表中添加一条绑定信息
+ UserDriverDTO userDriverDTO = new UserDriverDTO();
+ userDriverDTO.setUserId(Long.valueOf(vehicleDto.getPilot2Id()));
+ userDriverDTO.setVehicleId(vehicleDto.getVehicleId());
+ userDriverDTO.setVehicleLicensePlateNumber(vehicle.getVehicleLicensePlateNumber());
+ userDriverDTO.setBindSource(2); // 2-副驾绑定
+
+ userServiceFeign.bindVehicleForHome(userDriverDTO);
+ }
+
+ }
return 1;
diff --git a/mhd_transport/src/main/java/com/linke/transport/infrastructure/feign/UserServiceFeign.java b/mhd_transport/src/main/java/com/linke/transport/infrastructure/feign/UserServiceFeign.java
index 8130fe0b1..a7d4c90a6 100644
--- a/mhd_transport/src/main/java/com/linke/transport/infrastructure/feign/UserServiceFeign.java
+++ b/mhd_transport/src/main/java/com/linke/transport/infrastructure/feign/UserServiceFeign.java
@@ -28,6 +28,19 @@ public interface UserServiceFeign {
@PostMapping("/userDriverApi/bindVehicle")
public AjaxResult bindVehicle(@RequestBody UserDriverDTO userDriverDTO);
+ /**
+ * 添加绑定关系
+ */
+ @PostMapping("/userDriverApi/bindVehicleForHome")
+ public AjaxResult bindVehicleForHome(@RequestBody UserDriverDTO userDriverDTO);
+
+ /**
+ * 删除司机绑定关系
+ */
+ @ApiOperation("删除司机绑定关系")
+ @PostMapping("/driverVehicleBindApi/delectDriverBind")
+ void delectDriverBind(@RequestBody UserDriverDTO userDriverDTO);
+
/**
* @Description 绑定车辆
* @Author Alex
@@ -204,4 +217,5 @@ public interface UserServiceFeign {
@GetMapping("/driverVehicleBindApi/isVehicleBinding/{vehicleLicensePlateNumber}")
R isVehicleBinding(
@PathVariable("vehicleLicensePlateNumber") String vehicleLicensePlateNumber);
+
}
diff --git a/mhd_transport/src/main/java/com/linke/transport/interfaces/dto/vehicle/VehicleDto.java b/mhd_transport/src/main/java/com/linke/transport/interfaces/dto/vehicle/VehicleDto.java
index fb308686f..4f04325cf 100644
--- a/mhd_transport/src/main/java/com/linke/transport/interfaces/dto/vehicle/VehicleDto.java
+++ b/mhd_transport/src/main/java/com/linke/transport/interfaces/dto/vehicle/VehicleDto.java
@@ -437,4 +437,7 @@ public class VehicleDto extends BaseVOEntity implements Serializable
@ApiModelProperty(value = "车辆主体")
private Integer vehicleBody;
+
+ @ApiModelProperty(value = "被修改副驾id")
+ private String modifyPilotId;
}
diff --git a/mhd_transport/src/main/java/com/linke/transport/interfaces/facade/vehicle/VehicleApi.java b/mhd_transport/src/main/java/com/linke/transport/interfaces/facade/vehicle/VehicleApi.java
index 47692c3c7..661c393d5 100644
--- a/mhd_transport/src/main/java/com/linke/transport/interfaces/facade/vehicle/VehicleApi.java
+++ b/mhd_transport/src/main/java/com/linke/transport/interfaces/facade/vehicle/VehicleApi.java
@@ -69,8 +69,8 @@ public class VehicleApi extends BaseController
* 车辆绑定副驾
*/
@Log(title = "车辆管理-车辆绑定副驾", description = "车辆绑定副驾", businessType = BusinessType.UPDATE)
- @PostMapping("/bindVehicle")
- public R bindVehicle(@RequestBody VehicleDto vehicleDto){
+ @GetMapping("/bindVehicle")
+ public R bindVehicle(VehicleDto vehicleDto){
return R.ok(vehicleApplicationService.updatePilotDriver(vehicleDto));
}
From c8493dd658becbcf373c12ffccba92d22a60317e Mon Sep 17 00:00:00 2001
From: 1745237360-cloud <1745237360@qq.com>
Date: Mon, 12 Jan 2026 14:30:00 +0800
Subject: [PATCH 20/33] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?=
=?UTF-8?q?=E7=9A=84bug=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../expenseAccount/ExpenseAccountApi.java | 17 ++++++
.../mapper/basic/ExpenseAccountMapper.xml | 9 +++
.../BusinessDocumentApplicationService.java | 59 ++++++++++++++++++-
...inessDocumentDetaliApplicationService.java | 39 +++++++++++-
.../ReconciliationApplicationService.java | 30 +++++-----
5 files changed, 137 insertions(+), 17 deletions(-)
diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java
index fd4930ff3..4b5392583 100644
--- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java
+++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java
@@ -28,6 +28,8 @@ import javax.annotation.Resource;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
import org.springframework.web.client.RestTemplate;
/**
@@ -99,6 +101,21 @@ public class ExpenseAccountApi extends BaseController{
public AjaxResult selectOtherExpenseAccount(SearchExpenseAccountDTO searchExpenseAccountDTO){
SearchExpenseAccountDO searchExpenseAccountDO = new SearchExpenseAccountDO();
BeanUtils.copyProperties(searchExpenseAccountDTO,searchExpenseAccountDO);
+
+ // 数据权限:根据组织ID实现数据隔离
+ // organizationId=2827(南光)时,查询所有组织的数据;其他组织只查询自己的数据
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null && loginUser.getOrganizationPo() != null) {
+ Long loginUserOrganizationId = loginUser.getOrganizationPo().getOrganizationId();
+ if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
+ // 南光组织(organizationId=2827):可以查询所有组织的数据,不设置 organizationId 过滤条件
+ searchExpenseAccountDO.setOrganizationId(null);
+ } else {
+ // 其他组织:只查询自己组织的数据
+ searchExpenseAccountDO.setOrganizationId(loginUserOrganizationId);
+ }
+ }
+
return AjaxResult.success(expenseAccountApplicationService.selectOtherExpenseAccount(searchExpenseAccountDO));
}
diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml
index 0394fb85a..9e648962c 100644
--- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml
+++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml
@@ -254,6 +254,15 @@
and a.society_status = #{searchExpenseAccountDO.societyStatus}
+
+
+
+
+ and a.organization_id = #{searchExpenseAccountDO.organizationId}
+ and a.organization_name IS NOT NULL
+ and a.organization_name != ''
+ and LENGTH(TRIM(a.organization_name)) > 0
+
and a.del_flag=1
order by show_seq
diff --git a/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocument/BusinessDocumentApplicationService.java b/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocument/BusinessDocumentApplicationService.java
index 495c6d738..0e9f570cf 100644
--- a/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocument/BusinessDocumentApplicationService.java
+++ b/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocument/BusinessDocumentApplicationService.java
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSON;
import com.linke.finance.domain.accountManage.entity.AccountCashWallet;
import com.linke.finance.domain.accountManage.service.AccountCashWalletDomainService;
import com.linke.finance.domain.auditConfiguration.repository.todo.AuditConfigurationDO;
@@ -1406,7 +1407,20 @@ public class BusinessDocumentApplicationService {
BusinessDocumentDetaliDTO detailDto = new BusinessDocumentDetaliDTO();
BeanUtils.copyProperties(detail,detailDto);
- detailDto.setAuditRemark(businessDocumentDetaliDO.getAuditRemark());
+
+ // 确保关键字段的类型正确,避免 TMS 端类型转换错误
+ // 确保 auditRemark 是字符串类型,不为 null(使用最新的审核备注)
+ String auditRemark = businessDocumentDetaliDO.getAuditRemark();
+ if (auditRemark == null) {
+ auditRemark = "";
+ }
+ // 显式设置为字符串类型,确保类型正确
+ detailDto.setAuditRemark(auditRemark);
+
+ // 确保其他关键字段也是正确的类型(虽然已经通过 copyProperties 复制,但显式设置更安全)
+ detailDto.setAuditStatus(detail.getAuditStatus());
+ detailDto.setAuditType(detail.getAuditType());
+
businessDocumentDetailDtoList.add(detailDto);
//车辆维修单同步工时费申请状态
if(businessDocumentDetaliDO.getAuditStatus()==2||businessDocumentDetaliDO.getAuditStatus()==3){
@@ -1443,6 +1457,49 @@ public class BusinessDocumentApplicationService {
}
//推送数据到tms:审核通过修改单据状态为【待付款】,审核拒绝修改状态为【已拒绝】并处理相关逻辑
if(businessDocumentDetailDtoList.size()>0){
+ // 记录传递给 TMS 的数据,便于调试
+ log.info("准备同步TMS业务单据信息,数据条数:{}", businessDocumentDetailDtoList.size());
+ for (int i = 0; i < Math.min(businessDocumentDetailDtoList.size(), 3); i++) {
+ BusinessDocumentDetaliDTO dto = businessDocumentDetailDtoList.get(i);
+ log.info("同步TMS业务单据信息示例[{}]:businessDocumentDetaliId={}, auditStatus={}, auditStatus类型={}, auditRemark={}, auditRemark类型={}, auditRemark值={}",
+ i, dto.getBusinessDocumentDetaliId(), dto.getAuditStatus(),
+ dto.getAuditStatus() != null ? dto.getAuditStatus().getClass().getName() : "null",
+ dto.getAuditRemark(), dto.getAuditRemark() != null ? dto.getAuditRemark().getClass().getName() : "null",
+ dto.getAuditRemark());
+ }
+
+ // 最后一次验证:确保所有 auditRemark 都是字符串类型
+ for (BusinessDocumentDetaliDTO dto : businessDocumentDetailDtoList) {
+ if (dto.getAuditRemark() == null) {
+ dto.setAuditRemark("");
+ } else if (!(dto.getAuditRemark() instanceof String)) {
+ // 如果不是字符串类型,转换为字符串
+ log.warn("发现 auditRemark 不是字符串类型:{},类型:{},将转换为字符串",
+ dto.getAuditRemark(), dto.getAuditRemark().getClass().getName());
+ dto.setAuditRemark(String.valueOf(dto.getAuditRemark()));
+ }
+ }
+
+ // 通过 JSON 序列化和反序列化确保类型正确,避免类型转换问题
+ try {
+ String jsonString = JSON.toJSONString(businessDocumentDetailDtoList);
+ log.debug("同步TMS业务单据信息,JSON序列化结果长度:{}", jsonString.length());
+ List deserializedList = JSON.parseArray(jsonString, BusinessDocumentDetaliDTO.class);
+ log.debug("JSON反序列化后,数据条数:{}", deserializedList.size());
+ // 验证反序列化后的 auditRemark 类型
+ for (int i = 0; i < Math.min(deserializedList.size(), 3); i++) {
+ BusinessDocumentDetaliDTO dto = deserializedList.get(i);
+ if (dto.getAuditRemark() != null && !(dto.getAuditRemark() instanceof String)) {
+ log.warn("JSON反序列化后,auditRemark 类型不正确:{},将强制转换为字符串",
+ dto.getAuditRemark().getClass().getName());
+ dto.setAuditRemark(String.valueOf(dto.getAuditRemark()));
+ }
+ }
+ businessDocumentDetailDtoList = deserializedList;
+ } catch (Exception e) {
+ log.warn("JSON序列化/反序列化失败,使用原始数据:{}", e.getMessage());
+ }
+
AjaxResult ajaxResult = wlhyServiceFeign.syncBusinessDocumentInfo(businessDocumentDetailDtoList);
if (null != ajaxResult && !"200".equals(String.valueOf(ajaxResult.get("code")))) {
log.error("同步TMS业务单据信息失败:" + ajaxResult.get("msg"));
diff --git a/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocumentDetali/BusinessDocumentDetaliApplicationService.java b/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocumentDetali/BusinessDocumentDetaliApplicationService.java
index 5b5dd1b7a..b937f24e5 100644
--- a/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocumentDetali/BusinessDocumentDetaliApplicationService.java
+++ b/mhd_finance/src/main/java/com/linke/finance/application/server/businessDocumentDetali/BusinessDocumentDetaliApplicationService.java
@@ -111,9 +111,46 @@ public class BusinessDocumentDetaliApplicationService {
if (StringUtils.isNotBlank(businessDocumentDetaliDO.getWaybillNumbers())){
businessDocumentDetaliDO.setWaybillNumberList(Arrays.asList(businessDocumentDetaliDO.getWaybillNumbers().split(",")));
}
- businessDocumentDetaliDO.setOrganizationId(loginUser.getOrganizationPo().getOrganizationId());
+
+ // 数据权限:根据组织ID实现数据隔离
+ // organizationId=2827(南光)时,可以查询所有组织的数据,也可以条件查询特定组织;其他组织只查询自己的数据
+ Long loginUserOrganizationId = loginUser.getOrganizationPo().getOrganizationId();
+ // 保存前端传递的 organizationId(如果有的话)
+ Long frontendOrganizationId = businessDocumentDetaliDO.getOrganizationId();
+
+ if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
+ // 南光组织(organizationId=2827):可以查询所有组织的数据
+ // 如果前端传递了 organizationId,使用前端传递的值进行过滤(条件查询特定组织)
+ // 如果前端没有传递 organizationId,设置为 null 查询所有组织的数据
+ if (frontendOrganizationId != null) {
+ // 前端传递了 organizationId,使用前端传递的值进行过滤
+ businessDocumentDetaliDO.setOrganizationId(frontendOrganizationId);
+ } else {
+ // 前端没有传递 organizationId,设置为 null 查询所有组织的数据
+ businessDocumentDetaliDO.setOrganizationId(null);
+ }
+ } else {
+ // 其他组织:只查询自己组织的数据,忽略前端传递的 organizationId(安全考虑)
+ businessDocumentDetaliDO.setOrganizationId(loginUserOrganizationId);
+ }
+
//businessDocumentDetaliDO.setAuditStatus(0);//查询未审核的
List businessDocumentDetaliAuditPOS = businessDocumentDetaliDomainService.auditList(businessDocumentDetaliDO);
+
+ // 前端回显:根据 organizationId 设置对应的 organizationName
+ businessDocumentDetaliAuditPOS.forEach(e -> {
+ if (e.getOrganizationId() != null) {
+ Long orgId = e.getOrganizationId();
+ if (java.util.Objects.equals(orgId, 2827L)) {
+ e.setOrganizationName("南光");
+ } else if (java.util.Objects.equals(orgId, 2830L)) {
+ e.setOrganizationName("通宇");
+ } else if (java.util.Objects.equals(orgId, 2839L)) {
+ e.setOrganizationName("南岐");
+ }
+ }
+ });
+
// businessDocumentDetaliAuditPOS.forEach(e->{
// if (e.getService() != null && e.getAmount() != null){
// e.setTotalAmount(e.getAmount().add(e.getService()));
diff --git a/mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java b/mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java
index bb23cf74e..1d4e77747 100644
--- a/mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java
+++ b/mhd_finance/src/main/java/com/linke/finance/application/server/reconciliation/ReconciliationApplicationService.java
@@ -146,21 +146,21 @@ public class ReconciliationApplicationService {
}
}
}
- List reconciliationPOS = reconciliationDomainService.queryList(reconciliationDO);
- for (ReconciliationPO reconciliationPO : reconciliationPOS) {
- Long reconciliationId = reconciliationPO.getReconciliationId();
- AjaxResult tmsOrderSettlementDetails = wlhyServiceFeign.getById(reconciliationId);
- Map result = (Map)tmsOrderSettlementDetails.get("result");
- if (ObjectUtil.isNotEmpty( result)){
- Integer receiptIdstr = (Integer)result.get("receiptId");
- Long receiptId = receiptIdstr.longValue();
- TmsReceipt tmsReceipt = tmsReceiptMapper.selectById(receiptId);
- if (tmsReceipt != null) {
- reconciliationPO.setSettlementCurrency(tmsReceipt.getSettlementCurrency());
- }
- }
- }
- return reconciliationPOS;
+// List reconciliationPOS = reconciliationDomainService.queryList(reconciliationDO);
+// for (ReconciliationPO reconciliationPO : reconciliationPOS) {
+// Long reconciliationId = reconciliationPO.getReconciliationId();
+// AjaxResult tmsOrderSettlementDetails = wlhyServiceFeign.getById(reconciliationId);
+// Map result = (Map)tmsOrderSettlementDetails.get("result");
+// if (ObjectUtil.isNotEmpty( result)){
+// Integer receiptIdstr = (Integer)result.get("receiptId");
+// Long receiptId = receiptIdstr.longValue();
+// TmsReceipt tmsReceipt = tmsReceiptMapper.selectById(receiptId);
+// if (tmsReceipt != null) {
+// reconciliationPO.setSettlementCurrency(tmsReceipt.getSettlementCurrency());
+// }
+// }
+// }
+// return reconciliationPOS;
return reconciliationDomainService.queryList(reconciliationDO);
}
From d7df2da82810d3f0347b34adc74cf9753081f6c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com>
Date: Mon, 12 Jan 2026 15:23:19 +0800
Subject: [PATCH 21/33] =?UTF-8?q?=E5=A7=94=E6=89=98=E6=96=B9=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2=E7=BB=93=E7=AE=97=E5=B8=81=E7=A7=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mhd-user-center/src/main/resources/mapper/UserMapper.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mhd-user-center/src/main/resources/mapper/UserMapper.xml b/mhd-user-center/src/main/resources/mapper/UserMapper.xml
index 29083a291..04ee4a0f8 100644
--- a/mhd-user-center/src/main/resources/mapper/UserMapper.xml
+++ b/mhd-user-center/src/main/resources/mapper/UserMapper.xml
@@ -717,7 +717,7 @@