修复
This commit is contained in:
1 parent
53b969600b
commit
aeaea0b325
17 files changed
+285
-40
No files matched your search
+16
-2
@@ -12,12 +12,12 @@ import java.util.List;
|
||||
* 新增一个采购计划
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "采购计划保存对象")
|
||||
@Schema(description = "采购保存对象")
|
||||
public class InventoryRecordSaveDTO {
|
||||
|
||||
|
||||
/**
|
||||
* 采购计划编号
|
||||
* 采编号
|
||||
*/
|
||||
@Schema(description="编号")
|
||||
private String inventoryCode;
|
||||
@@ -74,6 +74,20 @@ public class InventoryRecordSaveDTO {
|
||||
|
||||
@Schema(description="关联码")
|
||||
private String linkCode;
|
||||
|
||||
/**
|
||||
* 单据类型(字典inventory_type)采购入库、采购退货、盘点入库等
|
||||
*/
|
||||
@Schema(description="单据类型(字典inventory_type)采购入库、采购退货、盘点入库等")
|
||||
private String inventoryType;
|
||||
|
||||
|
||||
/**
|
||||
* 订单类型(1入库 2出库)
|
||||
*/
|
||||
@Schema(description="订单类型(1入库 2出库)")
|
||||
private String orderType;
|
||||
|
||||
/**
|
||||
* @Link SmCgPlanSaveItemDTO
|
||||
*/
|
||||
|
||||
+9
@@ -161,4 +161,13 @@ public class SmErpCgDdEntity extends Model<SmErpCgDdEntity> {
|
||||
|
||||
@Schema(description="关联编码")
|
||||
private String linkCode;
|
||||
|
||||
|
||||
@Schema(description="商品名称")
|
||||
@TableField(exist = false)
|
||||
private String productName;
|
||||
|
||||
@Schema(description="经办人名称")
|
||||
@TableField(exist = false)
|
||||
public String handlerUserName;
|
||||
}
|
||||
+5
@@ -139,4 +139,9 @@ public class SmErpCgPlanEntity extends Model<SmErpCgPlanEntity> {
|
||||
@TableField(exist = false)
|
||||
@Schema(description="商品名称")
|
||||
private String productName;
|
||||
|
||||
@Schema(description="经办人名称")
|
||||
@TableField(exist = false)
|
||||
public String handlerUserName;
|
||||
|
||||
}
|
||||
+4
@@ -161,4 +161,8 @@ public class SmErpInventoryRecordsEntity extends Model<SmErpInventoryRecordsEnti
|
||||
*/
|
||||
@Schema(description="租户编号")
|
||||
private Long tenantId;
|
||||
|
||||
@Schema(description="商品名称")
|
||||
@TableField(exist = false)
|
||||
private String productName;
|
||||
}
|
||||
+8
-10
@@ -16,17 +16,13 @@ public class SmErpCgDdVo {
|
||||
|
||||
@Schema(description ="id")
|
||||
private Long id;
|
||||
/**
|
||||
* 采购计划编号
|
||||
*/
|
||||
@Schema(description="采购计划编号")
|
||||
private String planCode;
|
||||
|
||||
/**
|
||||
* 采购计划单据日期
|
||||
*/
|
||||
@Schema(description="采购计划单据日期")
|
||||
private LocalDate planDate;
|
||||
@Schema(description="编号")
|
||||
private String code;
|
||||
|
||||
|
||||
@Schema(description="据日期")
|
||||
private LocalDate ddDate;
|
||||
|
||||
/**
|
||||
* 仓库id
|
||||
@@ -92,6 +88,8 @@ public class SmErpCgDdVo {
|
||||
private String checkStatus;
|
||||
|
||||
|
||||
@Schema(description="商品名称")
|
||||
private String productName;
|
||||
/**
|
||||
* @Link SmErpCgPlanVo
|
||||
*/
|
||||
|
||||
+4
@@ -16,6 +16,10 @@ public class SmErpCgPlanVo {
|
||||
|
||||
@Schema(description ="id")
|
||||
private Long id;
|
||||
|
||||
@Schema(description="商品名称")
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 采购计划编号
|
||||
*/
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ public class SmErpCgDdController {
|
||||
@PreAuthorize("@pms.hasPermission('supermarket_smErpCgDd_view')" )
|
||||
public R getSmErpCgDdPage(@ParameterObject Page page, @ParameterObject SmErpCgDdEntity smErpCgDd) {
|
||||
LambdaQueryWrapper<SmErpCgDdEntity> wrapper = Wrappers.lambdaQuery();
|
||||
return R.ok(smErpCgDdService.page(page, wrapper));
|
||||
return R.ok(smErpCgDdService.pageScope(page, wrapper));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -66,7 +66,7 @@ public class SmErpInventoryRecordsController {
|
||||
LambdaQueryWrapper<SmErpInventoryRecordsEntity> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(Objects.nonNull(smErpInventoryRecords.getHandlerUserId()),SmErpInventoryRecordsEntity::getHandlerUserId,smErpInventoryRecords.getHandlerUserId());
|
||||
wrapper.eq(StrUtil.isNotBlank(smErpInventoryRecords.getCheckStatus()),SmErpInventoryRecordsEntity::getCheckStatus,smErpInventoryRecords.getCheckStatus());
|
||||
return R.ok(smErpInventoryRecordsService.page(page, wrapper));
|
||||
return R.ok(smErpInventoryRecordsService.pageScope(page, wrapper));
|
||||
}
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@ public class SmErpInventoryRecordsController {
|
||||
|
||||
//todo 审核成功条件
|
||||
// wrapper.eq(SmErpCgPlanEntity::getCheckStatus,);
|
||||
return R.ok(smErpCgDdService.pageScope(page, wrapper));
|
||||
return R.ok(smErpCgDdService.pageCgddScope(page, wrapper));
|
||||
}
|
||||
|
||||
}
|
||||
+3
@@ -33,5 +33,8 @@ public interface SmErpCgDdService extends IService<SmErpCgDdEntity> {
|
||||
* @param wrapper
|
||||
* @return
|
||||
*/
|
||||
Object pageCgddScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper);
|
||||
|
||||
|
||||
Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper);
|
||||
}
|
||||
+10
@@ -1,5 +1,7 @@
|
||||
package com.bsd.pjcloud.supermarket.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpInventoryRecordsEntity;
|
||||
@@ -13,4 +15,12 @@ public interface SmErpInventoryRecordsService extends IService<SmErpInventoryRec
|
||||
* @return
|
||||
*/
|
||||
Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param page
|
||||
* @param wrapper
|
||||
* @return
|
||||
*/
|
||||
Object pageScope(Page page, LambdaQueryWrapper<SmErpInventoryRecordsEntity> wrapper);
|
||||
}
|
||||
+95
-9
@@ -3,6 +3,8 @@ package com.bsd.pjcloud.supermarket.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.admin.api.entity.SysUser;
|
||||
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
@@ -13,13 +15,8 @@ import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDEditItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanEditItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanSaveItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgDdEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgDdItemEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanItemEntity;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdItemMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgPlanMapper;
|
||||
import com.bsd.pjcloud.supermarket.entity.*;
|
||||
import com.bsd.pjcloud.supermarket.mapper.*;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpCgDdService;
|
||||
import com.bsd.pjcloud.supermarket.vo.cgdd.SmErpCgDdVo;
|
||||
import com.bsd.pjcloud.supermarket.vo.cgdd.SmeErpCgDdItemVo;
|
||||
@@ -49,6 +46,13 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
|
||||
|
||||
private final SmErpCgPlanMapper smErpCgPlanMapper;
|
||||
|
||||
private final SmErpSpuMapper smErpSpuMapper;
|
||||
|
||||
private final RemoteUserService remoteUserService;
|
||||
private final SmErpUnitMapper smErpUnitMapper;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Object saveCGDD(ErpCgDDSaveDTO erpCgDDSaveDTO) {
|
||||
@@ -98,7 +102,7 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper) {
|
||||
public Object pageCgddScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper) {
|
||||
// 1. 查询主表分页数据
|
||||
Page<SmErpCgDdEntity> pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
|
||||
List<SmErpCgDdEntity> records = pageData.getRecords();
|
||||
@@ -110,30 +114,112 @@ public class SmErpCgDdServiceImpl extends ServiceImpl<SmErpCgDdMapper, SmErpCgDd
|
||||
|
||||
// 3. 批量查询所有子表数据(仅1次数据库查询)
|
||||
Map<Long, List<SmErpCgDdItemEntity>> itemMap;
|
||||
List<SmErpCgDdItemEntity> items;
|
||||
List<SmErpUnitEntity> unitList;
|
||||
if (!planIds.isEmpty()) {
|
||||
LambdaQueryWrapper<SmErpCgDdItemEntity> itemWrapper = new LambdaQueryWrapper<>();
|
||||
itemWrapper.in(SmErpCgDdItemEntity::getHId, planIds);
|
||||
List<SmErpCgDdItemEntity> items = smErpCgDDItemMapper.selectList(itemWrapper);
|
||||
items = smErpCgDDItemMapper.selectList(itemWrapper);
|
||||
// 按planId分组建立映射关系
|
||||
itemMap = items.stream()
|
||||
.collect(Collectors.groupingBy(SmErpCgDdItemEntity::getHId));
|
||||
//获取采购item下已选择的item的所有包装单位
|
||||
List<Long> spuIds =items.stream().map(vo -> vo.getErpSpuId()).collect(Collectors.toList());
|
||||
unitList = smErpUnitMapper.selectList(new LambdaQueryWrapper<SmErpUnitEntity>().in(SmErpUnitEntity::getSpuId, spuIds));
|
||||
} else {
|
||||
itemMap = Collections.emptyMap();
|
||||
items= Collections.emptyList();
|
||||
unitList = Collections.emptyList();
|
||||
}
|
||||
|
||||
// 4. 转换主表VO并关联子表数据
|
||||
Set<Long> erpSpuIds = items.stream().map(SmErpCgDdItemEntity::getErpSpuId).collect(Collectors.toSet());
|
||||
List<SmErpSpuEntity> smErpSpuEntities = smErpSpuMapper.selectList(new LambdaQueryWrapper<SmErpSpuEntity>().in(SmErpSpuEntity::getId, erpSpuIds));
|
||||
Map<Long,SmErpSpuEntity> spuMap = smErpSpuEntities.stream().collect(Collectors.toMap(SmErpSpuEntity::getId, spu -> spu));
|
||||
List<SmErpCgDdVo> voList = BeanUtils.toBean(records, SmErpCgDdVo.class);
|
||||
voList.forEach(vo -> {
|
||||
List<SmeErpCgDdItemVo> itemVos = BeanUtils.toBean(
|
||||
itemMap.getOrDefault(vo.getId(), Collections.emptyList()),
|
||||
SmeErpCgDdItemVo.class
|
||||
);
|
||||
itemVos.forEach(item -> {
|
||||
List<SmErpUnitEntity> unitEntities = unitList.stream().filter(unit -> unit.getSpuId().equals(item.getErpSpuId())).collect(Collectors.toList());
|
||||
unitEntities.stream().forEach(unit -> {
|
||||
if(unit.getId().equals(item.getUnitId())){
|
||||
item.setSpec(unit.getSpec());
|
||||
item.setUnit(unit.getUnit());
|
||||
item.setPackageNum(unit.getPackageNum());
|
||||
item.setPurchasePrice(unit.getPurchasePrice());
|
||||
}
|
||||
});
|
||||
});
|
||||
vo.setItems(itemVos);
|
||||
});
|
||||
|
||||
// 分组商品名称
|
||||
Map<Long, List<String>> planGoodsMap = items.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SmErpCgDdItemEntity::getHId,
|
||||
Collectors.mapping(
|
||||
item -> spuMap.getOrDefault(item.getErpSpuId(), new SmErpSpuEntity()).getProductName(),
|
||||
Collectors.toList()
|
||||
)
|
||||
));
|
||||
Page<SmErpCgDdVo> resultPage = new Page<>();
|
||||
org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数
|
||||
resultPage.setRecords(voList);
|
||||
// 设置商品名称到主表实体
|
||||
resultPage.getRecords().forEach(plan -> {
|
||||
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
|
||||
plan.setProductName(String.join(", ", names));
|
||||
});
|
||||
return resultPage;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageScope(Page page, LambdaQueryWrapper<SmErpCgDdEntity> wrapper) {
|
||||
Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
|
||||
List<SmErpCgDdEntity> records = pageData.getRecords();
|
||||
// 2. 提前收集所有主表ID(去重处理)
|
||||
Set<Long> planIds = records.stream()
|
||||
.map(SmErpCgDdEntity::getId)
|
||||
.collect(Collectors.toSet());
|
||||
//收集userids
|
||||
Set<Long> userIds = records.stream()
|
||||
.map(SmErpCgDdEntity::getHandlerUserId)
|
||||
.collect(Collectors.toSet());
|
||||
//请求得到所有的userIds
|
||||
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
|
||||
|
||||
|
||||
LambdaQueryWrapper<SmErpCgDdItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpCgDdItemEntity::getHId,planIds);
|
||||
List<SmErpCgDdItemEntity> cgPlanItemEntities = smErpCgDDItemMapper.selectList(smErpCgPlanItemEntityLambdaQueryWrapper);
|
||||
|
||||
Set<Long> erpSpuIds = cgPlanItemEntities.stream().map(SmErpCgDdItemEntity::getErpSpuId).collect(Collectors.toSet());
|
||||
List<SmErpSpuEntity> smErpSpuEntities = smErpSpuMapper.selectList(new LambdaQueryWrapper<SmErpSpuEntity>().in(SmErpSpuEntity::getId, erpSpuIds));
|
||||
Map<Long,SmErpSpuEntity> spuMap = smErpSpuEntities.stream().collect(Collectors.toMap(SmErpSpuEntity::getId, spu -> spu));
|
||||
|
||||
|
||||
// 按采购计划分组商品名称
|
||||
Map<Long, List<String>> planGoodsMap = cgPlanItemEntities.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SmErpCgDdItemEntity::getHId,
|
||||
Collectors.mapping(
|
||||
item -> spuMap.getOrDefault(item.getErpSpuId(), new SmErpSpuEntity()).getProductName(),
|
||||
Collectors.toList()
|
||||
)
|
||||
));
|
||||
|
||||
// 设置商品名称到主表实体
|
||||
records.forEach(plan -> {
|
||||
SysUser sysUser = userMap.getOrDefault(plan.getHandlerUserId(), new SysUser());
|
||||
plan.setHandlerUserName(sysUser.getUsername());
|
||||
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
|
||||
plan.setProductName(String.join(", ", names));
|
||||
});
|
||||
|
||||
return pageData;
|
||||
}
|
||||
}
|
||||
+40
-5
@@ -4,6 +4,8 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.admin.api.entity.SysUser;
|
||||
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
@@ -12,10 +14,7 @@ import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanSaveDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanEditItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.SmCgPlanSaveItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpCgPlanItemEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpSpuEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.SmErpUnitEntity;
|
||||
import com.bsd.pjcloud.supermarket.entity.*;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgPlanItemMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgPlanMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpSpuMapper;
|
||||
@@ -46,6 +45,8 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
private final SmErpUnitMapper smErpUnitMapper;
|
||||
|
||||
private final SmErpSpuMapper smErpSpuMapper;
|
||||
|
||||
private final RemoteUserService remoteUserService;
|
||||
|
||||
|
||||
|
||||
@@ -107,10 +108,11 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
// 3. 批量查询所有子表数据(仅1次数据库查询)
|
||||
Map<Long, List<SmErpCgPlanItemEntity>> itemMap;
|
||||
List<SmErpUnitEntity> unitList;
|
||||
List<SmErpCgPlanItemEntity> items;
|
||||
if (!planIds.isEmpty()) {
|
||||
LambdaQueryWrapper<SmErpCgPlanItemEntity> itemWrapper = new LambdaQueryWrapper<>();
|
||||
itemWrapper.in(SmErpCgPlanItemEntity::getPlanId, planIds);
|
||||
List<SmErpCgPlanItemEntity> items = smErpCgPlanItemMapper.selectList(itemWrapper);
|
||||
items = smErpCgPlanItemMapper.selectList(itemWrapper);
|
||||
|
||||
//获取采购item下已选择的item的所有包装单位
|
||||
List<Long> spuIds =items.stream().map(vo -> vo.getErpSpuId()).collect(Collectors.toList());
|
||||
@@ -124,6 +126,7 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
} else {
|
||||
itemMap = Collections.emptyMap();
|
||||
unitList = Collections.emptyList();
|
||||
items= Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
@@ -148,10 +151,28 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
});
|
||||
vo.setItems(itemVos);
|
||||
});
|
||||
//商品名称赋值
|
||||
Set<Long> erpSpuIds = items.stream().map(SmErpCgPlanItemEntity::getErpSpuId).collect(Collectors.toSet());
|
||||
List<SmErpSpuEntity> smErpSpuEntities = smErpSpuMapper.selectList(new LambdaQueryWrapper<SmErpSpuEntity>().in(SmErpSpuEntity::getId, erpSpuIds));
|
||||
Map<Long,SmErpSpuEntity> spuMap = smErpSpuEntities.stream().collect(Collectors.toMap(SmErpSpuEntity::getId, spu -> spu));
|
||||
// 分组商品名称
|
||||
Map<Long, List<String>> planGoodsMap = items.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SmErpCgPlanItemEntity::getPlanId,
|
||||
Collectors.mapping(
|
||||
item -> spuMap.getOrDefault(item.getErpSpuId(), new SmErpSpuEntity()).getProductName(),
|
||||
Collectors.toList()
|
||||
)
|
||||
));
|
||||
Page<SmErpCgPlanVo> resultPage = new Page<>();
|
||||
org.springframework.beans.BeanUtils.copyProperties(pageData, resultPage, "records"); // 复制分页参数
|
||||
|
||||
resultPage.setRecords(voList);
|
||||
// 设置商品名称到主表实体
|
||||
resultPage.getRecords().forEach(plan -> {
|
||||
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
|
||||
plan.setProductName(String.join(", ", names));
|
||||
});
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
@@ -164,10 +185,20 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
Set<Long> planIds = records.stream()
|
||||
.map(SmErpCgPlanEntity::getId)
|
||||
.collect(Collectors.toSet());
|
||||
//收集userids
|
||||
Set<Long> userIds = records.stream()
|
||||
.map(SmErpCgPlanEntity::getHandlerUserId)
|
||||
.collect(Collectors.toSet());
|
||||
//请求得到所有的userIds
|
||||
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
|
||||
|
||||
|
||||
//查询出采购计划下的所有item
|
||||
LambdaQueryWrapper<SmErpCgPlanItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpCgPlanItemEntity::getPlanId,planIds);
|
||||
List<SmErpCgPlanItemEntity> cgPlanItemEntities = smErpCgPlanItemMapper.selectList(smErpCgPlanItemEntityLambdaQueryWrapper);
|
||||
|
||||
//获取所有的erpspu,分组
|
||||
Set<Long> erpSpuIds = cgPlanItemEntities.stream().map(SmErpCgPlanItemEntity::getErpSpuId).collect(Collectors.toSet());
|
||||
List<SmErpSpuEntity> smErpSpuEntities = smErpSpuMapper.selectList(new LambdaQueryWrapper<SmErpSpuEntity>().in(SmErpSpuEntity::getId, erpSpuIds));
|
||||
Map<Long,SmErpSpuEntity> spuMap = smErpSpuEntities.stream().collect(Collectors.toMap(SmErpSpuEntity::getId, spu -> spu));
|
||||
@@ -182,8 +213,12 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
|
||||
Collectors.toList()
|
||||
)
|
||||
));
|
||||
//设置经办人名称
|
||||
// 设置商品名称到主表实体
|
||||
records.forEach(plan -> {
|
||||
|
||||
SysUser sysUser = userMap.getOrDefault(plan.getHandlerUserId(), new SysUser());
|
||||
plan.setHandlerUserName(sysUser.getUsername());
|
||||
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
|
||||
plan.setProductName(String.join(", ", names));
|
||||
});
|
||||
|
||||
+41
-6
@@ -1,26 +1,25 @@
|
||||
package com.bsd.pjcloud.supermarket.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgdd.SmCgDDSaveItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.InventoryRecordSaveItemDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.UpdateStockDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.*;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpCgDdMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpInventoryRecordsItemMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpInventoryRecordsMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.*;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpInventoryRecordsService;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpStockService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 出入库记录表
|
||||
@@ -37,6 +36,8 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
private final SmErpStockService smErpStockService;
|
||||
|
||||
private final SmErpCgDdMapper smErpCgDdMapper;
|
||||
|
||||
private final SmErpSpuMapper smErpSpuMapper;
|
||||
@Override
|
||||
@Transactional
|
||||
public Object saveInventoryRecord(InventoryRecordSaveDTO inventoryRecordSaveDTO) {
|
||||
@@ -75,5 +76,39 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
|
||||
return insert;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageScope(Page page, LambdaQueryWrapper<SmErpInventoryRecordsEntity> wrapper) {
|
||||
Page pageData = baseMapper.selectPageByScope(page, wrapper, DataScope.of());
|
||||
List<SmErpInventoryRecordsEntity> records = pageData.getRecords();
|
||||
// 2. 提前收集所有主表ID(去重处理)
|
||||
Set<Long> planIds = records.stream()
|
||||
.map(SmErpInventoryRecordsEntity::getId)
|
||||
.collect(Collectors.toSet());
|
||||
LambdaQueryWrapper<SmErpInventoryRecordsItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
smErpCgPlanItemEntityLambdaQueryWrapper.in(SmErpInventoryRecordsItemEntity::getInventoryId,planIds);
|
||||
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = smErpInventoryRecordsItemMapper.selectList(smErpCgPlanItemEntityLambdaQueryWrapper);
|
||||
|
||||
Set<Long> erpSpuIds = cgPlanItemEntities.stream().map(SmErpInventoryRecordsItemEntity::getErpSpuId).collect(Collectors.toSet());
|
||||
List<SmErpSpuEntity> smErpSpuEntities = smErpSpuMapper.selectList(new LambdaQueryWrapper<SmErpSpuEntity>().in(SmErpSpuEntity::getId, erpSpuIds));
|
||||
Map<Long,SmErpSpuEntity> spuMap = smErpSpuEntities.stream().collect(Collectors.toMap(SmErpSpuEntity::getId, spu -> spu));
|
||||
|
||||
|
||||
// 按采购计划分组商品名称
|
||||
Map<Long, List<String>> planGoodsMap = cgPlanItemEntities.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SmErpInventoryRecordsItemEntity::getInventoryId,
|
||||
Collectors.mapping(
|
||||
item -> spuMap.getOrDefault(item.getErpSpuId(), new SmErpSpuEntity()).getProductName(),
|
||||
Collectors.toList()
|
||||
)
|
||||
));
|
||||
// 设置商品名称到主表实体
|
||||
records.forEach(plan -> {
|
||||
List<String> names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList());
|
||||
plan.setProductName(String.join(", ", names));
|
||||
});
|
||||
return pageData;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+19
-2
@@ -1,6 +1,7 @@
|
||||
package com.bsd.pjcloud.supermarket.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
@@ -9,12 +10,14 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuQueryDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanDTO;
|
||||
import com.bsd.pjcloud.supermarket.dto.inventoryrecords.UpdateStockDTO;
|
||||
import com.bsd.pjcloud.supermarket.entity.*;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpSpuMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmErpStockMapper;
|
||||
import com.bsd.pjcloud.supermarket.mapper.SmSpuMapper;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpAuxiliaryCodeService;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpSpuService;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpStockService;
|
||||
import com.bsd.pjcloud.supermarket.service.SmErpUnitService;
|
||||
import com.bsd.pjcloud.supermarket.vo.app.SupermarketAppSpuDetailsVo;
|
||||
import com.bsd.pjcloud.supermarket.vo.app.SupermarketAppUnitVo;
|
||||
@@ -52,6 +55,8 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
|
||||
|
||||
private final SmSpuMapper spuMapper;
|
||||
|
||||
private final SmErpStockService smErpStockService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public R saveSpu(SmErpSpuEntity supermarketSpu) {
|
||||
@@ -160,18 +165,30 @@ public class SmErpSpuServiceImpl extends ServiceImpl<SmErpSpuMapper, SmErpSpuEnt
|
||||
@Override
|
||||
@Transactional
|
||||
public R updateSpuStock(SupermarketSpuUpdateStockReqDTO updateStockReqDTO) {
|
||||
List<UpdateStockDTO> updateStockDTOS=new ArrayList<UpdateStockDTO>();
|
||||
for (SupermarketSpuUpdateStockReqDTO.Item v : updateStockReqDTO.getItems()) {
|
||||
// 查询当前库存
|
||||
SmErpSpuEntity spu = baseMapper.selectById(v.getId());
|
||||
if (spu == null) {
|
||||
return R.failed(spu.getProductName() + "商品不存在");
|
||||
}
|
||||
if (v.getIncrCount() == 0){
|
||||
return R.failed("扣减不能为0");
|
||||
}
|
||||
LambdaUpdateWrapper<SmErpStockEntity> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(SmErpStockEntity::getErpSpuId, v.getId());
|
||||
SmErpStockEntity smErpStockEntity = smErpStockMapper.selectOne(lambdaUpdateWrapper);
|
||||
|
||||
|
||||
// 检查库存是否足够
|
||||
if (v.getIncrCount() < 0 && Math.abs(v.getIncrCount()) > spu.getStock()) {
|
||||
if (v.getIncrCount() < 0 && Math.abs(v.getIncrCount()) > smErpStockEntity.getCurrentStock()) {
|
||||
return R.failed(spu.getProductName() + "库存不足,无法完成操作");
|
||||
}
|
||||
int i = baseMapper.updateStock(v.getId(), v.getIncrCount());
|
||||
|
||||
UpdateStockDTO updateStockDTO = new UpdateStockDTO(v.getId(), v.getIncrCount());
|
||||
updateStockDTOS.add(updateStockDTO);
|
||||
}
|
||||
smErpStockService.updateStock(updateStockDTOS);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@
|
||||
SELECT
|
||||
stock.inventory_upper_limit,
|
||||
stock.inventory_lower_limit,
|
||||
stock.current_stock+stock+base_stock as stock,
|
||||
stock.current_stock as stock,
|
||||
spu.product_code,
|
||||
spu.product_name,
|
||||
spu.barcode,
|
||||
@@ -52,7 +52,7 @@
|
||||
ELSE '1'
|
||||
END AS warn_type
|
||||
FROM sm_erp_stock stock
|
||||
LEFT JOIN sm_erp_spu spu ON stock.spu_id = spu.id
|
||||
LEFT JOIN sm_erp_spu spu ON stock.erp_spu_id = spu.id
|
||||
<where>
|
||||
<!-- 库存预警条件 -->
|
||||
(stock.current_stock) < stock.inventory_lower_limit or ( stock.current_stock) > stock.inventory_upper_limit
|
||||
|
||||
+12
@@ -19,6 +19,7 @@
|
||||
|
||||
package com.bsd.pjcloud.admin.api.feign;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.bsd.pjcloud.admin.api.dto.UserDTO;
|
||||
import com.bsd.pjcloud.admin.api.dto.UserInfo;
|
||||
import com.bsd.pjcloud.admin.api.entity.SysUser;
|
||||
@@ -26,10 +27,13 @@ import com.bsd.pjcloud.admin.api.vo.UserVO;
|
||||
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.feign.annotation.NoToken;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author pjcloud
|
||||
@@ -163,4 +167,12 @@ public interface RemoteUserService {
|
||||
@NoToken
|
||||
@GetMapping("/user/getUserByMobile")
|
||||
R<List<SysUser>> getUserByMobile(@RequestParam("mobile") String mobile);
|
||||
|
||||
/**
|
||||
* 根据ids获取map集合
|
||||
* @param userIds
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/user/getUserMap")
|
||||
R<Map<Long, SysUser>> getUserMap(@RequestParam(value = "userIds") Set<Long> userIds);
|
||||
}
|
||||
+14
-1
@@ -56,6 +56,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author pjcloud
|
||||
@@ -385,7 +388,17 @@ public class SysUserController {
|
||||
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(mobile), SysUser::getPhone, mobile);
|
||||
sysUserLambdaQueryWrapper.like(StringUtils.isNotBlank(name), SysUser::getName, name);
|
||||
List<SimpleUserAllListVO> list = userService.listScope(sysUserLambdaQueryWrapper);
|
||||
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/getUserMap")
|
||||
@Schema(description = "根据ids获取用户map")
|
||||
public R<Map<Long, SysUser>> getUserMap(@RequestParam(value = "userIds") Set<Long> userIds) {
|
||||
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysUserLambdaQueryWrapper.in(SysUser::getUserId, userIds);
|
||||
List<SysUser> list = userService.list(sysUserLambdaQueryWrapper);
|
||||
Map<Long, SysUser> userMap = list.stream().collect(Collectors.toMap(SysUser::getUserId, user -> user));
|
||||
return R.ok(userMap);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user