From d2f7eb75ff7b6d1f59752d0dddbf2d72e2b57401 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Sat, 31 Jan 2026 09:35:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?demand:=20=20=20=20=20=E7=89=B9=E5=8C=BA?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E5=8C=B9=E9=85=8D=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xdadan/erp/apiweb/WaybillController.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java index f21e9f4..c964cf2 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java @@ -32,10 +32,7 @@ import com.xdadan.erp.emis.domain.enumtype.ScanType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.domain.vo.FeeItem; import com.xdadan.erp.emis.domain.vo.WaybillOrder; -import com.xdadan.erp.emis.service.EmisBaseService; -import com.xdadan.erp.emis.service.IEmisElectronicSitePagService; -import com.xdadan.erp.emis.service.IEmisTmsScanRecordService; -import com.xdadan.erp.emis.service.IEmisWaybillService; +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.WaybillHelper; @@ -91,6 +88,9 @@ public class WaybillController extends BaseController @Autowired private IEmisTmsScanRecordService emisTmsScanRecordService; + @Autowired + private IEmisSpecialZoneAddressMatchService emisSpecialZoneAddressMatchService; + /** * 获取电子运单信息 */ @@ -488,6 +488,17 @@ public class WaybillController extends BaseController return "获取失败"; } + /** + * 按地址匹配特区标签 + * + */ +// @PreAuthorize("@ss.hasPermi('emis:emisSpecialZoneAddressMatch:matchByAddress')") + @GetMapping("/matchByAddress") + public AjaxResult matchByAddress(String address) + { + return AjaxResult.success(emisSpecialZoneAddressMatchService.matchByAddress(address)); + } + From 2f803289885da7f64bda4b4e5f7f6d992b269166 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 2 Feb 2026 17:14:09 +0800 Subject: [PATCH 2/5] =?UTF-8?q?demand:=20=20=20=20=20tms-oa=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/apiweb/CustomerUserController.java | 232 ++++++++++++++++++ .../erp/apiweb/SettleBillController.java | 38 ++- .../erp/apiweb/SiteBatchController.java | 94 +++++++ .../xdadan/erp/apiweb/SupplierController.java | 117 +++++++++ .../xdadan/erp/apiweb/WaybillController.java | 52 ++++ .../erp/apiweb/utils/EntityAuditUtils.java | 156 ++++++++++++ 6 files changed, 686 insertions(+), 3 deletions(-) create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/CustomerUserController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteBatchController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/SupplierController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CustomerUserController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CustomerUserController.java new file mode 100644 index 0000000..d906059 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CustomerUserController.java @@ -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:

快递客户用户 控制器

+ */ + +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"); + } + } + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java index 904f672..92b4bcc 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SettleBillController.java @@ -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:

结算总账单 控制器

*/ @@ -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 list = emisSettleBillService.selectEmisSettleBillList(emisSettleBill); + return getDataTable(list); + } + } diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteBatchController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteBatchController.java new file mode 100644 index 0000000..db5f164 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteBatchController.java @@ -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:

一级网点TMS组批次 控制器

+ */ + +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 list = emisTmsSiteBatchService.selectEmisTmsSiteBatchList(emisTmsSiteBatch); + return getDataTable(list); + } + + /** + * 获取一级网点TMS组批次详细信息 + */ + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(emisTmsSiteBatchService.selectEmisTmsSiteBatchById(id)); + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SupplierController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SupplierController.java new file mode 100644 index 0000000..c5a3d6e --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SupplierController.java @@ -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:

公司供应商表 控制器

+ */ + +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 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 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()); + } + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java index c964cf2..ebfb207 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java @@ -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 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 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; + } diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java new file mode 100644 index 0000000..efb4356 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java @@ -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 paramsMap = (java.util.Map) 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 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) { + // 如果方法不存在或调用失败,忽略异常 + } + } +} From c0eab1d2fcaf6fb85519b690dafb63aca4df70ed Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Tue, 3 Feb 2026 17:20:03 +0800 Subject: [PATCH 3/5] =?UTF-8?q?demand:=20=20=20=20=20tms-oa=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiweb/CommissionProfitController.java | 89 +++++++++++ .../erp/apiweb/CreditCustomerController.java | 116 ++++++++++++++ .../erp/apiweb/CreditSalesmenController.java | 144 ++++++++++++++++++ .../apiweb/TempCreditCustomerController.java | 67 ++++++++ .../apiweb/TempCreditSalesmenController.java | 117 ++++++++++++++ .../xdadan/erp/apiweb/WaybillController.java | 38 ++++- .../erp/apiweb/utils/EntityAuditUtils.java | 63 ++++++-- 7 files changed, 622 insertions(+), 12 deletions(-) create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditCustomerController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditSalesmenController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditCustomerController.java create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditSalesmenController.java diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java new file mode 100644 index 0000000..2713072 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java @@ -0,0 +1,89 @@ + +/** + * @Project: emis + * @Title: EmisCommissionProfitController.java + * @author heyu + * @date 2026-02-03 01:46:36 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

员工提成表 控制器

+ */ + +package com.xdadan.erp.apiweb; + +import com.alibaba.fastjson.JSONObject; +import com.xdadan.erp.apiweb.utils.EntityAuditUtils; +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.core.redis.RedissonService; +import com.xdadan.erp.common.enums.BusinessType; +import com.xdadan.erp.common.utils.DateUtils; +import com.xdadan.erp.common.utils.poi.ExcelUtil; +import com.xdadan.erp.emis.domain.EmisCommissionDtl; +import com.xdadan.erp.emis.domain.EmisCommissionProfit; +import com.xdadan.erp.emis.domain.EmisTmsSiteBatch; +import com.xdadan.erp.emis.domain.EmisWaybill; +import com.xdadan.erp.emis.service.EmisBaseService; +import com.xdadan.erp.emis.service.IEmisCommissionDtlService; +import com.xdadan.erp.emis.service.IEmisCommissionProfitService; +import com.xdadan.erp.emis.utils.WaybillHelper; +import com.xdadan.erp.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 员工提成表Controller + * + * @author heyu + * @date 2026-02-03 01:46:36 + */ +@Slf4j +@RestController +@RequestMapping("/apiweb/emisCommissionProfit") +public class CommissionProfitController extends BaseController +{ + @Autowired + private IEmisCommissionProfitService emisCommissionProfitService; + + @Autowired + private IEmisCommissionDtlService emisCommissionDtlService; + + @Autowired + RedissonService redissonService; + + @Autowired + private EmisBaseService emisBaseService; + + @Autowired + private ISysUserService sysUserService; + + + /** + * 查询员工提成表列表 + */ + @GetMapping("/list") + public TableDataInfo list(EmisCommissionProfit emisCommissionProfit) + { + EntityAuditUtils.setEmpNameFromOaEmpCode(emisCommissionProfit, sysUserService, "setEmpName"); + + startPage(); + List list = emisCommissionProfitService.selectEmisCommissionProfitList(emisCommissionProfit); + return getDataTable(list); + } + + + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditCustomerController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditCustomerController.java new file mode 100644 index 0000000..a670fce --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditCustomerController.java @@ -0,0 +1,116 @@ + +/** + * @Project: emis + * @Title: EmisCreditCustomerController.java + * @author heyu + * @date 2026-02-02 16:17:55 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

客户信用额度表 控制器

+ */ + +package com.xdadan.erp.apiweb; + +import com.xdadan.erp.apiweb.utils.EntityAuditUtils; +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.StringUtils; +import com.xdadan.erp.common.utils.poi.ExcelUtil; +import com.xdadan.erp.emis.domain.EmisCreditCustomer; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.service.IEmisCreditCustomerService; +import com.xdadan.erp.system.service.ISysUserService; +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.List; + +/** + * 客户信用额度表Controller + * + * @author heyu + * @date 2026-02-02 16:17:55 + */ +@RestController +@RequestMapping("/apiweb/emisCreditCustomer") +public class CreditCustomerController extends BaseController +{ + @Autowired + private IEmisCreditCustomerService emisCreditCustomerService; + + @Autowired + private ISysUserService sysUserService; + + /** + * 查询客户信用额度表列表 + */ + @GetMapping("/list") + public TableDataInfo list(EmisCreditCustomer emisCreditCustomer) + { + startPage(); + List list = emisCreditCustomerService.selectEmisCreditCustomerList(emisCreditCustomer); + return getDataTable(list); + } + + + /** + * 获取客户信用额度表详细信息 + */ + @PreAuthorize("@ss.hasPermi('emis:emisCreditCustomer:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(emisCreditCustomerService.selectEmisCreditCustomerById(id)); + } + + /** + * 保存或更新客户信用额度表 + * 根据monthlyPayCode判断:若编号不存在则执行新增,若存在则执行修改 + */ + @Log(title = "客户信用额度表", businessType = BusinessType.OTHER) + @PostMapping("/saveOrUpdate") + public AjaxResult saveOrUpdate(@RequestBody EmisCreditCustomer emisCreditCustomer) + { + try { + // 验证monthlyPayCode不能为空 + if (StringUtils.isEmpty(emisCreditCustomer.getMonthlyPayCode())) { + return AjaxResult.error("月结卡号不能为空"); + } + + // 根据monthlyPayCode查询记录 + EmisCreditCustomer queryParam = new EmisCreditCustomer(); + queryParam.setMonthlyPayCode(emisCreditCustomer.getMonthlyPayCode()); + List list = emisCreditCustomerService.selectEmisCreditCustomerList(queryParam); + + // 如果查询到记录,执行修改 + if (list != null && !list.isEmpty()) { + // 如果查询到多条记录,报错 + if (list.size() > 1) { + return AjaxResult.error("根据monthlyPayCode查询到多条记录,无法确定要修改的记录"); + } + // 设置id进行更新 + EmisCreditCustomer existing = list.get(0); + emisCreditCustomer.setId(existing.getId()); + EntityAuditUtils.setAuditInfo(emisCreditCustomer, null, true, this, sysUserService); + return toAjax(emisCreditCustomerService.updateEmisCreditCustomer(emisCreditCustomer)); + } else { + // 如果查询不到,执行新增 + EntityAuditUtils.setAuditInfo(emisCreditCustomer, null, false, this, sysUserService); + return toAjax(emisCreditCustomerService.insertEmisCreditCustomer(emisCreditCustomer)); + } + }catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + return AjaxResult.error("服务器异常,联系客服"); + } + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditSalesmenController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditSalesmenController.java new file mode 100644 index 0000000..d4a935d --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CreditSalesmenController.java @@ -0,0 +1,144 @@ + +/** + * @Project: emis + * @Title: EmisCreditSalesmenController.java + * @author heyu + * @date 2026-02-02 03:51:54 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

销售信用额度 控制器

+ */ + +package com.xdadan.erp.apiweb; + +import com.xdadan.erp.apiweb.utils.EntityAuditUtils; +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.EmisCreditSalesmen; +import com.xdadan.erp.emis.domain.EmisSettleBill; +import com.xdadan.erp.emis.domain.EmisWaybill; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.service.IEmisCreditSalesmenService; +import com.xdadan.erp.system.service.ISysUserService; +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.ArrayList; +import java.util.List; + +/** + * 销售信用额度Controller + * + * @author heyu + * @date 2026-02-02 03:51:54 + */ +@RestController +@RequestMapping("/apiweb/emisCreditSalesmen") +public class CreditSalesmenController extends BaseController +{ + @Autowired + private IEmisCreditSalesmenService emisCreditSalesmenService; + + @Autowired + private ISysUserService sysUserService; + + /** + * 新增/修改销售信用额度(根据salesmen和transType) + */ + @Log(title = "销售信用额度", businessType = BusinessType.INSERT) + @PostMapping("/saveOrUpdate") + public AjaxResult saveOrUpdate(@RequestBody EmisCreditSalesmen emisCreditSalesmen) + { + try { + EntityAuditUtils.setEmpNameFromOaEmpCode(emisCreditSalesmen, sysUserService, "setSalesmen"); + + // 验证传入的transType只能有一个(不能包含逗号) + String transType = emisCreditSalesmen.getTransType(); + if (transType != null && transType.contains(",")) { + return AjaxResult.error("传入的transType只能有一个"); + } + + // 验证salesmen和transType不能为空 + if (emisCreditSalesmen.getSalesmen() == null || transType == null || transType.trim().isEmpty()) { + return AjaxResult.error("salesmen和transType不能为空"); + } + + // 根据salesmen查询所有相关记录 + EmisCreditSalesmen queryParam = new EmisCreditSalesmen(); + queryParam.setSalesmen(emisCreditSalesmen.getSalesmen()); + List list = emisCreditSalesmenService.selectEmisCreditSalesmenList(queryParam); + + // 过滤出transType匹配的记录 + List matchedList = new ArrayList<>(); + for (EmisCreditSalesmen item : list) { + String dbTransType = item.getTransType(); + if (dbTransType != null) { + // 将库中的transType按逗号分割,检查是否包含传入的transType + String[] dbTransTypes = dbTransType.split(","); + for (String dbType : dbTransTypes) { + if (transType.trim().equals(dbType.trim())) { + matchedList.add(item); + break; + } + } + } + } + + // 如果查询到多条记录,报错 + if (matchedList.size() > 1) { + return AjaxResult.error("根据salesmen和transType查询到多条记录,无法确定要修改的记录"); + } + + // 如果查询到一条记录,根据id修改 + if (matchedList.size() == 1) { + EmisCreditSalesmen existing = matchedList.get(0); + emisCreditSalesmen.setId(existing.getId()); + // 更新时保持库中现有的transType值不变 + emisCreditSalesmen.setTransType(existing.getTransType()); + EntityAuditUtils.setAuditInfo(emisCreditSalesmen, null, true, this, sysUserService); + return toAjax(emisCreditSalesmenService.updateEmisCreditSalesmen(emisCreditSalesmen)); + } + + // 如果查询不到,新增 + EntityAuditUtils.setAuditInfo(emisCreditSalesmen, null, false, this, sysUserService); + return toAjax(emisCreditSalesmenService.insertEmisCreditSalesmen(emisCreditSalesmen)); + + }catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + return AjaxResult.error("服务器异常,联系客服"); + } + } + + /** + * 查询销售信用额度列表 + */ + @GetMapping("/list") + public TableDataInfo list(EmisCreditSalesmen emisCreditSalesmen) + { + EntityAuditUtils.setEmpNameFromOaEmpCode(emisCreditSalesmen, sysUserService, "setSalesmen"); + startPage(); + List list = emisCreditSalesmenService.selectEmisCreditSalesmenList(emisCreditSalesmen); + return getDataTable(list); + } + + /** + * 获取销售信用额度详细信息 + */ + @PreAuthorize("@ss.hasPermi('emis:emisCreditSalesmen:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(emisCreditSalesmenService.selectEmisCreditSalesmenById(id)); + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditCustomerController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditCustomerController.java new file mode 100644 index 0000000..c30a02e --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditCustomerController.java @@ -0,0 +1,67 @@ +package com.xdadan.erp.apiweb; + +import cn.hutool.core.collection.CollectionUtil; +import com.xdadan.erp.apiweb.utils.EntityAuditUtils; +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.emis.domain.EmisCreditCustomer; +import com.xdadan.erp.emis.domain.EmisCreditSalesmen; +import com.xdadan.erp.emis.domain.EmisTempCreditCustomer; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.service.IEmisCreditCustomerService; +import com.xdadan.erp.emis.service.IEmisCreditSalesmenService; +import com.xdadan.erp.emis.service.IEmisTempCreditCustomerService; +import com.xdadan.erp.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 客户临时额度Controller + * + * @author heyu + */ +@RestController +@RequestMapping("/apiweb/emisTempCreditCustomer") +public class TempCreditCustomerController extends BaseController { + + @Autowired + private IEmisTempCreditCustomerService emisTempCreditCustomerService; + + @Autowired + private IEmisCreditCustomerService emisCreditCustomerService; + + @Autowired + private ISysUserService sysUserService; + + /** + * 新增客户临时额度 + */ + @Log(title = "客户临时额度", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody EmisTempCreditCustomer emisTempCreditCustomer) { + try { + if(emisTempCreditCustomer.getParams().get("monthlyPayCode")==null){ + return AjaxResult.error("monthlyPayCode不能为空"); + } + EmisCreditCustomer emisCreditCustomer = new EmisCreditCustomer(); + emisCreditCustomer.setMonthlyPayCode((String) emisTempCreditCustomer.getParams().get("monthlyPayCode")); + List emisCreditCustomers = emisCreditCustomerService.selectEmisCreditCustomerList(emisCreditCustomer); + if(CollectionUtil.isEmpty(emisCreditCustomers)||emisCreditCustomers.size()!=1){ + return AjaxResult.error("无法匹配月结客户额度"); + } + emisTempCreditCustomer.setAccCode(emisCreditCustomers.get(0).getAccCode()); + EntityAuditUtils.setAuditInfo(emisTempCreditCustomer, null, false, this, sysUserService); + return toAjax(emisTempCreditCustomerService.insertEmisTempCreditCustomer(emisTempCreditCustomer)); + } catch (Exception e) { + return error(e.getMessage()); + } + } + +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditSalesmenController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditSalesmenController.java new file mode 100644 index 0000000..d640825 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/TempCreditSalesmenController.java @@ -0,0 +1,117 @@ + +/** + * @Project: emis + * @Title: EmisTempCreditSalesmenController.java + * @author heyu + * @date 2026-02-02 16:17:56 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

销售临时额度 控制器

+ */ + +package com.xdadan.erp.apiweb; + +import cn.hutool.core.collection.CollectionUtil; +import com.xdadan.erp.apiweb.utils.EntityAuditUtils; +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.emis.domain.EmisCreditSalesmen; +import com.xdadan.erp.emis.domain.EmisTempCreditCustomer; +import com.xdadan.erp.emis.domain.EmisTempCreditSalesmen; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.service.IEmisCreditSalesmenService; +import com.xdadan.erp.emis.service.IEmisTempCreditSalesmenService; +import com.xdadan.erp.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 销售临时额度Controller + * + * @author heyu + * @date 2026-02-02 16:17:56 + */ +@RestController +@RequestMapping("/apiweb/emisTempCreditSalesmen") +public class TempCreditSalesmenController extends BaseController +{ + @Autowired + private IEmisTempCreditSalesmenService emisTempCreditSalesmenService; + + @Autowired + private IEmisCreditSalesmenService emisCreditSalesmenService; + + @Autowired + private ISysUserService sysUserService; + + /** + * 新增客户临时额度 + */ + @Log(title = "客户临时额度", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody EmisTempCreditSalesmen emisTempCreditSalesmen) { + try { + EntityAuditUtils.setEmpNameFromOaEmpCode(emisTempCreditSalesmen, sysUserService, "setSalesmen"); + + // 验证传入的transType只能有一个(不能包含逗号) + String transType = emisTempCreditSalesmen.getTransType(); + String salesmen = emisTempCreditSalesmen.getSalesmen(); + if (transType != null && transType.contains(",")) { + return AjaxResult.error("传入的transType只能有一个"); + } + + // 验证salesmen和transType不能为空 + if (salesmen == null || transType == null || transType.trim().isEmpty()) { + return AjaxResult.error("salesmen和transType不能为空"); + } + + // 根据salesmen查询所有相关记录 + EmisCreditSalesmen queryParam = new EmisCreditSalesmen(); + queryParam.setSalesmen(salesmen); + List list = emisCreditSalesmenService.selectEmisCreditSalesmenList(queryParam); + + // 过滤出transType匹配的记录 + List matchedList = new ArrayList<>(); + for (EmisCreditSalesmen item : list) { + String dbTransType = item.getTransType(); + if (dbTransType != null) { + // 将库中的transType按逗号分割,检查是否包含传入的transType + String[] dbTransTypes = dbTransType.split(","); + for (String dbType : dbTransTypes) { + if (transType.trim().equals(dbType.trim())) { + matchedList.add(item); + break; + } + } + } + } + + if(CollectionUtil.isEmpty(matchedList)){ + return AjaxResult.error("根据salesmen和transType未查询到对应的现金客户额度"); + } + // 如果查询到多条记录,报错 + if (matchedList.size() > 1) { + return AjaxResult.error("根据salesmen和transType查询到多条记录,无法确定要新增的现金客户额度"); + } + + emisTempCreditSalesmen.setAccCode(matchedList.get(0).getAccCode()); + EntityAuditUtils.setAuditInfo(emisTempCreditSalesmen, null, false, this, sysUserService); + return toAjax(emisTempCreditSalesmenService.insertEmisTempCreditSalesmen(emisTempCreditSalesmen)); + + }catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + return AjaxResult.error("服务器异常,联系客服"); + } + } +} diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java index ebfb207..fc30ade 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java @@ -16,6 +16,7 @@ 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.apiweb.utils.EntityAuditUtils; import com.xdadan.erp.common.annotation.Log; import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter; import com.xdadan.erp.common.config.PayConfig; @@ -509,10 +510,12 @@ public class WaybillController extends BaseController public TableDataInfo list(EmisWaybill emisWaybill) { // 非总部只能查看自己的或者与自己相关的订单 - startPage(); - // setPrivParams(emisWaybill); + EntityAuditUtils.setEmpNameFromOaEmpCode(emisWaybill, sysUserService, "setSalesmen"); + + startPage(); + List list = null; // 如果单号不为空,则去除其他参数 if(!StringUtils.isEmpty(emisWaybill.getBillCode())){ @@ -552,6 +555,37 @@ public class WaybillController extends BaseController return exportList; } + /** + * 查询统计信息 + */ + @GetMapping("/getQueryStatInfoMap") + public AjaxResult getQueryStatInfoMap(EmisWaybill emisWaybill) + { + EntityAuditUtils.setEmpNameFromOaEmpCode(emisWaybill, sysUserService, "setSalesmen"); + + startPage(); + +// setPrivParams(emisWaybill); + + if(!StringUtils.isEmpty(emisWaybill.getBillCode())){ + emisWaybill.setBillCode(WaybillHelper.formatQueryValue(emisWaybill.getBillCode())); + String[] billCodeSortList = emisWaybill.getBillCode().split(","); + if(billCodeSortList.length>1){ + emisWaybill.getParams().put("billCodeSortList",Arrays.asList(billCodeSortList)); + } + } + + if(!StringUtils.isEmpty(emisWaybill.getOrderSn())){ + emisWaybill.setOrderSn(WaybillHelper.formatQueryValue(emisWaybill.getOrderSn())); + String[] orderSnSortList = emisWaybill.getOrderSn().split(","); + if(orderSnSortList.length>1){ + emisWaybill.getParams().put("orderSnSortList",Arrays.asList(orderSnSortList)); + } + } + + Map rstMap = emisWaybillService.getQueryStatInfoMap(emisWaybill); + return AjaxResult.success("查询成功",rstMap); + } diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java index efb4356..f19f060 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/utils/EntityAuditUtils.java @@ -12,7 +12,6 @@ import java.util.stream.Collectors; /** * 实体审计工具类 - * 用于设置实体的创建人、修改人、创建网点、修改网点等信息 * * @author heyu * @date 2026-01-29 @@ -20,13 +19,12 @@ import java.util.stream.Collectors; public class EntityAuditUtils { /** - * 设置实体的创建人或修改人信息 * * @param entity 实体对象 - * @param user 用户信息,如果为null则从BaseController获取当前登录用户 - * @param isUpdate 是否为更新操作,true表示更新,false表示新增 - * @param baseController BaseController实例,用于获取当前登录用户(当user为null时) - * @param sysUserService 用户服务,用于根据oaEmpCode查询用户(当从params中获取oaEmpCode时) + * @param user 用户信息 + * @param isUpdate 是否为更新操作 + * @param baseController + * @param sysUserService 用户服务 */ public static void setAuditInfo(Object entity, SysUser user, boolean isUpdate, BaseController baseController, ISysUserService sysUserService) { @@ -34,7 +32,6 @@ public class EntityAuditUtils { return; } - // 如果user为null,尝试从params中获取oaEmpCode或使用当前登录用户 if (user == null) { user = getUserFromEntity(entity, baseController, sysUserService); } @@ -45,16 +42,13 @@ public class EntityAuditUtils { 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) { - // 如果实体没有这些方法,忽略异常 } } @@ -153,4 +147,53 @@ public class EntityAuditUtils { // 如果方法不存在或调用失败,忽略异常 } } + + /** + * + * + * @param entity 实体对象 + * @param sysUserService 用户服务 + * @param setterMethodName setter方法名 + */ + public static void setEmpNameFromOaEmpCode(Object entity, ISysUserService sysUserService, String setterMethodName) { + if (entity == null || sysUserService == null || StringUtils.isEmpty(setterMethodName)) { + return; + } + + try { + // 获取params + Method getParamsMethod = entity.getClass().getMethod("getParams"); + Object params = getParamsMethod.invoke(entity); + + if (params != null && params instanceof java.util.Map) { + @SuppressWarnings("unchecked") + java.util.Map paramsMap = (java.util.Map) params; + Object oaEmpCodeObj = paramsMap.get("oaEmpCode"); + + if (oaEmpCodeObj != null) { + String oaEmpCode = oaEmpCodeObj.toString(); + if (StringUtils.isNotEmpty(oaEmpCode)) { + try { + SysUser queryUser = new SysUser(); + // 使用反射设置oaEmpCode,兼容不同的字段名 + setFieldValueByReflection(queryUser, "setOaEmpCode", oaEmpCode); + List userList = sysUserService.selectUserList(queryUser); + if (userList != null && !userList.isEmpty()) { + // 取第一个用户的empName + String empName = userList.get(0).getEmpName(); + if (StringUtils.isNotEmpty(empName)) { + // 使用反射设置到实体的指定字段 + setFieldValue(entity, setterMethodName, empName); + } + } + } catch (Exception e) { + // 查询失败时忽略异常,继续使用原有参数查询 + } + } + } + } + } catch (Exception e) { + // 如果实体没有getParams方法,忽略异常 + } + } } From ce357a89c779e3828a68080914513ff8a98b5c8e Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 9 Mar 2026 15:48:26 +0800 Subject: [PATCH 4/5] =?UTF-8?q?demand:=20=20=20=20=20tms-oa=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3-=E6=9F=A5=E8=AF=A2=E7=BD=91=E7=82=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xdadan/erp/apiweb/SiteController.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteController.java diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteController.java new file mode 100644 index 0000000..64018ab --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/SiteController.java @@ -0,0 +1,61 @@ + +/** + * @Project: emis + * @Title: EmisSiteController.java + * @author heyu + * @date 2026-03-09 13:02:46 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

网点 控制器

+ */ + +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.emis.domain.EmisSite; +import com.xdadan.erp.emis.service.EmisBaseService; +import com.xdadan.erp.emis.service.IEmisSiteService; +import com.xdadan.erp.emis.utils.WaybillHelper; +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-03-09 13:02:46 + */ +@RestController +@RequestMapping("/apiweb/emisSite") +public class SiteController extends BaseController +{ + @Autowired + private IEmisSiteService emisSiteService; + + @Autowired + private EmisBaseService emisBaseService; + + /** + * 查询网点列表 + */ + @GetMapping("/list") + public TableDataInfo list(EmisSite emisSite) + { + startPage(); + List list = emisSiteService.selectEmisSiteList(emisSite); + return getDataTable(list); + } + +} From ed120bbf70dd49774dd7b1db31d3bb81d47154e0 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Wed, 11 Mar 2026 10:16:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?demand:=20=20=20=20=20tms-oa=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3-=E5=91=98=E5=B7=A5=E6=8F=90=E6=88=90=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=91=98=E5=B7=A5OA=E5=B7=A5=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiweb/CommissionProfitController.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java index 2713072..a625973 100644 --- a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/CommissionProfitController.java @@ -31,6 +31,7 @@ import com.xdadan.erp.emis.service.IEmisCommissionDtlService; import com.xdadan.erp.emis.service.IEmisCommissionProfitService; import com.xdadan.erp.emis.utils.WaybillHelper; import com.xdadan.erp.system.service.ISysUserService; +import com.xdadan.erp.common.core.domain.entity.SysUser; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -40,8 +41,10 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; import java.math.BigDecimal; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -81,9 +84,62 @@ public class CommissionProfitController extends BaseController startPage(); List list = emisCommissionProfitService.selectEmisCommissionProfitList(emisCommissionProfit); + + // 将每个对象的oaEmpCode设置到params中 + if (list != null && !list.isEmpty()) { + for (EmisCommissionProfit item : list) { + try { + // 通过empName查询获取oaEmpCode + String oaEmpCode = getOaEmpCodeByEmpName(item); +// if (StringUtils.isNotEmpty(oaEmpCode)) { +// // 确保params不为null +// if (item.getParams() == null) { +// item.setParams(new HashMap<>()); +// } +// // 将oaEmpCode设置到params中 +// item.getParams().put("oaEmpCode", oaEmpCode); +// } + // 将oaEmpCode设置到params中 + item.getParams().put("oaEmpCode", oaEmpCode); + } catch (Exception e) { + // 忽略异常,继续处理下一个对象 + log.debug("设置oaEmpCode到params失败: {}", e.getMessage()); + } + } + } + return getDataTable(list); } + /** + * 通过empName查询用户,获取oaEmpCode + */ + private String getOaEmpCodeByEmpName(EmisCommissionProfit item) { + if (item == null || sysUserService == null) { + return null; + } + try { + String empName = item.getEmpName(); + if (StringUtils.isEmpty(empName)) { + return null; + } + + // 使用empName查询用户 + SysUser queryUser = new SysUser(); + queryUser.setEmpName(empName); + List userList = sysUserService.selectUserList(queryUser); + + if (userList != null && !userList.isEmpty()) { + // 取第一个用户 + SysUser user = userList.get(0); + return user.getOaEmpCode(); + } + } catch (Exception e) { + log.debug("通过empName查询oaEmpCode失败: {}", e.getMessage()); + } + + return null; + } }