demand: tms-oa接口

This commit is contained in:
aike 2026-02-02 17:14:09 +08:00
parent d2f7eb75ff
commit 2f80328988
6 changed files with 686 additions and 3 deletions

View File

@ -0,0 +1,232 @@
/**
* @Project: emis
* @Title: EmisCustomerUserController.java
* @author heyu
* @date 2026-02-02 03:51:54
* @Copyright: ShangHai Duta 2022 All rights reserved.
* @version v1.0
* @Description: <p> 快递客户用户 控制器 </p>
*/
package com.xdadan.erp.apiweb;
import com.xdadan.erp.common.annotation.Log;
import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter;
import com.xdadan.erp.common.core.controller.BaseController;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.page.TableDataInfo;
import com.xdadan.erp.common.enums.BusinessType;
import com.xdadan.erp.common.utils.StringUtils;
import com.xdadan.erp.common.utils.poi.ExcelUtil;
import com.xdadan.erp.emis.domain.EmisCountry;
import com.xdadan.erp.emis.domain.EmisCustomerUser;
import com.xdadan.erp.emis.domain.EmisRegion;
import com.xdadan.erp.emis.domain.EmisWaybill;
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.vo.MonthlyCustomerShipmentStatVO;
import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.service.IEmisCustomerUserService;
import com.xdadan.erp.emis.service.excelCellStrategy.MonthlyShipmentStatExcelUtil;
import com.xdadan.erp.apiweb.utils.EntityAuditUtils;
import com.xdadan.erp.system.service.ISysUserService;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
/**
* 快递客户用户Controller
*
* @author heyu
* @date 2026-02-02 03:51:54
*/
@RestController
@RequestMapping("/apiweb/emisCustomerUser")
public class CustomerUserController extends BaseController
{
@Autowired
private IEmisCustomerUserService emisCustomerUserService;
@Autowired
private EmisBaseService emisBaseService;
@Autowired
private ISysUserService sysUserService;
/**
* 保存或更新月结客户
* 根据monthly_pay_code判断:若编号不存在则执行新增,若存在则执行修改
*/
@Log(title = "保存或更新月结客户", businessType = BusinessType.OTHER)
@PostMapping("/saveOrUpdateMonthUser")
public AjaxResult saveOrUpdateMonthUser(@RequestBody EmisCustomerUser emisCustomerUser) {
try {
// 检查月结卡号是否为空
if (StringUtils.isEmpty(emisCustomerUser.getMonthlyPayCode())) {
return AjaxResult.error("月结卡号不能为空");
}
// 根据月结卡号查询客户是否存在
EmisCustomerUser oldUser = emisBaseService.getCustomerUserByMonthlyPayCode(emisCustomerUser.getMonthlyPayCode());
boolean isUpdate = oldUser != null;
// 验证企业名称和企业税号
try {
checkEnterprise(emisCustomerUser);
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
}
// 校验账期
if (emisCustomerUser.getCreditPeriod() != null) {
// 检查是否为整数
if (emisCustomerUser.getCreditPeriod().scale() > 0) {
return AjaxResult.error("账期必须为整数");
}
// 检查是否大于等于7
if (emisCustomerUser.getCreditPeriod().compareTo(new BigDecimal("7")) < 0) {
return AjaxResult.error("账期必须大于等于7天");
}
}
if (isUpdate) {
// 更新操作
emisCustomerUser.setCustomerCode(oldUser.getCustomerCode());
emisCustomerUser.setId(oldUser.getId());
// 验证电话号码是否被其他客户占用
if (!StringUtils.isEmpty(emisCustomerUser.getPhone())) {
EmisCustomerUser phoneUser = emisBaseService.getCustomerUserByPhone(emisCustomerUser.getPhone());
if (phoneUser != null && !phoneUser.getCustomerCode().equals(emisCustomerUser.getCustomerCode())) {
return AjaxResult.error("该客户电话号码已被占用,请使用新号码");
}
}
// 设置客户类型等属性(保持原有值或使用新值)
emisCustomerUser.setCustomerType("2");
emisCustomerUser.setSettledType("2");
emisCustomerUser.setUserType("2");
// 设置修改人和修改网
EntityAuditUtils.setAuditInfo(emisCustomerUser, null, true, this, sysUserService);
return toAjax(emisCustomerUserService.updateEmisCustomerUser(emisCustomerUser));
} else {
// 新增操作
// 验证电话号码是否已被占用
if (!StringUtils.isEmpty(emisCustomerUser.getPhone())) {
EmisCustomerUser phoneUser = emisBaseService.getCustomerUserByPhone(emisCustomerUser.getPhone());
if (phoneUser != null) {
return AjaxResult.error("该客户电话号码已被占用,请使用新号码");
}
}
// 设置客户类型等属性
emisCustomerUser.setCustomerType("2");
emisCustomerUser.setSettledType("2");
emisCustomerUser.setUserType("2");
emisCustomerUser.setUserName(emisCustomerUser.getMonthlyPayCode());
// emisCustomerUser.setOwnerSite(getLoginUser().getUser().getOwnerSiteCode());
// 设置创建人和创建网点
EntityAuditUtils.setAuditInfo(emisCustomerUser, null, false, this, sysUserService);
// 处理导入标识
if ("1".equals(emisCustomerUser.getBlImport())) {
nameToCode(emisCustomerUser);
}
return toAjax(emisCustomerUserService.insertMonthCustomerUser(emisCustomerUser));
}
} catch (DuplicateKeyException e) {
e.printStackTrace();
return AjaxResult.error("数据重复!");
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("保存或更新失败:" + e.getMessage());
}
}
private void checkEnterprise(EmisCustomerUser emisCustomerUser) throws EmisBizError {
if (!"0086".equals(emisCustomerUser.getCountry())) {
return;
}
checkEnterpriseDetail(emisCustomerUser);
}
private void checkEnterpriseDetail(EmisCustomerUser emisCustomerUser) throws EmisBizError {
if (StringUtil.isBlank(emisCustomerUser.getEnterpriseTaxId())
|| StringUtil.isBlank(emisCustomerUser.getEnterpriseName())) {
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "企业名称/企业税号不能为空");
}
// 验证企业名称格式
if (!emisBaseService.validateEnterpriseName(emisCustomerUser.getEnterpriseName())) {
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "企业名称不能包含空格、回车、@、#、$、%、&、数字等特殊符号");
}
// 验证企业税号格式
if (!emisBaseService.validateEnterpriseTaxId(emisCustomerUser.getEnterpriseTaxId())) {
throw new EmisBizError(EmisBizErrorType.PARAM_ERROR, "企业税号必须为8-18位数字和大写字母组成,不能包含汉字、空格等特殊符号");
}
}
private void nameToCode(EmisCustomerUser emisCustomerUser) {
// 国家
if (!StringUtils.isEmpty(emisCustomerUser.getCountry())) {
EmisCountry country = emisBaseService.getCountryByName(emisCustomerUser.getCountry());
if (country != null) {
emisCustomerUser.setCountry(country.getCode());
}
}
// 省份
if (!StringUtils.isEmpty(emisCustomerUser.getProvince())) {
EmisRegion province = emisBaseService.getRegionByName(emisCustomerUser.getCountry(), null, emisCustomerUser.getProvince());
if (province != null) {
emisCustomerUser.setProvince(province.getRegionCode());
}
}
// 城市
if (!StringUtils.isEmpty(emisCustomerUser.getCity())) {
EmisRegion city = emisBaseService.getRegionByName(emisCustomerUser.getCountry(), emisCustomerUser.getProvince(), emisCustomerUser.getCity());
if (city != null) {
emisCustomerUser.setCity(city.getRegionCode());
}
}
// 开通oms
if (!StringUtils.isEmpty(emisCustomerUser.getBlOpenOms())) {
if ("是".equals(emisCustomerUser.getBlOpenOms())) {
emisCustomerUser.setBlOpenOms("1");
} else {
emisCustomerUser.setBlOpenOms("0");
}
}
// 启用状态
if (!StringUtils.isEmpty(emisCustomerUser.getStatus())) {
if ("是".equals(emisCustomerUser.getStatus())) {
emisCustomerUser.setStatus("1");
} else {
emisCustomerUser.setStatus("0");
}
}
// 是否短信
if (!StringUtils.isEmpty(emisCustomerUser.getBlSms())) {
if ("是".equals(emisCustomerUser.getBlSms())) {
emisCustomerUser.setBlSms("1");
} else {
emisCustomerUser.setBlSms("0");
}
}
}
}

View File

@ -1,11 +1,11 @@
/**
/**
* @Project: emis
* @Title: EmisSettleBillController.java
* @author linfso
* @date 2024-07-03 18:54:51
* @Copyright: ShangHai Duta 2022 All rights reserved.
* @version v1.0
* @version v1.0
* @Description: <p> 结算总账单 控制器 </p>
*/
@ -56,7 +56,7 @@ import java.util.*;
/**
* 结算总账单Controller
*
*
* @author linfso
* @date 2024-07-03 18:54:51
*/
@ -272,5 +272,37 @@ public class SettleBillController extends BaseController
}
/**
* 查询结算总账单列表
*/
// @PreAuthorize("@ss.hasPermi('emis:emisSettleBill:list')")
@GetMapping("/list")
public TableDataInfo list(EmisSettleBill emisSettleBill)
{
startPage();
// setPrivParams(emisSettleBill);
String billCodeStr = MapUtil.getStr(emisSettleBill.getParams(),"billCode");
if(!StringUtils.isEmpty(billCodeStr)){
emisSettleBill.getParams().put("billCode",WaybillHelper.formatQueryValue(billCodeStr));
String[] billCodeSortList = billCodeStr.split(",");
if(billCodeSortList.length>1){
emisSettleBill.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList));
}
}
if(!StringUtils.isEmpty(emisSettleBill.getSettleBillNo())){
emisSettleBill.setSettleBillNo(WaybillHelper.formatQueryValue(emisSettleBill.getSettleBillNo()));
String[] settleBillNoSortList = emisSettleBill.getSettleBillNo().split(",");
if(settleBillNoSortList.length>1){
emisSettleBill.getParams().put("settleBillNoSortList",Arrays.asList(settleBillNoSortList));
}
}
List<EmisSettleBill> list = emisSettleBillService.selectEmisSettleBillList(emisSettleBill);
return getDataTable(list);
}
}

View File

@ -0,0 +1,94 @@
/**
* @Project: emis
* @Title: EmisTmsSiteBatchController.java
* @author heyu
* @date 2026-01-29 06:38:49
* @Copyright: ShangHai Duta 2022 All rights reserved.
* @version v1.0
* @Description: <p> 一级网点TMS组批次 控制器 </p>
*/
package com.xdadan.erp.apiweb;
import com.xdadan.erp.common.annotation.Log;
import com.xdadan.erp.common.core.controller.BaseController;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.page.TableDataInfo;
import com.xdadan.erp.common.enums.BusinessType;
import com.xdadan.erp.common.utils.poi.ExcelUtil;
import com.xdadan.erp.emis.domain.EmisSite;
import com.xdadan.erp.emis.domain.EmisSupplier;
import com.xdadan.erp.emis.domain.EmisTmsSiteBatch;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.service.IEmisSiteService;
import com.xdadan.erp.emis.service.IEmisSupplierService;
import com.xdadan.erp.emis.service.IEmisTmsSiteBatchService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* 一级网点TMS组批次Controller
*
* @author heyu
* @date 2026-01-29 06:38:49
*/
@RestController
@RequestMapping("/apiweb/emisTmsSiteBatch")
public class SiteBatchController extends BaseController
{
@Autowired
private IEmisTmsSiteBatchService emisTmsSiteBatchService;
@Autowired
private IEmisSupplierService emisSupplierService;
@Autowired
private IEmisSiteService emisSiteService;
/**
* 查询一级网点TMS组批次列表
*/
@GetMapping("/list")
public TableDataInfo list(EmisTmsSiteBatch emisTmsSiteBatch)
{
startPage();
// 设置通用权限查询参数
// setPrivParams(emisTmsSiteBatch);
if(!StringUtils.isEmpty(emisTmsSiteBatch.getBatchNo())){
emisTmsSiteBatch.setBatchNo(WaybillHelper.formatQueryValue(emisTmsSiteBatch.getBatchNo()));
}
if(!StringUtils.isEmpty(emisTmsSiteBatch.getCarNo())){
emisTmsSiteBatch.setCarNo(WaybillHelper.formatQueryValue(emisTmsSiteBatch.getCarNo()));
}
if(emisTmsSiteBatch.getParams().get("billCode")!=null){
String billCodeStr=emisTmsSiteBatch.getParams().get("billCode").toString();
billCodeStr=WaybillHelper.formatQueryValue(billCodeStr);
emisTmsSiteBatch.getParams().put("billCode",billCodeStr);
}
List<EmisTmsSiteBatch> list = emisTmsSiteBatchService.selectEmisTmsSiteBatchList(emisTmsSiteBatch);
return getDataTable(list);
}
/**
* 获取一级网点TMS组批次详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(emisTmsSiteBatchService.selectEmisTmsSiteBatchById(id));
}
}

View File

@ -0,0 +1,117 @@
/**
* @Project: emis
* @Title: EmisSupplierController.java
* @author heyu
* @date 2026-01-29 02:48:51
* @Copyright: ShangHai Duta 2022 All rights reserved.
* @version v1.0
* @Description: <p> 公司供应商表 控制器 </p>
*/
package com.xdadan.erp.apiweb;
import com.xdadan.erp.common.annotation.Log;
import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter;
import com.xdadan.erp.common.core.controller.BaseController;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.core.page.TableDataInfo;
import com.xdadan.erp.common.enums.BusinessType;
import com.xdadan.erp.common.utils.poi.ExcelUtil;
import com.xdadan.erp.common.core.domain.entity.SysUser;
import com.xdadan.erp.emis.domain.EmisSupplier;
import com.xdadan.erp.emis.service.IEmisSupplierService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.system.service.ISysUserService;
import com.xdadan.erp.apiweb.utils.EntityAuditUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
/**
* 公司供应商表Controller
*
* @author heyu
* @date 2026-01-29 02:48:51
*/
@RestController
@RequestMapping("/apiweb/emisSupplier")
public class SupplierController extends BaseController
{
@Autowired
private IEmisSupplierService emisSupplierService;
@Autowired
private ISysUserService sysUserService;
/**
* 查询公司供应商表列表
*/
@GetMapping("/list")
public TableDataInfo list(EmisSupplier emisSupplier)
{
// setPrivParams(emisSupplier);
startPage();
List<EmisSupplier> list = emisSupplierService.selectEmisSupplierList(emisSupplier);
return getDataTable(list);
}
/**
* 获取公司供应商表详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(emisSupplierService.selectEmisSupplierById(id));
}
/**
* 保存或更新公司供应商表
*/
@Log(title = "公司供应商表", businessType = BusinessType.OTHER)
@PostMapping("/saveOrUpdate")
public AjaxResult saveOrUpdate(@RequestBody EmisSupplier emisSupplier)
{
try {
// 检查供应商编号是否为空
if (StringUtils.isEmpty(emisSupplier.getCode())) {
return AjaxResult.error("供应商编号不能为空");
}
// 根据编号查询供应商是否存在
EmisSupplier querySupplier = new EmisSupplier();
querySupplier.setCode(emisSupplier.getCode());
List<EmisSupplier> existingSuppliers = emisSupplierService.selectEmisSupplierList(querySupplier);
boolean isUpdate = existingSuppliers != null && !existingSuppliers.isEmpty();
if (isUpdate) {
// 更新操作
EmisSupplier existingSupplier = existingSuppliers.get(0);
emisSupplier.setId(existingSupplier.getId());
// 设置修改人和修改网点
EntityAuditUtils.setAuditInfo(emisSupplier, null, true, this, sysUserService);
return toAjax(emisSupplierService.updateEmisSupplier(emisSupplier));
} else {
// 新增操作
// 设置创建人和创建网点
EntityAuditUtils.setAuditInfo(emisSupplier, null, false, this, sysUserService);
return toAjax(emisSupplierService.insertEmisSupplier(emisSupplier));
}
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("保存或更新失败:" + e.getMessage());
}
}
}

View File

@ -15,6 +15,7 @@ import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.xdadan.erp.common.annotation.Log;
import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter;
import com.xdadan.erp.common.config.PayConfig;
@ -35,6 +36,7 @@ import com.xdadan.erp.emis.domain.vo.WaybillOrder;
import com.xdadan.erp.emis.service.*;
import com.xdadan.erp.emis.service.print.IXddTplPrint;
import com.xdadan.erp.emis.service.print.tanex.TanexPdfPrinter;
import com.xdadan.erp.emis.utils.GZipUtils;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.system.service.ISysFileInfoService;
import com.xdadan.erp.system.service.ISysPostService;
@ -44,6 +46,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@ -499,6 +502,55 @@ public class WaybillController extends BaseController
return AjaxResult.success(emisSpecialZoneAddressMatchService.matchByAddress(address));
}
/**
* 查询运单列表列表
*/
@GetMapping("/list")
public TableDataInfo list(EmisWaybill emisWaybill)
{
// 非总部只能查看自己的或者与自己相关的订单
startPage();
// setPrivParams(emisWaybill);
List<EmisWaybill> list = null;
// 如果单号不为空,则去除其他参数
if(!StringUtils.isEmpty(emisWaybill.getBillCode())){
emisWaybill.setBillCode(WaybillHelper.formatQueryValue(emisWaybill.getBillCode()));
String[] billCodeSortList = emisWaybill.getBillCode().split(",");
if(billCodeSortList.length>1){
// queryEmisWaybill.setParams(null);
emisWaybill.getParams().put("billCodeSortList",Arrays.asList(billCodeSortList));
}
list = emisWaybillService.selectEmisWaybillList(emisWaybill);
}else{
// 设置通用权限查询参数
list = emisWaybillService.selectEmisWaybillList(emisWaybill);
}
if(emisWaybill.getParams().containsKey("blZExport")){
List exportList=getCompressExportList(list);
return getDataTable(exportList);
}else {
return getDataTable(list);
}
}
/**
* 导出数据压缩
* @param list
* @return
*/
public List getCompressExportList(List list){
List<String> exportList= new ArrayList<>();
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
String encStr = GZipUtils.zipToBase64Str(JSON.toJSONString(list, SerializerFeature.WriteMapNullValue ,SerializerFeature.WriteDateUseDateFormat));
if(encStr!=null) {
exportList.add(encStr);
}
return exportList;
}

View File

@ -0,0 +1,156 @@
package com.xdadan.erp.apiweb.utils;
import com.xdadan.erp.common.core.controller.BaseController;
import com.xdadan.erp.common.core.domain.entity.SysUser;
import com.xdadan.erp.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Method;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* 实体审计工具类
* 用于设置实体的创建人、修改人、创建网点、修改网点等信息
*
* @author heyu
* @date 2026-01-29
*/
public class EntityAuditUtils {
/**
* 设置实体的创建人或修改人信息
*
* @param entity 实体对象
* @param user 用户信息,如果为null则从BaseController获取当前登录用户
* @param isUpdate 是否为更新操作,true表示更新,false表示新增
* @param baseController BaseController实例,用于获取当前登录用户(当user为null时)
* @param sysUserService 用户服务,用于根据oaEmpCode查询用户(当从params中获取oaEmpCode时)
*/
public static void setAuditInfo(Object entity, SysUser user, boolean isUpdate,
BaseController baseController, ISysUserService sysUserService) {
if (entity == null) {
return;
}
// 如果user为null,尝试从params中获取oaEmpCode或使用当前登录用户
if (user == null) {
user = getUserFromEntity(entity, baseController, sysUserService);
}
if (user == null) {
return;
}
try {
if (isUpdate) {
// 设置修改人和修改网点
setFieldValue(entity, "setUpdateBy", String.valueOf(user.getUserId()));
setFieldValue(entity, "setUpdateSite", String.valueOf(user.getOwnerSiteCode()));
} else {
// 设置创建人和创建网点
setFieldValue(entity, "setCreateBy", String.valueOf(user.getUserId()));
setFieldValue(entity, "setCreateSite", String.valueOf(user.getOwnerSiteCode()));
}
} catch (Exception e) {
// 如果实体没有这些方法,忽略异常
}
}
/**
* 从实体对象的params中获取oaEmpCode,或从BaseController获取当前登录用户
*/
private static SysUser getUserFromEntity(Object entity, BaseController baseController,
ISysUserService sysUserService) {
try {
// 尝试从params中获取oaEmpCode
Method getParamsMethod = entity.getClass().getMethod("getParams");
Object params = getParamsMethod.invoke(entity);
if (params != null && params instanceof java.util.Map) {
@SuppressWarnings("unchecked")
java.util.Map<String, Object> paramsMap = (java.util.Map<String, Object>) params;
Object oaEmpCodeObj = paramsMap.get("oaEmpCode");
if (oaEmpCodeObj != null) {
String oaEmpCode = oaEmpCodeObj.toString();
if (StringUtils.isNotEmpty(oaEmpCode) && sysUserService != null) {
SysUser queryUser = new SysUser();
// 使用反射设置oaEmpCode,兼容不同的字段名
setFieldValueByReflection(queryUser, "setOaEmpCode", oaEmpCode);
List<SysUser> userList = sysUserService.selectUserList(queryUser);
if (userList != null && !userList.isEmpty()) {
// 如果有多个用户,取最早创建的那个(按创建时间排序)
return userList.stream()
.sorted(Comparator.comparing(SysUser::getCreateTime,
Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.toList())
.get(0);
}
}
}
}
// 如果无法从params获取,尝试从BaseController获取当前登录用户
if (baseController != null) {
try {
return baseController.getLoginUser().getUser();
} catch (Exception e) {
// 忽略异常
}
}
} catch (Exception e) {
// 如果实体没有getParams方法,尝试从BaseController获取当前登录用户
if (baseController != null) {
try {
return baseController.getLoginUser().getUser();
} catch (Exception ex) {
// 忽略异常
}
}
}
return null;
}
/**
* 通过反射设置实体字段值
*/
private static void setFieldValue(Object entity, String methodName, String value) {
try {
Method method = entity.getClass().getMethod(methodName, String.class);
method.invoke(entity, value);
} catch (Exception e) {
// 如果方法不存在,忽略异常
}
}
/**
* 通过反射设置字段值(支持多种参数类型)
*/
private static void setFieldValueByReflection(Object entity, String methodName, Object value) {
try {
// 尝试String类型
try {
Method method = entity.getClass().getMethod(methodName, String.class);
method.invoke(entity, value.toString());
return;
} catch (NoSuchMethodException e) {
// 继续尝试其他类型
}
// 尝试Object类型
try {
Method method = entity.getClass().getMethod(methodName, Object.class);
method.invoke(entity, value);
return;
} catch (NoSuchMethodException e) {
// 方法不存在,忽略
}
} catch (Exception e) {
// 如果方法不存在或调用失败,忽略异常
}
}
}