From 0d483ae6a22079c1765d4fc9ceba0abc88d6b33a Mon Sep 17 00:00:00 2001 From: "HUOJIN\\92525" Date: Mon, 7 Apr 2025 10:34:39 +0800 Subject: [PATCH] no message --- .../asn/constant/AsnOrderStatusEnum.java | 14 ++++ .../receive/asn/domain/form/AsnAddForm.java | 4 +- .../receive/asn/service/AsnQueryService.java | 24 ++++++- .../receive/asn/service/AsnService.java | 65 +++++++++++++++++-- .../service/AsnDetailQueryService.java | 22 +++++++ .../mapper/business/receive/asn/AsnMapper.xml | 1 + .../src/main/resources/dev/sa-base.yaml | 2 +- 7 files changed, 123 insertions(+), 9 deletions(-) diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/constant/AsnOrderStatusEnum.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/constant/AsnOrderStatusEnum.java index edd7ee5..ee9a6b1 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/constant/AsnOrderStatusEnum.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/constant/AsnOrderStatusEnum.java @@ -43,4 +43,18 @@ public enum AsnOrderStatusEnum implements BaseEnum { private final String value; private final String desc; + + /** + * 根据 value 获取对应的 desc + * @param value 枚举值 + * @return 对应的描述,如果未找到则返回 null + */ + public static String getDescByValue(String value) { + for (AsnOrderStatusEnum status : AsnOrderStatusEnum.values()) { + if (status.getValue().equals(value)) { + return status.getDesc(); + } + } + return null; + } } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/domain/form/AsnAddForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/domain/form/AsnAddForm.java index adc2055..b3aefa4 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/domain/form/AsnAddForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/domain/form/AsnAddForm.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; import lombok.Data; +import net.lab1024.sa.admin.module.business.receive.asn.constant.AsnOrderStatusEnum; import net.lab1024.sa.admin.module.business.receive.asn.constant.AsnOrderTypeEnum; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; @@ -23,7 +24,8 @@ public class AsnAddForm { @Schema(description = "入库单号") private String asnNumber; - @Schema(description = "状态") + @SchemaEnum(AsnOrderStatusEnum.class) + @CheckEnum(message = "状态", value = AsnOrderStatusEnum.class) private String status; @Schema(description = "客户", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnQueryService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnQueryService.java index d784916..0f1f843 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnQueryService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnQueryService.java @@ -13,8 +13,11 @@ import net.lab1024.sa.admin.module.business.receive.asn.dao.AsnDao; import net.lab1024.sa.admin.module.business.receive.asn.domain.entity.AsnEntity; import net.lab1024.sa.admin.module.business.receive.asn.domain.form.AsnQueryForm; import net.lab1024.sa.admin.module.business.receive.asn.domain.vo.AsnVO; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.util.SmartPageUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -56,7 +59,7 @@ public class AsnQueryService { if (customer != null) { asnVO.setCustomerName(customer.getCustomerName()); } - AddressEntity address=addressMap.get(asnVO.getAddressId()); + AddressEntity address = addressMap.get(asnVO.getAddressId()); if (address != null) { asnVO.setName(address.getName()); } @@ -66,14 +69,33 @@ public class AsnQueryService { /** * 根据客户订单号查询入库单 + * * @param customerNumber 客户订单号 * @return AsnEntity */ public AsnEntity queryByCustomerNumber(String customerNumber) { + if (StringUtils.isBlank(customerNumber)) { + return null; + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AsnEntity::getCustomerNumber, customerNumber); return asnDao.selectOne(queryWrapper); } + /** + * 根据ids查询入库 + * + * @param idList 入库集合 + * @return List + */ + public List queryAsnList(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return null; + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(AsnEntity::getAsnId, idList); + return asnDao.selectList(queryWrapper); + } + } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnService.java index 4286a6b..08a544e 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asn/service/AsnService.java @@ -1,6 +1,9 @@ package net.lab1024.sa.admin.module.business.receive.asn.service; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import net.lab1024.sa.admin.module.business.receive.asn.constant.AsnOrderStatusEnum; import net.lab1024.sa.admin.module.business.receive.asn.dao.AsnDao; @@ -10,6 +13,11 @@ import net.lab1024.sa.admin.module.business.receive.asn.domain.form.AsnQueryForm import net.lab1024.sa.admin.module.business.receive.asn.domain.form.AsnUpdateForm; import net.lab1024.sa.admin.module.business.receive.asn.domain.vo.AsnVO; import net.lab1024.sa.admin.module.business.receive.asn.manager.AsnManager; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.manager.AsnDetailManager; +import net.lab1024.sa.admin.module.business.receive.asnDetail.service.AsnDetailQueryService; +import net.lab1024.sa.admin.util.JoinerResult; +import net.lab1024.sa.admin.util.ResponseDTOUtils; import net.lab1024.sa.base.common.code.UserErrorCode; import net.lab1024.sa.base.common.exception.BusinessException; import net.lab1024.sa.base.common.util.SmartBeanUtil; @@ -42,9 +50,15 @@ public class AsnService { @Resource private AsnManager asnManager; + @Resource + private AsnDetailManager asnDetailManager; + @Resource private AsnQueryService asnQueryService; + @Resource + private AsnDetailQueryService asnDetailQueryService; + @Resource private SerialNumberService serialNumberService; @@ -58,7 +72,7 @@ public class AsnService { public ResponseDTO add(AsnAddForm addForm) { AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(addForm.getCustomerNumber()); if (exitAsn != null) { - throw new BusinessException(addForm.getCustomerNumber()+"客户订单号已存在"); + throw new BusinessException(addForm.getCustomerNumber() + "客户订单号已存在"); } //自动生成入库编号 addForm.setAsnNumber(serialNumberService.generate(SerialNumberIdEnum.ASN)); @@ -79,7 +93,7 @@ public class AsnService { public ResponseDTO update(AsnUpdateForm updateForm) { AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(updateForm.getCustomerNumber()); if (exitAsn != null && !exitAsn.getAsnId().equals(updateForm.getAsnId())) { - throw new BusinessException(updateForm.getCustomerNumber()+"客户订单号已存在"); + throw new BusinessException(updateForm.getCustomerNumber() + "客户订单号已存在"); } AsnEntity asnEntity = SmartBeanUtil.copy(updateForm, AsnEntity.class); asnDao.updateById(asnEntity); @@ -89,26 +103,65 @@ public class AsnService { /** * 批量删除 * - * @param idList id集合 + * @param idList 入库单id集合 * @return ResponseDTO */ + @Transactional(rollbackFor = Exception.class) public ResponseDTO batchDelete(List idList) { if (CollectionUtils.isEmpty(idList)) { return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg()); } + JoinerResult joiner = JoinerResult.createJoiner(); - asnManager.removeBatchByIds(idList); - return ResponseDTO.ok(); + //查询批量订单 + List asnList = asnQueryService.queryAsnList(idList); + + //将订单按状态分组;已创建的一组;非已创建的一组。 + Map> partitionedAsnList = asnList.stream() + .collect(Collectors.partitioningBy(asn -> AsnOrderStatusEnum.CREATED.getValue().equals(asn.getStatus()))); + //已创建的订单允许删除 + List createAsnList = partitionedAsnList.get(true); + //入库单集合 + List asnIds = createAsnList.stream().map(AsnEntity::getAsnId).collect(Collectors.toList()); + //根据入库单ID集合查询入库明细 + List details = asnDetailQueryService.queryByAsnIds(asnIds); + if (CollectionUtils.isNotEmpty(details)) { + asnDetailManager.removeBatchByIds(details); + } + if (CollectionUtils.isNotEmpty(createAsnList)) { + Set asnCodes = createAsnList.stream().map(AsnEntity::getAsnNumber).collect(Collectors.toSet()); + asnManager.removeBatchByIds(createAsnList); + joiner.getSussMsg().add(asnCodes + "订单删除成功"); + } + + //非已创建的订单不允许删除 + List noCreateAsnList = partitionedAsnList.get(false); + if (CollectionUtils.isNotEmpty(noCreateAsnList)) { + Set asnCodes = noCreateAsnList.stream().map(AsnEntity::getAsnNumber).collect(Collectors.toSet()); + joiner.getErrorMsg().add(asnCodes + "订单不允许删除"); + } + + return ResponseDTOUtils.buildResponseDTO(joiner); } /** * 单个删除 */ + @Transactional(rollbackFor = Exception.class) public ResponseDTO delete(Long asnId) { if (null == asnId) { return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg()); } - + AsnEntity asn = asnDao.selectById(asnId); + String status = asn.getStatus(); + // 只有已创建的订单才允许删除 + if (!AsnOrderStatusEnum.CREATED.getValue().equals(status)) { + return ResponseDTO.userErrorParam(AsnOrderStatusEnum.getDescByValue(status) + "的订单不允许删除"); + } + List details = asnDetailQueryService.queryByAsnId(asnId); + if (CollectionUtils.isNotEmpty(details)) { + asnDetailManager.removeBatchByIds(details); + } asnDao.deleteById(asnId); return ResponseDTO.ok(); } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailQueryService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailQueryService.java index 9a6e880..2671be7 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailQueryService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailQueryService.java @@ -19,6 +19,7 @@ import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.vo.AsnDetai import net.lab1024.sa.admin.module.business.receive.asnDetail.manager.AsnDetailManager; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.util.SmartPageUtil; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -67,11 +68,29 @@ public class AsnDetailQueryService { * @return List */ public List queryByAsnId(Long asnId) { + if (asnId == null) { + return null; + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AsnDetailEntity::getAsnId, asnId); return asnDetailDao.selectList(queryWrapper); } + /** + * 根据入库单ids查询入库单详情 + * + * @param asnIds 入库单id + * @return List + */ + public List queryByAsnIds(List asnIds) { + if (CollectionUtils.isEmpty(asnIds)) { + return null; + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(AsnDetailEntity::getAsnId, asnIds); + return asnDetailDao.selectList(queryWrapper); + } + /** * 根据ids查询入库明细 * @@ -79,6 +98,9 @@ public class AsnDetailQueryService { * @return List */ public List queryAsnDetailList(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return null; + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(AsnDetailEntity::getAsnDetailId, idList); return asnDetailDao.selectList(queryWrapper); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asn/AsnMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asn/AsnMapper.xml index 94bf2a1..4038685 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asn/AsnMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asn/AsnMapper.xml @@ -34,6 +34,7 @@ AND INSTR(t_asn.customer_number,#{queryForm.customerNumber}) + ORDER BY t_asn.asn_id DESC diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml index 218d3fd..37e68e0 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/dev/sa-base.yaml @@ -1,7 +1,7 @@ spring: # 数据库连接信息 datasource: - url: jdbc:p6spy:mysql://127.0.0.1:53306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai + url: jdbc:p6spy:mysql://47.103.100.52:53306/nc_wms?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai username: root password: Youchain@56 driver-class-name: com.p6spy.engine.spy.P6SpyDriver