no message
parent
33029502c7
commit
0d483ae6a2
|
|
@ -43,4 +43,18 @@ public enum AsnOrderStatusEnum implements BaseEnum {
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
private final String desc;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import lombok.Data;
|
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.admin.module.business.receive.asn.constant.AsnOrderTypeEnum;
|
||||||
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
import net.lab1024.sa.base.common.swagger.SchemaEnum;
|
||||||
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
|
||||||
|
|
@ -23,7 +24,8 @@ public class AsnAddForm {
|
||||||
@Schema(description = "入库单号")
|
@Schema(description = "入库单号")
|
||||||
private String asnNumber;
|
private String asnNumber;
|
||||||
|
|
||||||
@Schema(description = "状态")
|
@SchemaEnum(AsnOrderStatusEnum.class)
|
||||||
|
@CheckEnum(message = "状态", value = AsnOrderStatusEnum.class)
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
@Schema(description = "客户", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "客户", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
|
|
||||||
|
|
@ -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.entity.AsnEntity;
|
||||||
import net.lab1024.sa.admin.module.business.receive.asn.domain.form.AsnQueryForm;
|
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.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.domain.PageResult;
|
||||||
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -56,7 +59,7 @@ public class AsnQueryService {
|
||||||
if (customer != null) {
|
if (customer != null) {
|
||||||
asnVO.setCustomerName(customer.getCustomerName());
|
asnVO.setCustomerName(customer.getCustomerName());
|
||||||
}
|
}
|
||||||
AddressEntity address=addressMap.get(asnVO.getAddressId());
|
AddressEntity address = addressMap.get(asnVO.getAddressId());
|
||||||
if (address != null) {
|
if (address != null) {
|
||||||
asnVO.setName(address.getName());
|
asnVO.setName(address.getName());
|
||||||
}
|
}
|
||||||
|
|
@ -66,14 +69,33 @@ public class AsnQueryService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据客户订单号查询入库单
|
* 根据客户订单号查询入库单
|
||||||
|
*
|
||||||
* @param customerNumber 客户订单号
|
* @param customerNumber 客户订单号
|
||||||
* @return AsnEntity
|
* @return AsnEntity
|
||||||
*/
|
*/
|
||||||
public AsnEntity queryByCustomerNumber(String customerNumber) {
|
public AsnEntity queryByCustomerNumber(String customerNumber) {
|
||||||
|
if (StringUtils.isBlank(customerNumber)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
LambdaQueryWrapper<AsnEntity> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AsnEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(AsnEntity::getCustomerNumber, customerNumber);
|
queryWrapper.eq(AsnEntity::getCustomerNumber, customerNumber);
|
||||||
return asnDao.selectOne(queryWrapper);
|
return asnDao.selectOne(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ids查询入库
|
||||||
|
*
|
||||||
|
* @param idList 入库集合
|
||||||
|
* @return List<AsnEntity>
|
||||||
|
*/
|
||||||
|
public List<AsnEntity> queryAsnList(List<Long> idList) {
|
||||||
|
if (CollectionUtils.isEmpty(idList)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<AsnEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.in(AsnEntity::getAsnId, idList);
|
||||||
|
return asnDao.selectList(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
package net.lab1024.sa.admin.module.business.receive.asn.service;
|
package net.lab1024.sa.admin.module.business.receive.asn.service;
|
||||||
|
|
||||||
import java.util.List;
|
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.constant.AsnOrderStatusEnum;
|
||||||
import net.lab1024.sa.admin.module.business.receive.asn.dao.AsnDao;
|
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.form.AsnUpdateForm;
|
||||||
import net.lab1024.sa.admin.module.business.receive.asn.domain.vo.AsnVO;
|
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.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.code.UserErrorCode;
|
||||||
import net.lab1024.sa.base.common.exception.BusinessException;
|
import net.lab1024.sa.base.common.exception.BusinessException;
|
||||||
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
import net.lab1024.sa.base.common.util.SmartBeanUtil;
|
||||||
|
|
@ -42,9 +50,15 @@ public class AsnService {
|
||||||
@Resource
|
@Resource
|
||||||
private AsnManager asnManager;
|
private AsnManager asnManager;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AsnDetailManager asnDetailManager;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AsnQueryService asnQueryService;
|
private AsnQueryService asnQueryService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AsnDetailQueryService asnDetailQueryService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SerialNumberService serialNumberService;
|
private SerialNumberService serialNumberService;
|
||||||
|
|
||||||
|
|
@ -58,7 +72,7 @@ public class AsnService {
|
||||||
public ResponseDTO<AsnEntity> add(AsnAddForm addForm) {
|
public ResponseDTO<AsnEntity> add(AsnAddForm addForm) {
|
||||||
AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(addForm.getCustomerNumber());
|
AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(addForm.getCustomerNumber());
|
||||||
if (exitAsn != null) {
|
if (exitAsn != null) {
|
||||||
throw new BusinessException(addForm.getCustomerNumber()+"客户订单号已存在");
|
throw new BusinessException(addForm.getCustomerNumber() + "客户订单号已存在");
|
||||||
}
|
}
|
||||||
//自动生成入库编号
|
//自动生成入库编号
|
||||||
addForm.setAsnNumber(serialNumberService.generate(SerialNumberIdEnum.ASN));
|
addForm.setAsnNumber(serialNumberService.generate(SerialNumberIdEnum.ASN));
|
||||||
|
|
@ -79,7 +93,7 @@ public class AsnService {
|
||||||
public ResponseDTO<AsnEntity> update(AsnUpdateForm updateForm) {
|
public ResponseDTO<AsnEntity> update(AsnUpdateForm updateForm) {
|
||||||
AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(updateForm.getCustomerNumber());
|
AsnEntity exitAsn = asnQueryService.queryByCustomerNumber(updateForm.getCustomerNumber());
|
||||||
if (exitAsn != null && !exitAsn.getAsnId().equals(updateForm.getAsnId())) {
|
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);
|
AsnEntity asnEntity = SmartBeanUtil.copy(updateForm, AsnEntity.class);
|
||||||
asnDao.updateById(asnEntity);
|
asnDao.updateById(asnEntity);
|
||||||
|
|
@ -89,26 +103,65 @@ public class AsnService {
|
||||||
/**
|
/**
|
||||||
* 批量删除
|
* 批量删除
|
||||||
*
|
*
|
||||||
* @param idList id集合
|
* @param idList 入库单id集合
|
||||||
* @return ResponseDTO<String>
|
* @return ResponseDTO<String>
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> batchDelete(List<Long> idList) {
|
public ResponseDTO<String> batchDelete(List<Long> idList) {
|
||||||
if (CollectionUtils.isEmpty(idList)) {
|
if (CollectionUtils.isEmpty(idList)) {
|
||||||
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
|
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
|
||||||
}
|
}
|
||||||
|
JoinerResult joiner = JoinerResult.createJoiner();
|
||||||
|
|
||||||
asnManager.removeBatchByIds(idList);
|
//查询批量订单
|
||||||
return ResponseDTO.ok();
|
List<AsnEntity> asnList = asnQueryService.queryAsnList(idList);
|
||||||
|
|
||||||
|
//将订单按状态分组;已创建的一组;非已创建的一组。
|
||||||
|
Map<Boolean, List<AsnEntity>> partitionedAsnList = asnList.stream()
|
||||||
|
.collect(Collectors.partitioningBy(asn -> AsnOrderStatusEnum.CREATED.getValue().equals(asn.getStatus())));
|
||||||
|
//已创建的订单允许删除
|
||||||
|
List<AsnEntity> createAsnList = partitionedAsnList.get(true);
|
||||||
|
//入库单集合
|
||||||
|
List<Long> asnIds = createAsnList.stream().map(AsnEntity::getAsnId).collect(Collectors.toList());
|
||||||
|
//根据入库单ID集合查询入库明细
|
||||||
|
List<AsnDetailEntity> details = asnDetailQueryService.queryByAsnIds(asnIds);
|
||||||
|
if (CollectionUtils.isNotEmpty(details)) {
|
||||||
|
asnDetailManager.removeBatchByIds(details);
|
||||||
|
}
|
||||||
|
if (CollectionUtils.isNotEmpty(createAsnList)) {
|
||||||
|
Set<String> asnCodes = createAsnList.stream().map(AsnEntity::getAsnNumber).collect(Collectors.toSet());
|
||||||
|
asnManager.removeBatchByIds(createAsnList);
|
||||||
|
joiner.getSussMsg().add(asnCodes + "订单删除成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
//非已创建的订单不允许删除
|
||||||
|
List<AsnEntity> noCreateAsnList = partitionedAsnList.get(false);
|
||||||
|
if (CollectionUtils.isNotEmpty(noCreateAsnList)) {
|
||||||
|
Set<String> asnCodes = noCreateAsnList.stream().map(AsnEntity::getAsnNumber).collect(Collectors.toSet());
|
||||||
|
joiner.getErrorMsg().add(asnCodes + "订单不允许删除");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseDTOUtils.buildResponseDTO(joiner);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单个删除
|
* 单个删除
|
||||||
*/
|
*/
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResponseDTO<String> delete(Long asnId) {
|
public ResponseDTO<String> delete(Long asnId) {
|
||||||
if (null == asnId) {
|
if (null == asnId) {
|
||||||
return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg());
|
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<AsnDetailEntity> details = asnDetailQueryService.queryByAsnId(asnId);
|
||||||
|
if (CollectionUtils.isNotEmpty(details)) {
|
||||||
|
asnDetailManager.removeBatchByIds(details);
|
||||||
|
}
|
||||||
asnDao.deleteById(asnId);
|
asnDao.deleteById(asnId);
|
||||||
return ResponseDTO.ok();
|
return ResponseDTO.ok();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.admin.module.business.receive.asnDetail.manager.AsnDetailManager;
|
||||||
import net.lab1024.sa.base.common.domain.PageResult;
|
import net.lab1024.sa.base.common.domain.PageResult;
|
||||||
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
import net.lab1024.sa.base.common.util.SmartPageUtil;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -67,11 +68,29 @@ public class AsnDetailQueryService {
|
||||||
* @return List<AsnDetailEntity>
|
* @return List<AsnDetailEntity>
|
||||||
*/
|
*/
|
||||||
public List<AsnDetailEntity> queryByAsnId(Long asnId) {
|
public List<AsnDetailEntity> queryByAsnId(Long asnId) {
|
||||||
|
if (asnId == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(AsnDetailEntity::getAsnId, asnId);
|
queryWrapper.eq(AsnDetailEntity::getAsnId, asnId);
|
||||||
return asnDetailDao.selectList(queryWrapper);
|
return asnDetailDao.selectList(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据入库单ids查询入库单详情
|
||||||
|
*
|
||||||
|
* @param asnIds 入库单id
|
||||||
|
* @return List<AsnDetailEntity>
|
||||||
|
*/
|
||||||
|
public List<AsnDetailEntity> queryByAsnIds(List<Long> asnIds) {
|
||||||
|
if (CollectionUtils.isEmpty(asnIds)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.in(AsnDetailEntity::getAsnId, asnIds);
|
||||||
|
return asnDetailDao.selectList(queryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据ids查询入库明细
|
* 根据ids查询入库明细
|
||||||
*
|
*
|
||||||
|
|
@ -79,6 +98,9 @@ public class AsnDetailQueryService {
|
||||||
* @return List<AsnDetailEntity>
|
* @return List<AsnDetailEntity>
|
||||||
*/
|
*/
|
||||||
public List<AsnDetailEntity> queryAsnDetailList(List<Long> idList) {
|
public List<AsnDetailEntity> queryAsnDetailList(List<Long> idList) {
|
||||||
|
if (CollectionUtils.isEmpty(idList)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AsnDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.in(AsnDetailEntity::getAsnDetailId, idList);
|
queryWrapper.in(AsnDetailEntity::getAsnDetailId, idList);
|
||||||
return asnDetailDao.selectList(queryWrapper);
|
return asnDetailDao.selectList(queryWrapper);
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@
|
||||||
AND INSTR(t_asn.customer_number,#{queryForm.customerNumber})
|
AND INSTR(t_asn.customer_number,#{queryForm.customerNumber})
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
ORDER BY t_asn.asn_id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
spring:
|
spring:
|
||||||
# 数据库连接信息
|
# 数据库连接信息
|
||||||
datasource:
|
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
|
username: root
|
||||||
password: Youchain@56
|
password: Youchain@56
|
||||||
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue