|
@@ -12,6 +12,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.system.domain.SysUser;
|
|
|
+import org.dromara.system.mapper.SysUserMapper;
|
|
|
import org.dromara.web.domain.*;
|
|
|
import org.dromara.web.domain.bo.ProductInOutRecordBo;
|
|
|
import org.dromara.web.mapper.ProductStockMapper;
|
|
@@ -21,10 +23,8 @@ import org.dromara.web.domain.vo.ProductDispatchRecordVo;
|
|
|
import org.dromara.web.mapper.ProductDispatchRecordMapper;
|
|
|
import org.dromara.web.service.IProductDispatchRecordService;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Collection;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -40,6 +40,8 @@ public class ProductDispatchRecordServiceImpl implements IProductDispatchRecordS
|
|
|
|
|
|
private final ProductDispatchRecordMapper baseMapper;
|
|
|
|
|
|
+ private final SysUserMapper userMapper;
|
|
|
+
|
|
|
private final ProductStockMapper productStockMapper;
|
|
|
|
|
|
/**
|
|
@@ -64,6 +66,17 @@ public class ProductDispatchRecordServiceImpl implements IProductDispatchRecordS
|
|
|
public TableDataInfo<ProductDispatchRecordVo> queryPageList(ProductDispatchRecordBo bo, PageQuery pageQuery) {
|
|
|
LambdaQueryWrapper<ProductDispatchRecord> lqw = buildQueryWrapper(bo);
|
|
|
Page<ProductDispatchRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
+ List<ProductDispatchRecordVo> records = result.getRecords();
|
|
|
+ if (CollUtil.isNotEmpty(records)) {
|
|
|
+ Set<Long> userList = CollUtil.newHashSet();
|
|
|
+ records.forEach(v->{
|
|
|
+ userList.add(v.getCreateBy());
|
|
|
+ });
|
|
|
+ Map<Long, String> userMap = userMapper.selectList(Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId, SysUser::getUserName).in(SysUser::getUserId, userList)).stream().collect(Collectors.toMap(k1 -> k1.getUserId(), k2 -> k2.getUserName(), (k1, k2) -> k1));
|
|
|
+ records.forEach(v->{
|
|
|
+ v.setCreateByName(userMap.get(v.getCreateBy()));
|
|
|
+ });
|
|
|
+ }
|
|
|
return TableDataInfo.build(result);
|
|
|
}
|
|
|
|
|
@@ -81,32 +94,34 @@ public class ProductDispatchRecordServiceImpl implements IProductDispatchRecordS
|
|
|
|
|
|
private LambdaQueryWrapper<ProductDispatchRecord> buildQueryWrapper(ProductDispatchRecordBo bo) {
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
+ List<Date> dateRange = bo.getDateRange();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+
|
|
|
+ List<SysUser> userList = userMapper.selectList(Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId, SysUser::getUserName));
|
|
|
+ Map<String, Long> userMap = userList.stream().collect(Collectors.toMap(k1 -> String.valueOf(k1.getUserName()), k2 -> k2.getUserId(), (k1, k2) -> k1));
|
|
|
LambdaQueryWrapper<ProductDispatchRecord> lqw = Wrappers.lambdaQuery();
|
|
|
- lqw.orderByAsc(ProductDispatchRecord::getId);
|
|
|
+ lqw.orderByDesc(ProductDispatchRecord::getCreateTime);
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getDispatchType()), ProductDispatchRecord::getDispatchType, bo.getDispatchType());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getSerialNo()), ProductDispatchRecord::getSerialNo, bo.getSerialNo());
|
|
|
- lqw.eq(bo.getOutDeptId() != null, ProductDispatchRecord::getOutDeptId, bo.getOutDeptId());
|
|
|
- lqw.like(StringUtils.isNotBlank(bo.getOutDeptName()), ProductDispatchRecord::getOutDeptName, bo.getOutDeptName());
|
|
|
- lqw.eq(bo.getInDeptId() != null, ProductDispatchRecord::getInDeptId, bo.getInDeptId());
|
|
|
- lqw.like(StringUtils.isNotBlank(bo.getInDeptName()), ProductDispatchRecord::getInDeptName, bo.getInDeptName());
|
|
|
lqw.eq(bo.getOutLocationId() != null, ProductDispatchRecord::getOutLocationId, bo.getOutLocationId());
|
|
|
lqw.like(StringUtils.isNotBlank(bo.getOutLocationName()), ProductDispatchRecord::getOutLocationName, bo.getOutLocationName());
|
|
|
lqw.eq(bo.getInLocationId() != null, ProductDispatchRecord::getInLocationId, bo.getInLocationId());
|
|
|
lqw.like(StringUtils.isNotBlank(bo.getInLocationName()), ProductDispatchRecord::getInLocationName, bo.getInLocationName());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getPreUnit()), ProductDispatchRecord::getPreUnit, bo.getPreUnit());
|
|
|
- lqw.eq(bo.getNum() != null, ProductDispatchRecord::getNum, bo.getNum());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getUnit()), ProductDispatchRecord::getUnit, bo.getUnit());
|
|
|
- lqw.eq(bo.getStockNum() != null, ProductDispatchRecord::getStockNum, bo.getStockNum());
|
|
|
lqw.eq(bo.getProductId() != null, ProductDispatchRecord::getProductId, bo.getProductId());
|
|
|
lqw.like(StringUtils.isNotBlank(bo.getProductName()), ProductDispatchRecord::getProductName, bo.getProductName());
|
|
|
lqw.eq(StringUtils.isNotBlank(bo.getProductType()), ProductDispatchRecord::getProductType, bo.getProductType());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getProductNo()), ProductDispatchRecord::getProductNo, bo.getProductNo());
|
|
|
- lqw.like(StringUtils.isNotBlank(bo.getSpecsName()), ProductDispatchRecord::getSpecsName, bo.getSpecsName());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getProductBatchNo()), ProductDispatchRecord::getProductBatchNo, bo.getProductBatchNo());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), ProductDispatchRecord::getAttachment, bo.getAttachment());
|
|
|
- lqw.eq(bo.getSpecs() != null, ProductDispatchRecord::getSpecs, bo.getSpecs());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getSpecsUnit()), ProductDispatchRecord::getSpecsUnit, bo.getSpecsUnit());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProductDispatchRecord::getStatus, bo.getStatus());
|
|
|
+ if (StringUtils.isNotBlank(bo.getSearchValue())) {
|
|
|
+ lqw.and(wrapper -> wrapper.like(ProductDispatchRecord::getCreateBy, userMap.get(bo.getSearchValue()))
|
|
|
+ .or().like(ProductDispatchRecord::getProductNo, bo.getSearchValue())
|
|
|
+ .or().like(ProductDispatchRecord::getProductName, bo.getSearchValue()));
|
|
|
+ }
|
|
|
+ if (dateRange != null && dateRange.size() == 2) {
|
|
|
+ String startTime = sdf.format(dateRange.get(0)) + " 00:00:00"; // 开始时间
|
|
|
+ String endTime = sdf.format(dateRange.get(1)) + " 23:59:59"; // 结束时间
|
|
|
+ if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) {
|
|
|
+ lqw.between(ProductDispatchRecord::getCreateTime, startTime, endTime);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
return lqw;
|
|
|
}
|
|
|
|