三期内容优化

This commit is contained in:
2025-03-20 18:19:31 +08:00
parent ed7012e2dd
commit 72036bc7bd
44 changed files with 780 additions and 366 deletions

View File

@@ -1,12 +1,12 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.CalendarDay;
import com.ruoyi.oa.domain.vo.SysHolidayVo;
import com.ruoyi.oa.domain.vo.SysOaHolidayListVo;
import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
import com.ruoyi.oa.domain.bo.SysOaHolidayBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@@ -81,4 +81,14 @@ public interface ISysOaHolidayService {
* @return
*/
Long queryWorkDayNumByMonth(Date payTime);
/**
* 首页接口
*
* @param bo
* @param pageQuery
* @return
*/
List<CalendarDay> queryOwnList(SysOaHolidayBo bo, PageQuery pageQuery);
}

View File

@@ -1,6 +1,6 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
@@ -49,7 +49,7 @@ public interface ISysOaProjectService {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaOutWarehouseBo bo, PageQuery pageQuery);
TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaWarehouseDetailBo bo, PageQuery pageQuery);
/**

View File

@@ -1,10 +1,9 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBoList;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseVo;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
@@ -18,34 +17,34 @@ import java.util.List;
* @author liuzongkun999
* @date 2024-11-02
*/
public interface ISysOaOutWarehouseService {
public interface ISysOaWarehouseDetailService {
/**
* 查询仓库出库
*/
SysOaOutWarehouseVo queryById(Long id);
SysOaWarehouseDetailVo queryById(Long id);
/**
* 查询仓库出库产品id的列表
*
* @param WarehouseId 出库产品id
*/
TableDataInfo<SysOaOutWarehouseVo> queryWarehouseIdList(Long WarehouseId);
TableDataInfo<SysOaWarehouseDetailVo> queryWarehouseIdList(Long WarehouseId);
/**
* 查询仓库出库列表
*/
TableDataInfo<SysOaOutWarehouseListVo> queryPageList(SysOaOutWarehouseBo bo, PageQuery pageQuery);
TableDataInfo<SysOaOutWarehouseListVo> queryPageList(SysOaWarehouseDetailBo bo, PageQuery pageQuery);
/**
* 查询仓库出库列表
*/
List<SysOaOutWarehouseVo> queryList(SysOaOutWarehouseBo bo);
List<SysOaWarehouseDetailVo> queryList(SysOaWarehouseDetailBo bo);
/**
* 新增仓库出库
*/
Boolean insertByBo(SysOaOutWarehouseBo bo);
Boolean insertByBo(SysOaWarehouseDetailBo bo);
/**
* 仓库批量出库
@@ -55,7 +54,7 @@ public interface ISysOaOutWarehouseService {
/**
* 修改仓库出库
*/
Boolean updateByBo(SysOaOutWarehouseBo bo);
Boolean updateByBo(SysOaWarehouseDetailBo bo);
/**
* 校验并批量删除仓库出库信息
@@ -63,6 +62,6 @@ public interface ISysOaOutWarehouseService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空") Long projectId);
TableDataInfo<SysOaWarehouseDetailVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空") Long projectId);
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.oa.service;
import com.ruoyi.oa.domain.SysOaWarehouseMaster;
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseMasterVo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -46,4 +47,11 @@ public interface ISysOaWarehouseMasterService {
* 校验并批量删除出库单管理信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 单个入库接口
* @param bo
* @return
*/
int insertInWarehouse(SysOaWarehouseBo bo);
}

View File

@@ -3,8 +3,6 @@ package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
@@ -22,11 +20,7 @@ import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaCostBo;
import com.ruoyi.oa.service.ISysOaCostService;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 项目成本分析Service业务层处理
@@ -47,7 +41,7 @@ public class SysOaCostServiceImpl implements ISysOaCostService {
private final SysOaWarehouseMapper warehouseMapper;
private final SysOaOutWarehouseMapper outWarehouseMapper;
private final SysOaWarehouseDetailMapper outWarehouseMapper;
private final SysOaAttendanceMapper attendanceMapper;

View File

@@ -1,6 +1,7 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -8,9 +9,13 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.CalendarDay;
import com.ruoyi.oa.domain.vo.SysHolidayVo;
import com.ruoyi.oa.domain.vo.SysOaHolidayListVo;
import com.ruoyi.workflow.domain.FlowRecord;
import com.ruoyi.workflow.service.IWfTaskService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaHolidayBo;
import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
@@ -20,6 +25,7 @@ import com.ruoyi.oa.service.ISysOaHolidayService;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.util.*;
@@ -36,6 +42,9 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
private final SysOaHolidayMapper baseMapper;
@Autowired
private IWfTaskService taskService;
/**
* 查询休假管理
*/
@@ -51,6 +60,9 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
public TableDataInfo<SysOaHolidayVo> queryPageList(SysOaHolidayBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysOaHoliday> lqw = buildQueryWrapper(bo);
Page<SysOaHolidayVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
for (SysOaHolidayVo record : result.getRecords()) {
record.setDate(record.getHolidayTime());
}
return TableDataInfo.build(result);
}
@@ -67,7 +79,11 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SysOaHoliday> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getType() != null, SysOaHoliday::getType, bo.getType());
lqw.eq(bo.getHolidayTime() != null, SysOaHoliday::getHolidayTime, bo.getHolidayTime());
System.out.println(bo);
if (bo.getHolidayTime() != null) {
System.out.println("今年考了哈士大夫");
lqw.between(SysOaHoliday::getHolidayTime, getFirstDay(bo.getHolidayTime()),getLastDay(bo.getHolidayTime()));
}
lqw.like(StringUtils.isNotBlank(bo.getName()), SysOaHoliday::getName, bo.getName());
return lqw;
}
@@ -166,7 +182,6 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
Date endDate = DateUtils.addDays(result.getHolidayTime(), days - 1);
VoList.add(new SysOaHolidayListVo(result.getHolidayId(), result.getName(), result.getHolidayTime(), endDate, days, result.getType()));
}
System.out.println(VoList);
return VoList;
}
@@ -220,7 +235,6 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < holidayVoList.size(); i++) {
// 格式化日期
System.out.println(holidayVoList.get(i).getHolidayTime());
String formattedDate = SDF.format(holidayVoList.get(i).getHolidayTime());
sb.append(formattedDate);
// 在每个日期后面加逗号(最后一个日期后面可选)
@@ -244,5 +258,109 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
return baseMapper.queryWorkDayNumByMonth(payTime);
}
@Override
public List<CalendarDay> queryOwnList(SysOaHolidayBo bo, PageQuery pageQuery) {
// 1) 查询普通节假日数据
LambdaQueryWrapper<SysOaHoliday> lqw = buildQueryWrapper(bo);
Page<SysOaHolidayVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 把结果先转换成 Map<String, CalendarDay>方便后续“根据日期覆盖type”
// key = "YYYY-MM-DD"
Map<String, CalendarDay> dayMap = new HashMap<>();
for (SysOaHolidayVo holiday : page.getRecords()) {
String dateStr = formatDate(holiday.getHolidayTime()); // 转成 "YYYY-MM-DD"
Integer type = holiday.getType(); // 0,1,2,3
CalendarDay calendarDay = new CalendarDay();
calendarDay.setDate(dateStr);
calendarDay.setType(type);
dayMap.put(dateStr, calendarDay);
}
// 2) 查询 Flowable - 出差(trip)流程
// 假设 flowableQueryService.getApprovedRecords(userId, "trip")
// 返回类似: List<FlowRecord>,其中有 startTime、endTime 等
List<FlowRecord> tripRecords = taskService.getApprovedRecords(LoginHelper.getUserId(), "trip");
// 每条记录都代表一段出差区间,逐天设置 type=4
for (FlowRecord record : tripRecords) {
fillDateRange(dayMap, record.getStartTime(), record.getEndTime(), 4);
}
// 3) 查询 Flowable - 请假(absence)流程
List<FlowRecord> absenceRecords = taskService.getApprovedRecords(LoginHelper.getUserId(), "absence");
// 每条记录都代表一段请假区间,逐天设置 type=5
for (FlowRecord record : absenceRecords) {
fillDateRange(dayMap, record.getStartTime(), record.getEndTime(), 5);
}
// 4) 最终返回列表 (若需要排序,可按日期排序)
List<CalendarDay> result = new ArrayList<>(dayMap.values());
result.sort(Comparator.comparing(CalendarDay::getDate));
return result;
}
/**
* 获得当月第一天
*/
private Date getFirstDay(Date holidayTime){
LocalDate localDate = holidayTime.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
LocalDate firstDay = localDate.withDayOfMonth(1);
return Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
/**
* 获得最后一天的最后时刻
*/
private Date getLastDay(Date holidayTime){
LocalDate localDate = holidayTime.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
LocalDate lastDay = localDate.withDayOfMonth(localDate.lengthOfMonth());
return Date.from(lastDay.atTime(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 将 Date 转为 LocalDate根据系统默认时区
*/
private LocalDate convertToLocalDate(Date date) {
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
}
/**
* 按 "yyyy-MM-dd" 格式化 Date
*/
private String formatDate(Date date) {
if (date == null) {
return "";
}
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
/**
* 将 [startTime, endTime] 区间内每一天的 type 覆盖为指定的 newType
*/
private void fillDateRange(Map<String, CalendarDay> dayMap, Date startTime, Date endTime, int newType) {
// 转成 LocalDate 方便遍历
LocalDate start = convertToLocalDate(startTime);
LocalDate end = convertToLocalDate(endTime);
// 逐天循环
for (LocalDate d = start; !d.isAfter(end); d = d.plusDays(1)) {
String dateStr = d.toString(); // "2025-03-01"
CalendarDay existingDay = dayMap.get(dateStr);
if (existingDay != null) {
// 如果已有记录就覆盖type
existingDay.setType(newType);
} else {
// 如果没有记录,就新建
CalendarDay calendarDay = new CalendarDay();
calendarDay.setDate(dateStr);
calendarDay.setType(newType);
dayMap.put(dateStr, calendarDay);
}
}
}
}

View File

@@ -9,7 +9,7 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -123,7 +123,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
* @return
*/
@Override
public TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
public TableDataInfo<SysOaOutWarehouseListVo> queryOutWarePageList(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
Page<SysOaOutWarehouseListVo> page = baseMapper.selectPageOutList(pageQuery.build(), this.buildOutWareQueryWrapper(bo));
return TableDataInfo.build(page);
}
@@ -153,7 +153,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
return projectVos;
}
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaOutWarehouseBo bo) {
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
QueryWrapper<SysOaProject> lqw = Wrappers.query();
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getWarehouseName()), "sow.name", bo.getWarehouseName());

View File

@@ -1,16 +1,12 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.SysOaProject;
import com.ruoyi.oa.domain.SysOaWarehouse;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo2;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBoList;
@@ -18,18 +14,16 @@ import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseVo;
import com.ruoyi.oa.mapper.SysOaProjectMapper;
import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper;
import com.ruoyi.oa.mapper.SysOaWarehouseMapper;
import com.ruoyi.oa.service.ISysOaWarehouseService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.security.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseVo;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.mapper.SysOaOutWarehouseMapper;
import com.ruoyi.oa.service.ISysOaOutWarehouseService;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo;
import com.ruoyi.oa.domain.SysOaWarehouseDetail;
import com.ruoyi.oa.service.ISysOaWarehouseDetailService;
import java.util.*;
@@ -44,9 +38,9 @@ import static cn.hutool.core.bean.BeanUtil.*;
@Slf4j
@RequiredArgsConstructor
@Service
public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
public class SysOaWarehouseDetailServiceImpl implements ISysOaWarehouseDetailService {
private final SysOaOutWarehouseMapper baseMapper;
private final SysOaWarehouseDetailMapper baseMapper;
@Autowired
@@ -60,17 +54,17 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* 查询仓库出库
*/
@Override
public SysOaOutWarehouseVo queryById(Long id){
SysOaOutWarehouseVo sysOaOutWarehouseVo = baseMapper.selectVoById(id);
SysOaWarehouseVo sysOaWarehouse = warehouseMapper.selectVoByIdAndXml(sysOaOutWarehouseVo.getWarehouseId());
SysOaProjectVo sysOaProject = projectMapper.selectVoById(sysOaOutWarehouseVo.getProjectId());
sysOaOutWarehouseVo.setWarehouse(sysOaWarehouse);
public SysOaWarehouseDetailVo queryById(Long id){
SysOaWarehouseDetailVo sysOaWarehouseDetailVo = baseMapper.selectVoById(id);
SysOaWarehouseVo sysOaWarehouse = warehouseMapper.selectVoByIdAndXml(sysOaWarehouseDetailVo.getWarehouseId());
SysOaProjectVo sysOaProject = projectMapper.selectVoById(sysOaWarehouseDetailVo.getProjectId());
sysOaWarehouseDetailVo.setWarehouse(sysOaWarehouse);
// 出库可能不关联项目
if (Objects.nonNull(sysOaProject)){
sysOaOutWarehouseVo.setProject(sysOaProject);
sysOaWarehouseDetailVo.setProject(sysOaProject);
}
return sysOaOutWarehouseVo;
return sysOaWarehouseDetailVo;
}
@@ -80,11 +74,11 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* @param WarehouseId 出库产品id
*/
@Override
public TableDataInfo<SysOaOutWarehouseVo> queryWarehouseIdList(Long WarehouseId) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaOutWarehouse::getWarehouseId, WarehouseId);
for (SysOaOutWarehouseVo sysOaOutWarehouseVo : baseMapper.selectVoList(lqw)) {
sysOaOutWarehouseVo.setWarehouseName( warehouseMapper.selectById(sysOaOutWarehouseVo.getWarehouseId()).getName());
public TableDataInfo<SysOaWarehouseDetailVo> queryWarehouseIdList(Long WarehouseId) {
LambdaQueryWrapper<SysOaWarehouseDetail> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaWarehouseDetail::getWarehouseId, WarehouseId);
for (SysOaWarehouseDetailVo sysOaWarehouseDetailVo : baseMapper.selectVoList(lqw)) {
sysOaWarehouseDetailVo.setWarehouseName( warehouseMapper.selectById(sysOaWarehouseDetailVo.getWarehouseId()).getName());
}
return TableDataInfo.build(baseMapper.selectVoList(lqw));
}
@@ -95,7 +89,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
*/
@Override
public TableDataInfo<SysOaOutWarehouseListVo> queryPageList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
public TableDataInfo<SysOaOutWarehouseListVo> queryPageList(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
// LambdaQueryWrapper<SysOaOutWarehouse> lqw = buildQueryWrapper(bo);
// Page<SysOaOutWarehouseVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// for (SysOaOutWarehouseVo record : result.getRecords()) {
@@ -126,18 +120,18 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* 查询仓库出库列表
*/
@Override
public List<SysOaOutWarehouseVo> queryList(SysOaOutWarehouseBo bo) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = buildQueryWrapper(bo);
public List<SysOaWarehouseDetailVo> queryList(SysOaWarehouseDetailBo bo) {
LambdaQueryWrapper<SysOaWarehouseDetail> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<SysOaOutWarehouse> buildQueryWrapper(SysOaOutWarehouseBo bo) {
private LambdaQueryWrapper<SysOaWarehouseDetail> buildQueryWrapper(SysOaWarehouseDetailBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
LambdaQueryWrapper<SysOaWarehouseDetail> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getProjectId() != null, SysOaOutWarehouse::getProjectId, bo.getProjectId());
lqw.eq(bo.getAmount() != null, SysOaOutWarehouse::getAmount, bo.getAmount());
lqw.eq(bo.getWarehouseId() != null, SysOaOutWarehouse::getWarehouseId, bo.getWarehouseId());
lqw.eq(bo.getProjectId() != null, SysOaWarehouseDetail::getProjectId, bo.getProjectId());
lqw.eq(bo.getAmount() != null, SysOaWarehouseDetail::getAmount, bo.getAmount());
lqw.eq(bo.getWarehouseId() != null, SysOaWarehouseDetail::getWarehouseId, bo.getWarehouseId());
return lqw;
}
@@ -146,10 +140,10 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* 新增仓库出库
*/
@Override
public Boolean insertByBo(SysOaOutWarehouseBo bo) {
public Boolean insertByBo(SysOaWarehouseDetailBo bo) {
bo.setCreateTime(new Date());
bo.setUpdateTime(new Date());
SysOaOutWarehouse decrease = toBean(bo, SysOaOutWarehouse.class);
SysOaWarehouseDetail decrease = toBean(bo, SysOaWarehouseDetail.class);
validEntityBeforeSave(decrease);
SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId());
@@ -182,13 +176,13 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
if (projectId != null) {
list.forEach((sysOaOutWarehouseBo2 -> {
sysOaOutWarehouseBo2.setProjectId(projectId);
SysOaOutWarehouseBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaOutWarehouseBo.class);
SysOaWarehouseDetailBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaWarehouseDetailBo.class);
insertByBo(sysOaOutWarehouse);
}));
}else{
list.forEach((sysOaOutWarehouseBo2 -> {
SysOaOutWarehouseBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaOutWarehouseBo.class);
SysOaWarehouseDetailBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaWarehouseDetailBo.class);
insertByBo(sysOaOutWarehouse);
}));
}
@@ -201,16 +195,16 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* 修改仓库出库
*/
@Override
public Boolean updateByBo(SysOaOutWarehouseBo bo) {
SysOaOutWarehouse update = toBean(bo, SysOaOutWarehouse.class);
public Boolean updateByBo(SysOaWarehouseDetailBo bo) {
SysOaWarehouseDetail update = toBean(bo, SysOaWarehouseDetail.class);
validEntityBeforeSave(update);
// 修改后的数量
Long amount1 = update.getAmount();
//获得 修改前的数量
SysOaOutWarehouse sysOaOutWarehouse = baseMapper.selectById(update.getId());
Long amount = sysOaOutWarehouse.getAmount();
SysOaWarehouseDetail sysOaWarehouseDetail = baseMapper.selectById(update.getId());
Long amount = sysOaWarehouseDetail.getAmount();
//找出库存表对应的那条数据 的库存数量
LambdaQueryWrapper<SysOaWarehouse> lqw = Wrappers.lambdaQuery();
@@ -249,7 +243,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(SysOaOutWarehouse entity){
private void validEntityBeforeSave(SysOaWarehouseDetail entity){
//TODO 做一些数据校验,如唯一约束
}
@@ -264,16 +258,16 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
//需要增加的对应物料数量
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.in(SysOaOutWarehouse::getId, ids.toArray());
LambdaQueryWrapper<SysOaWarehouseDetail> lqw = Wrappers.lambdaQuery();
lqw.in(SysOaWarehouseDetail::getId, ids.toArray());
//出库表中的所有删除的数据
List<SysOaOutWarehouse> sysOaOutWarehouses = baseMapper.selectList(lqw);
List<SysOaWarehouseDetail> sysOaWarehouseDetails = baseMapper.selectList(lqw);
//其中一条
sysOaOutWarehouses.forEach(sysOaOutWarehouse -> {
sysOaWarehouseDetails.forEach(sysOaWarehouseDetail -> {
//选出相对应的 库存表中那一条的数据
SysOaWarehouse warehouse = warehouseMapper.selectVoByIdAndXml(sysOaOutWarehouse.getWarehouseId());
SysOaWarehouse warehouse = warehouseMapper.selectVoByIdAndXml(sysOaWarehouseDetail.getWarehouseId());
// 恢复原本出库的数量
warehouse.setInventory(warehouse.getInventory() + sysOaOutWarehouse.getAmount());
warehouse.setInventory(warehouse.getInventory() + sysOaWarehouseDetail.getAmount());
warehouseMapper.updateById(warehouse);
});
return baseMapper.deleteBatchIds(ids) > 0;
@@ -285,14 +279,14 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService {
* @return
*/
@Override
public TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(Long projectId) {
LambdaQueryWrapper<SysOaOutWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaOutWarehouse::getProjectId, projectId);
List<SysOaOutWarehouseVo> sysOaOutWarehouseVos = baseMapper.selectVoList(lqw);
for (SysOaOutWarehouseVo sysOaOutWarehouseVo :sysOaOutWarehouseVos) {
sysOaOutWarehouseVo.setWarehouseName(warehouseMapper.selectVoByIdAndXml((sysOaOutWarehouseVo.getWarehouseId())).getName());
public TableDataInfo<SysOaWarehouseDetailVo> queryOutWarehouseByProjectId(Long projectId) {
LambdaQueryWrapper<SysOaWarehouseDetail> lqw = Wrappers.lambdaQuery();
lqw.eq(SysOaWarehouseDetail::getProjectId, projectId);
List<SysOaWarehouseDetailVo> sysOaWarehouseDetailVos = baseMapper.selectVoList(lqw);
for (SysOaWarehouseDetailVo sysOaWarehouseDetailVo : sysOaWarehouseDetailVos) {
sysOaWarehouseDetailVo.setWarehouseName(warehouseMapper.selectVoByIdAndXml((sysOaWarehouseDetailVo.getWarehouseId())).getName());
}
return TableDataInfo.build(sysOaOutWarehouseVos);
return TableDataInfo.build(sysOaWarehouseDetailVos);
}

View File

@@ -1,12 +1,19 @@
package com.ruoyi.oa.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper;
import com.ruoyi.oa.service.ISysOaWarehouseDetailService;
import com.ruoyi.oa.service.ISysOaWarehouseService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo;
@@ -15,9 +22,7 @@ import com.ruoyi.oa.domain.SysOaWarehouseMaster;
import com.ruoyi.oa.mapper.SysOaWarehouseMasterMapper;
import com.ruoyi.oa.service.ISysOaWarehouseMasterService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
/**
* 出库单管理Service业务层处理
@@ -31,6 +36,10 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
private final SysOaWarehouseMasterMapper baseMapper;
private final ISysOaWarehouseDetailService warehouseDetailService;
private final ISysOaWarehouseService warehouseService;
/**
* 查询出库单管理
*/
@@ -44,8 +53,8 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
*/
@Override
public TableDataInfo<SysOaWarehouseMasterVo> queryPageList(SysOaWarehouseMasterBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysOaWarehouseMaster> lqw = buildQueryWrapper(bo);
Page<SysOaWarehouseMasterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
QueryWrapper<SysOaWarehouseMaster> lqw = buildQueryWrapper(bo);
Page<SysOaWarehouseMasterVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
@@ -54,17 +63,19 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
*/
@Override
public List<SysOaWarehouseMasterVo> queryList(SysOaWarehouseMasterBo bo) {
LambdaQueryWrapper<SysOaWarehouseMaster> lqw = buildQueryWrapper(bo);
QueryWrapper<SysOaWarehouseMaster> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<SysOaWarehouseMaster> buildQueryWrapper(SysOaWarehouseMasterBo bo) {
private QueryWrapper<SysOaWarehouseMaster> buildQueryWrapper(SysOaWarehouseMasterBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<SysOaWarehouseMaster> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getType() != null, SysOaWarehouseMaster::getType, bo.getType());
lqw.eq(bo.getProjectId() != null, SysOaWarehouseMaster::getProjectId, bo.getProjectId());
lqw.eq(bo.getSignTime() != null, SysOaWarehouseMaster::getSignTime, bo.getSignTime());
lqw.eq(StringUtils.isNotBlank(bo.getSignUser()), SysOaWarehouseMaster::getSignUser, bo.getSignUser());
QueryWrapper<SysOaWarehouseMaster> lqw = Wrappers.query();
lqw.eq(bo.getType() != null, "sowm.type", bo.getType());
lqw.eq(bo.getProjectId() != null, "sowm.project_id", bo.getProjectId());
lqw.eq(bo.getSignTime() != null, "sowm.sign_time", bo.getSignTime());
lqw.like(StringUtils.isNotBlank(bo.getSignUser()), "sowm.sign_user", bo.getSignUser());
lqw.eq("sowm.del_flag", 0L);
lqw.orderByDesc("sowm.create_time");
return lqw;
}
@@ -75,9 +86,14 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
public Boolean insertByBo(SysOaWarehouseMasterBo bo) {
SysOaWarehouseMaster add = BeanUtil.toBean(bo, SysOaWarehouseMaster.class);
validEntityBeforeSave(add);
add.setSignUser(LoginHelper.getNickName());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setMasterId(add.getMasterId());
// 出库单新增后 新增出库元素同时减去现有的,这里要记录一个出库时单价
for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) {
sysOaWarehouseDetailBo.setMasterId(add.getMasterId());
warehouseDetailService.insertByBo(sysOaWarehouseDetailBo);
}
}
return flag;
}
@@ -89,7 +105,16 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
public Boolean updateByBo(SysOaWarehouseMasterBo bo) {
SysOaWarehouseMaster update = BeanUtil.toBean(bo, SysOaWarehouseMaster.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
boolean flag = baseMapper.updateById(update) > 0;
if (flag) {
List<SysOaWarehouseDetailBo> warehouseList = bo.getWarehouseList();
for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : warehouseList) {
sysOaWarehouseDetailBo.setMasterId(bo.getMasterId());
warehouseDetailService.insertByBo(sysOaWarehouseDetailBo);
}
}
return flag;
}
/**
@@ -109,4 +134,27 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public int insertInWarehouse(SysOaWarehouseBo bo) {
warehouseService.insertByBo(bo);
SysOaWarehouseMaster sysOaWarehouseMaster = new SysOaWarehouseMaster();
sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString());
sysOaWarehouseMaster.setRemark(bo.getRemark());
sysOaWarehouseMaster.setCreateBy(LoginHelper.getNickName());
sysOaWarehouseMaster.setUpdateBy(LoginHelper.getNickName());
sysOaWarehouseMaster.setSignTime(new Date());
sysOaWarehouseMaster.setSignUser(LoginHelper.getNickName());
sysOaWarehouseMaster.setType(1L);
int flag = baseMapper.insert(sysOaWarehouseMaster);
SysOaWarehouseDetailBo sysOaWarehouseDetailBo = new SysOaWarehouseDetailBo();
sysOaWarehouseDetailBo.setWarehouseId(bo.getId());
sysOaWarehouseDetailBo.setAmount(bo.getInventory());
sysOaWarehouseDetailBo.setSignPrice(bo.getPrice());
sysOaWarehouseDetailBo.setCreateBy(LoginHelper.getNickName());
sysOaWarehouseDetailBo.setUpdateBy(LoginHelper.getNickName());
sysOaWarehouseDetailBo.setMasterId(sysOaWarehouseMaster.getMasterId());
warehouseDetailService.insertByBo(sysOaWarehouseDetailBo);
return flag;
}
}

View File

@@ -7,8 +7,7 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.mapper.SysOaOutWarehouseMapper;
import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
@@ -17,7 +16,6 @@ import com.ruoyi.oa.domain.SysOaWarehouse;
import com.ruoyi.oa.mapper.SysOaWarehouseMapper;
import com.ruoyi.oa.service.ISysOaWarehouseService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -34,7 +32,7 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
private final SysOaWarehouseMapper baseMapper;
private final SysOaOutWarehouseMapper outWareMapper;
private final SysOaWarehouseDetailMapper outWareMapper;
/**
* 查询仓库管理