diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/customer/service/CustomerQueryService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/customer/service/CustomerQueryService.java index 88f2f42..28796ba 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/customer/service/CustomerQueryService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/customer/service/CustomerQueryService.java @@ -61,7 +61,7 @@ public class CustomerQueryService { * 根据客户id集合查询客户信息 * * @param customerIdList 客户id集合 - * @return Map + * @return Map */ public Map queryCustomerList(List customerIdList) { if (CollectionUtils.isEmpty(customerIdList)) { diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/item/service/ItemQueryService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/item/service/ItemQueryService.java index 8c6ea71..da9ffd5 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/item/service/ItemQueryService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/base/item/service/ItemQueryService.java @@ -2,6 +2,7 @@ package net.lab1024.sa.admin.module.business.base.item.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Maps; import jakarta.annotation.Resource; import net.lab1024.sa.admin.module.business.base.item.dao.ItemDao; import net.lab1024.sa.admin.module.business.base.item.domain.entity.ItemEntity; @@ -9,6 +10,7 @@ import net.lab1024.sa.admin.module.business.base.item.domain.form.ItemQueryForm; import net.lab1024.sa.admin.module.business.base.item.domain.form.ItemSelect; import net.lab1024.sa.admin.module.business.base.item.domain.vo.ItemVO; import net.lab1024.sa.admin.module.business.base.item.domain.vo.ItemsExcelVO; +import net.lab1024.sa.admin.module.business.base.item.manager.ItemManager; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.module.support.dict.constant.DictConst; @@ -23,9 +25,13 @@ import java.util.stream.Collectors; @Service public class ItemQueryService { + @Resource private ItemDao itemDao; + @Resource + private ItemManager itemManager; + @Resource private DictCacheService dictCacheService; @@ -56,6 +62,27 @@ public class ItemQueryService { return itemDao.selectList(queryWrapper); } + /** + * 根据物料id集合查询物料信息 + * + * @param itemIdList 客户id集合 + * @return Map + */ + public Map queryItemList(List itemIdList) { + if (CollectionUtils.isEmpty(itemIdList)) { + return Collections.emptyMap(); + } + itemIdList = itemIdList.stream().distinct().collect(Collectors.toList()); + Map itemMap = Maps.newHashMap(); + for (Long itemId : itemIdList) { + ItemEntity item = itemManager.queryItem(itemId); + if (item != null) { + itemMap.put(itemId, item); + } + } + return itemMap; + } + /** * 根据物料编码查询 * diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/controller/AsnDetailController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/controller/AsnDetailController.java new file mode 100644 index 0000000..edea6fb --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/controller/AsnDetailController.java @@ -0,0 +1,76 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.controller; + +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailAddForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailQueryForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailUpdateForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.vo.AsnDetailVO; +import net.lab1024.sa.admin.module.business.receive.asnDetail.service.AsnDetailQueryService; +import net.lab1024.sa.admin.module.business.receive.asnDetail.service.AsnDetailService; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import org.springframework.web.bind.annotation.*; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.PageResult; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; + +/** + * 入库明细 Controller + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@RestController +@Tag(name = "入库明细") +public class AsnDetailController { + + @Resource + private AsnDetailService asnDetailService; + + @Resource + private AsnDetailQueryService asnDetailQueryService; + + @Operation(summary = "分页查询 @author 霍锦") + @PostMapping("/asnDetail/queryPage") + @SaCheckPermission("asnDetail:query") + public ResponseDTO> queryPage(@RequestBody @Valid AsnDetailQueryForm queryForm) { + return ResponseDTO.ok(asnDetailQueryService.queryPage(queryForm)); + } + + @Operation(summary = "添加 @author 霍锦") + @PostMapping("/asnDetail/add") + @SaCheckPermission("asnDetail:add") + public ResponseDTO add(@RequestBody @Valid AsnDetailAddForm addForm) { + RequestUser requestUser = SmartRequestUtil.getRequestUser(); + addForm.setCreateUserId(requestUser.getUserId()); + addForm.setCreateUserName(requestUser.getUserName()); + return asnDetailService.add(addForm); + } + + @Operation(summary = "更新 @author 霍锦") + @PostMapping("/asnDetail/update") + @SaCheckPermission("asnDetail:update") + public ResponseDTO update(@RequestBody @Valid AsnDetailUpdateForm updateForm) { + return asnDetailService.update(updateForm); + } + + @Operation(summary = "批量删除 @author 霍锦") + @PostMapping("/asnDetail/batchDelete") + @SaCheckPermission("asnDetail:batchDelete") + public ResponseDTO batchDelete(@RequestBody ValidateList idList) { + return asnDetailService.batchDelete(idList); + } + + @Operation(summary = "单个删除 @author 霍锦") + @GetMapping("/asnDetail/delete") + @SaCheckPermission("asnDetail:delete") + public ResponseDTO delete(@RequestParam Long asnDetailId) { + return asnDetailService.delete(asnDetailId); + } +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/dao/AsnDetailDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/dao/AsnDetailDao.java new file mode 100644 index 0000000..396bd23 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/dao/AsnDetailDao.java @@ -0,0 +1,34 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.dao; + +import java.util.List; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailQueryForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.vo.AsnDetailVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +/** + * 入库明细 Dao + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Mapper +@Component +public interface AsnDetailDao extends BaseMapper { + + /** + * 分页 查询 + * + * @param page + * @param queryForm + * @return + */ + List queryPage(Page page, @Param("queryForm") AsnDetailQueryForm queryForm); + +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/entity/AsnDetailEntity.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/entity/AsnDetailEntity.java new file mode 100644 index 0000000..eb4ea92 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/entity/AsnDetailEntity.java @@ -0,0 +1,72 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Data; + +/** + * 入库明细 实体类 + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Data +@TableName("t_asn_detail") +public class AsnDetailEntity { + + /** + * 入库明细id + */ + @TableId(type = IdType.AUTO) + private Long asnDetailId; + + /** + * 入库单id + */ + private Long asnId; + + /** + * 物料id + */ + private Long itemId; + + /** + * 订单数量 + */ + private BigDecimal orderQuantity; + + /** + * 收货数量 + */ + private BigDecimal receivedQuantity; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** + * 创建人ID + */ + private Long createUserId; + + /** + * 创建人 + */ + private String createUserName; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailAddForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailAddForm.java new file mode 100644 index 0000000..b15151f --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailAddForm.java @@ -0,0 +1,40 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Data; + +/** + * 入库明细 新建表单 + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Data +public class AsnDetailAddForm { + @Schema(description = "入库单", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "入库单 不能为空") + private Long asnId; + + @Schema(description = "物料", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "物料 不能为空") + private Long itemId; + + @Schema(description = "订单数量") + @NotNull(message = "订单数量不能为空") + @DecimalMin(value = "1", message = "订单数量最低1") + private BigDecimal orderQuantity; + + @Schema(hidden = true) + private Long createUserId; + + @Schema(hidden = true) + private String createUserName; +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailQueryForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailQueryForm.java new file mode 100644 index 0000000..8230127 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailQueryForm.java @@ -0,0 +1,26 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form; + +import net.lab1024.sa.base.common.domain.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 入库明细 分页查询表单 + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class AsnDetailQueryForm extends PageParam { + + @Schema(description = "入库单") + private Long asnId; + + @Schema(description = "物料") + private Long itemId; + +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailUpdateForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailUpdateForm.java new file mode 100644 index 0000000..5d31ea8 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/form/AsnDetailUpdateForm.java @@ -0,0 +1,22 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 入库明细 更新表单 + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Data +public class AsnDetailUpdateForm extends AsnDetailAddForm{ + + @Schema(description = "入库明细id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "入库明细id 不能为空") + private Long asnDetailId; + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/vo/AsnDetailVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/vo/AsnDetailVO.java new file mode 100644 index 0000000..04ff2cb --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/domain/vo/AsnDetailVO.java @@ -0,0 +1,46 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import lombok.Data; + +/** + * 入库明细 列表VO + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ + +@Data +public class AsnDetailVO { + + + @Schema(description = "入库明细id") + private Long asnDetailId; + + @Schema(description = "入库单id") + private Long asnId; + + @Schema(description = "物料id") + private Long itemId; + + @Schema(description = "物料编码") + private String itemCode; + + @Schema(description = "物料名称") + private String itemName; + + @Schema(description = "订单数量") + private BigDecimal orderQuantity; + + @Schema(description = "收货数量") + private BigDecimal receivedQuantity; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/manager/AsnDetailManager.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/manager/AsnDetailManager.java new file mode 100644 index 0000000..454ff82 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/manager/AsnDetailManager.java @@ -0,0 +1,20 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.manager; + +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.dao.AsnDetailDao; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 入库明细 Manager + * + * @Author 霍锦 + * @Date 2025-03-26 15:16:28 + * @Copyright 友仓 + */ +@Service +public class AsnDetailManager extends ServiceImpl { + + +} 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 new file mode 100644 index 0000000..fb95c1c --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailQueryService.java @@ -0,0 +1,66 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.annotation.Resource; +import net.lab1024.sa.admin.module.business.base.address.domain.entity.AddressEntity; +import net.lab1024.sa.admin.module.business.base.customer.domain.entity.CustomerEntity; +import net.lab1024.sa.admin.module.business.base.item.domain.entity.ItemEntity; +import net.lab1024.sa.admin.module.business.base.item.service.ItemQueryService; +import net.lab1024.sa.admin.module.business.receive.asn.domain.vo.AsnVO; +import net.lab1024.sa.admin.module.business.receive.asnDetail.dao.AsnDetailDao; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailQueryForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.vo.AsnDetailVO; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class AsnDetailQueryService { + + @Resource + private AsnDetailDao asnDetailDao; + + @Resource + private ItemQueryService itemQueryService; + + /** + * 分页查询 + * + * @param queryForm 查询条件 + * @return PageResult + */ + public PageResult queryPage(AsnDetailQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List list = asnDetailDao.queryPage(page, queryForm); + // 查询物料名称 + List itemIdList = list.stream().map(AsnDetailVO::getItemId).distinct().collect(Collectors.toList()); + Map itemMap = itemQueryService.queryItemList(itemIdList); + list.forEach(asnDetailVO -> { + ItemEntity item = itemMap.get(asnDetailVO.getItemId()); + if (item != null) { + asnDetailVO.setItemCode(item.getItemCode()); + asnDetailVO.setItemName(item.getItemName()); + } + }); + + return SmartPageUtil.convert2PageResult(page, list); + } + + /** + * 根据入库单id查询入库单详情 + * + * @param asnId 入库单id + * @return List + */ + public List queryByAsnId(Long asnId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AsnDetailEntity::getAsnId, asnId); + return asnDetailDao.selectList(queryWrapper); + } +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailService.java new file mode 100644 index 0000000..43463f6 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/service/AsnDetailService.java @@ -0,0 +1,157 @@ +package net.lab1024.sa.admin.module.business.receive.asnDetail.service; + +import java.math.BigDecimal; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +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.domain.entity.AsnEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.dao.AsnDetailDao; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.entity.AsnDetailEntity; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailAddForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.domain.form.AsnDetailUpdateForm; +import net.lab1024.sa.admin.module.business.receive.asnDetail.manager.AsnDetailManager; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBigDecimalUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; + +/** + * 入库明细 Service + * + * @author 霍锦 + * @since 2025-03-26 15:16:28 + * copyright 友仓 + */ + +@Service +public class AsnDetailService { + + @Resource + private AsnDao asnDao; + + @Resource + private AsnDetailDao asnDetailDao; + + @Resource + private AsnDetailManager asnDetailManager; + + @Resource + private AsnDetailQueryService asnDetailQueryService; + + + /** + * 添加 + * + * @param addForm 添加表单 + * @return ResponseDTO + */ + @Transactional(rollbackFor = Exception.class) + public ResponseDTO add(AsnDetailAddForm addForm) { + AsnDetailEntity asnDetailEntity = SmartBeanUtil.copy(addForm, AsnDetailEntity.class); + asnDetailDao.insert(asnDetailEntity); + //刷新出库单 + refreshAsn(addForm.getAsnId()); + return ResponseDTO.ok(); + } + + /** + * 更新 + * + * @param updateForm 更新表单 + * @return ResponseDTO + */ + @Transactional(rollbackFor = Exception.class) + public ResponseDTO update(AsnDetailUpdateForm updateForm) { + AsnDetailEntity asnDetailEntity = SmartBeanUtil.copy(updateForm, AsnDetailEntity.class); + asnDetailDao.updateById(asnDetailEntity); + //刷新出库单 + refreshAsn(updateForm.getAsnId()); + return ResponseDTO.ok(); + } + + /** + * 批量删除 + * + * @param idList id集合 + * @return ResponseDTO + */ + public ResponseDTO batchDelete(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg()); + } + Set asnIds = new HashSet<>(); + for (Long id : idList) { + AsnDetailEntity asnDetail = asnDetailDao.selectById(id); + asnIds.add(asnDetail.getAsnId()); + } + asnDetailManager.removeBatchByIds(idList); + + //刷新出库单 + if (CollectionUtils.isNotEmpty(asnIds)) { + for (Long asnId : asnIds) { + refreshAsn(asnId); + } + } + return ResponseDTO.ok(); + } + + /** + * 单个删除 + * + * @param asnDetailId id + * @return ResponseDTO + */ + public ResponseDTO delete(Long asnDetailId) { + if (null == asnDetailId) { + return ResponseDTO.userErrorParam(UserErrorCode.PARAM_ERROR.getMsg()); + } + AsnDetailEntity asnDetail = asnDetailDao.selectById(asnDetailId); + Long asnId = asnDetail.getAsnId(); + asnDetailDao.deleteById(asnDetailId); + //刷新出库单 + refreshAsn(asnId); + + return ResponseDTO.ok(); + } + + public void refreshAsn(Long asnId) { + //入库单 + AsnEntity asn = asnDao.selectById(asnId); + + //获取订单明细 + List asnDetails = asnDetailQueryService.queryByAsnId(asnId); + if (CollectionUtils.isEmpty(asnDetails)) { + return; + } + + //订单数量 + BigDecimal orderQuantity = asnDetails.stream().map(AsnDetailEntity::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + + //收货数量 + BigDecimal receivedQuantity = asnDetails.stream().map(AsnDetailEntity::getReceivedQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + + //当前状态 + String status = asn.getStatus(); + if (orderQuantity.compareTo(BigDecimal.ZERO) >= 0 && receivedQuantity.compareTo(BigDecimal.ZERO) == 0) { + status = AsnOrderStatusEnum.CREATED.getValue(); + } else if (SmartBigDecimalUtil.subtract(orderQuantity, receivedQuantity, 2).compareTo(BigDecimal.ZERO) > 0) { + status = AsnOrderStatusEnum.IN_PROGRESS.getValue(); + } else if (SmartBigDecimalUtil.subtract(orderQuantity, receivedQuantity, 2).compareTo(BigDecimal.ZERO) == 0 && receivedQuantity.compareTo(BigDecimal.ZERO) > 0) { + status = AsnOrderStatusEnum.COMPLETED.getValue(); + } + + asn.setOrderQuantity(orderQuantity); + asn.setReceivedQuantity(receivedQuantity); + asn.setStatus(status); + asnDao.updateById(asn); + + } +} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/sql/AsnDetailMenu.sql b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/sql/AsnDetailMenu.sql new file mode 100644 index 0000000..e40e81f --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/receive/asnDetail/sql/AsnDetailMenu.sql @@ -0,0 +1,22 @@ +# 默认是按前端工程文件的 /views/business 文件夹的路径作为前端组件路径,如果你没把生成的 .vue 前端代码放在 /views/business 下, +# 那就根据自己实际情况修改下面 SQL 的 path,component 字段值,避免执行 SQL 后菜单无法访问。 +# 如果你一切都是按照默认,那么下面的 SQL 基本不用改 + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, path, component, frame_flag, cache_flag, visible_flag, disabled_flag, perms_type, create_user_id ) +VALUES ( '入库明细', 2, 0, '/asn-detail/list', '/business/asn-detail/asn-detail-list.vue', false, false, true, false, 1, 1 ); + +# 按菜单名称查询该菜单的 menu_id 作为按钮权限的 父菜单ID 与 功能点关联菜单ID +SET @parent_id = NULL; +SELECT t_menu.menu_id INTO @parent_id FROM t_menu WHERE t_menu.menu_name = '入库明细'; + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '查询', 3, @parent_id, false, false, true, false, 'asnDetail:query', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '添加', 3, @parent_id, false, false, true, false, 'asnDetail:add', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '更新', 3, @parent_id, false, false, true, false, 'asnDetail:update', 1, @parent_id, 1 ); + +INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) +VALUES ( '删除', 3, @parent_id, false, false, true, false, 'asnDetail:delete', 1, @parent_id, 1 ); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asnDetail/AsnDetailMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asnDetail/AsnDetailMapper.xml new file mode 100644 index 0000000..18f2931 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/asnDetail/AsnDetailMapper.xml @@ -0,0 +1,36 @@ + + + + + + + t_asn_detail.asn_detail_id, + t_asn_detail.asn_id, + t_asn_detail.item_id, + t_asn_detail.order_quantity, + t_asn_detail.received_quantity, + t_asn_detail.create_time, + t_asn_detail.create_user_id, + t_asn_detail.create_user_name, + t_asn_detail.update_time + + + + + + + diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/xxxx.js b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/receive/xxxx.js deleted file mode 100644 index e69de29..0000000