这个死财务提的莫名其妙的需求
This commit is contained in:
@@ -2,23 +2,21 @@ package com.ruoyi.oa.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ruoyi.oa.domain.vo.ProjectAttendanceVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.validate.AddGroup;
|
||||
import com.ruoyi.common.core.validate.EditGroup;
|
||||
import com.ruoyi.common.core.validate.QueryGroup;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo;
|
||||
import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo;
|
||||
@@ -99,4 +97,18 @@ public class OaAttendanceRecordController extends BaseController {
|
||||
@PathVariable Long[] recordIds) {
|
||||
return toAjax(iOaAttendanceRecordService.deleteWithValidByIds(Arrays.asList(recordIds), true));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/attendance")
|
||||
public R<List<ProjectAttendanceVo>>getAttendance(
|
||||
@RequestParam List<String> userIds,
|
||||
@RequestParam(required = false) String calcTime,
|
||||
@RequestParam String relationMonth) {
|
||||
// 使用 Stream 将 List<String> 转换为 List<Long>
|
||||
List<Long> longList = userIds.stream()
|
||||
.map(Long::parseLong) // 将每个 String 转换为 Long
|
||||
.collect(Collectors.toList());
|
||||
return R.ok(iOaAttendanceRecordService.getAttendance(longList,calcTime, relationMonth));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,4 +128,13 @@ public class SysOaWarehouseMasterController extends BaseController {
|
||||
@PathVariable Long[] masterIds) {
|
||||
return toAjax(iSysOaWarehouseMasterService.deleteWithValidByIds(Arrays.asList(masterIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回出库单
|
||||
* 这个傻逼库房非得让写个撤回 勾八自己写错了信息化背锅
|
||||
*/
|
||||
@GetMapping("/redo/{masterId}")
|
||||
public R<Void> redo(@PathVariable("masterId") Long masterId) {
|
||||
return toAjax(iSysOaWarehouseMasterService.redoMaster(masterId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.oa.domain;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ProjectAttendance {
|
||||
private Long userId;
|
||||
private String relationMonth;
|
||||
private Long projectId;
|
||||
private String projectName;
|
||||
private Long workDays;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.ruoyi.oa.domain.vo;
|
||||
|
||||
|
||||
import com.ruoyi.oa.domain.ProjectAttendance;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ProjectAttendanceVo {
|
||||
private Long userId;
|
||||
private String relationMonth;
|
||||
private String nickName;
|
||||
|
||||
private List<ProjectAttendance> projects;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.ruoyi.oa.mapper;
|
||||
|
||||
import com.ruoyi.oa.domain.ProjectAttendance;
|
||||
import com.ruoyi.oa.domain.vo.ProjectAttendanceVo;
|
||||
import com.ruoyi.oa.domain.OaAttendanceRecord;
|
||||
import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo;
|
||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -38,4 +41,12 @@ public interface OaAttendanceRecordMapper extends BaseMapperPlus<OaAttendanceRec
|
||||
* @return
|
||||
*/
|
||||
OaAttendanceRecordVo selectVoByIdPlus(Long recordId);
|
||||
|
||||
List<ProjectAttendance> getAttendance(@Param("userIds") List<Long> userIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth);
|
||||
|
||||
SysOaProjectVo getProjectById(Long projectId);
|
||||
|
||||
Long getWorkDays(@Param("userId") Long userId, @Param("projectIds") String[] projectIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth);
|
||||
|
||||
List<String> selectProjectIds(@Param("userIds") List<Long> userIds, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth);
|
||||
}
|
||||
|
||||
@@ -44,4 +44,6 @@ public interface SysOaAttendanceMapper extends BaseMapperPlus<SysOaAttendanceMap
|
||||
AttendanceMonthlyCount selectAttendanceMonthlyCountByMonth(String refDate);
|
||||
|
||||
List<AttendanceMonthlyCount> selectMonthlyCounts(String refDate);
|
||||
|
||||
Long getWorkDaysByUserIdAndProjectId(@Param("userId") Long userId, @Param("projectId") Long projectId, @Param("calcTime") String calcTime, @Param("relationMonth") String relationMonth);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ruoyi.oa.service;
|
||||
|
||||
import com.ruoyi.oa.domain.vo.ProjectAttendanceVo;
|
||||
import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo;
|
||||
import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
@@ -53,4 +54,6 @@ public interface IOaAttendanceRecordService {
|
||||
*/
|
||||
List<String> listGenDate(String date);
|
||||
|
||||
List<ProjectAttendanceVo> getAttendance(List<Long> userIds,String calcTime, String relationMonth);
|
||||
|
||||
}
|
||||
|
||||
@@ -63,4 +63,12 @@ public interface ISysOaWarehouseMasterService {
|
||||
*/
|
||||
int updateMasterAndInsertBatchWare(SysOaWarehouseMasterBo bo);
|
||||
|
||||
|
||||
/**
|
||||
* 撤回出库
|
||||
* @param masterId
|
||||
* @return
|
||||
*/
|
||||
int redoMaster(Long masterId);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,20 @@
|
||||
package com.ruoyi.oa.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
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.ProjectAttendance;
|
||||
import com.ruoyi.oa.domain.vo.ProjectAttendanceVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import com.ruoyi.oa.mapper.SysOaAttendanceMapper;
|
||||
import com.ruoyi.oa.mapper.SysOaProjectMapper;
|
||||
import com.ruoyi.system.mapper.SysUserMapper;
|
||||
import liquibase.pro.packaged.A;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.OaAttendanceRecordBo;
|
||||
import com.ruoyi.oa.domain.vo.OaAttendanceRecordVo;
|
||||
@@ -29,6 +36,15 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService
|
||||
|
||||
private final OaAttendanceRecordMapper baseMapper;
|
||||
|
||||
@Autowired
|
||||
private SysOaProjectMapper projectMapper;
|
||||
|
||||
@Autowired
|
||||
private SysOaAttendanceMapper attendanceMapper;
|
||||
|
||||
@Autowired
|
||||
private SysUserMapper userMapper;
|
||||
|
||||
/**
|
||||
* 查询计算记录
|
||||
*/
|
||||
@@ -130,4 +146,75 @@ public class OaAttendanceRecordServiceImpl implements IOaAttendanceRecordService
|
||||
|
||||
return baseMapper.listGenDate(date);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param userIds
|
||||
* @param calcTime “yyyy-MM-dd”
|
||||
* @param relationMonth “yyyy-MM-dd”
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectAttendanceVo> getAttendance(List<Long> userIds, String calcTime,String relationMonth) {
|
||||
// 首先查询合并好的projectIds 然后在查到的这个Long类型的列表后加入 0 1, 分别代表0出差1请假
|
||||
List<String> projectIdsString = baseMapper.selectProjectIds(userIds,calcTime,relationMonth);
|
||||
List<Long> projectIds = parseProjectIds(projectIdsString);
|
||||
projectIds.add(0L);
|
||||
projectIds.add(1L);
|
||||
// 然后拿着每一个userId和projectId去签到表查询出勤 在传入的计算时间之前
|
||||
List<ProjectAttendanceVo> attendanceVoList = new ArrayList<>();
|
||||
for (Long userId : userIds) {
|
||||
|
||||
List<ProjectAttendance> projects = new ArrayList<>();
|
||||
for (Long projectId : projectIds) {
|
||||
// 老规矩如果calcTime和relationMonth不在一个月则查询relationMonth全月的 如果在一个月则查询从一号到calcTime的出勤次数 及day_length>0或hour>0或project_id=0
|
||||
Long workDays = attendanceMapper.getWorkDaysByUserIdAndProjectId(userId,projectId,calcTime,relationMonth);
|
||||
|
||||
ProjectAttendance projectAttendance = new ProjectAttendance();
|
||||
projectAttendance.setProjectId(projectId);
|
||||
projectAttendance.setWorkDays(workDays);
|
||||
if (projectId.equals(0L)) {
|
||||
projectAttendance.setProjectName("出差");
|
||||
}else if (projectId.equals(1L)) {
|
||||
projectAttendance.setProjectName("请假");
|
||||
}else{
|
||||
SysOaProjectVo sysOaProjectVo = projectMapper.selectVoById(projectId);
|
||||
projectAttendance.setProjectName(sysOaProjectVo.getProjectName());
|
||||
}
|
||||
|
||||
projects.add(projectAttendance);
|
||||
}
|
||||
ProjectAttendanceVo projectAttendanceVo = new ProjectAttendanceVo();
|
||||
projectAttendanceVo.setProjects(projects);
|
||||
projectAttendanceVo.setRelationMonth(relationMonth);
|
||||
projectAttendanceVo.setNickName(userMapper.selectVoById(userId).getNickName());
|
||||
attendanceVoList.add(projectAttendanceVo);
|
||||
}
|
||||
//
|
||||
return attendanceVoList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static List<Long> parseProjectIds(List<String> projectIdsString) {
|
||||
// 使用 HashSet 来确保去重
|
||||
Set<Long> projectIdSet = new HashSet<>();
|
||||
// 遍历输入的每个字符串
|
||||
for (String ids : projectIdsString) {
|
||||
// 按照逗号分割每个字符串
|
||||
String[] idsArray = ids.split(",");
|
||||
|
||||
// 将每个分割出来的 ID 转换为 Long 类型并添加到 Set 中
|
||||
for (String id : idsArray) {
|
||||
// 去除空格并检查是否为空字符串
|
||||
id = id.trim(); // 去除两端的空格
|
||||
if (!id.isEmpty()) { // 如果不为空
|
||||
projectIdSet.add(Long.parseLong(id)); // 转换并添加到 Set 中
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 返回 List,Set 会自动去重
|
||||
return new ArrayList<>(projectIdSet);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<SysOaProject> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SysOaProject::getProjectName, bo.getProjectName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectCode()), SysOaProject::getProjectCode, bo.getProjectCode());
|
||||
|
||||
lqw.eq(bo.getTradeType() != null, SysOaProject::getTradeType, bo.getTradeType());
|
||||
|
||||
@@ -3,23 +3,31 @@ 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.BeanCopyUtils;
|
||||
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.toolkit.Wrappers;
|
||||
import com.ruoyi.oa.domain.SysOaWarehouse;
|
||||
import com.ruoyi.oa.domain.SysOaWarehouseDetail;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaWarehouseVo;
|
||||
import com.ruoyi.oa.mapper.SysOaWarehouseDetailMapper;
|
||||
import com.ruoyi.oa.mapper.SysOaWarehouseMapper;
|
||||
import com.ruoyi.oa.service.ISysOaWarehouseDetailService;
|
||||
import com.ruoyi.oa.service.ISysOaWarehouseService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaWarehouseMasterVo;
|
||||
import com.ruoyi.oa.domain.SysOaWarehouseMaster;
|
||||
import com.ruoyi.oa.mapper.SysOaWarehouseMasterMapper;
|
||||
import com.ruoyi.oa.service.ISysOaWarehouseMasterService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -39,6 +47,9 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
||||
|
||||
private final ISysOaWarehouseDetailService warehouseDetailService;
|
||||
|
||||
@Autowired
|
||||
private SysOaWarehouseMapper warehouseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 查询出库单管理
|
||||
@@ -161,7 +172,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
System.out.println(ids);
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
@@ -210,36 +220,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
||||
|
||||
return flag;
|
||||
|
||||
|
||||
// // 获取是否存在此采购单的入库单
|
||||
// if (bo.getType() == 2L) {
|
||||
// for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) {
|
||||
// Long taskStatus = item.getTaskStatus();
|
||||
// if (taskStatus == 1|| taskStatus == 0) {
|
||||
// item.setInventory(item.getTaskInventory());
|
||||
// SysOaWarehouseDetailBo bo = new SysOaWarehouseDetailBo();
|
||||
// bo.setAmount(item.getInventory());
|
||||
// bo.setSignPrice(item.getPrice());
|
||||
// Long warehouseId = insertByBo2(item);
|
||||
// bo.setWarehouseId(warehouseId);
|
||||
// list.add(bo);
|
||||
// }
|
||||
// }
|
||||
// SysOaWarehouseMasterBo sysOaWarehouseMaster = new SysOaWarehouseMasterBo();
|
||||
// sysOaWarehouseMaster.setType(1L);
|
||||
// List<SysOaWarehouseDetailBo> list = new ArrayList<>();
|
||||
// boList.forEach(item -> {
|
||||
//
|
||||
// });
|
||||
// sysOaWarehouseMaster.setWarehouseList(list);
|
||||
// sysOaWarehouseMaster.setMasterNum(UUID.randomUUID().toString());
|
||||
// return masterService.insertByBo(sysOaWarehouseMaster);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// // 如果不是2应该进不来 后面看一下是否删除掉
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -247,4 +227,27 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int redoMaster(Long masterId) {
|
||||
SysOaWarehouseDetailBo sysOaWarehouseDetailBo = new SysOaWarehouseDetailBo();
|
||||
sysOaWarehouseDetailBo.setMasterId(masterId);
|
||||
List<SysOaWarehouseDetailVo> sysOaWarehouseDetailVos = warehouseDetailService.queryList(sysOaWarehouseDetailBo);
|
||||
for (SysOaWarehouseDetailVo sysOaWarehouseDetailVo : sysOaWarehouseDetailVos) {
|
||||
SysOaWarehouseVo sysOaWarehouseVo = warehouseMapper.selectVoById(sysOaWarehouseDetailVo.getWarehouseId());
|
||||
// 拿到原有的物料
|
||||
if (sysOaWarehouseVo != null) {
|
||||
// 如果还存在此物料就把库存恢复 然后把价格加权计算
|
||||
Long newInventory = sysOaWarehouseDetailVo.getAmount()+sysOaWarehouseVo.getInventory();
|
||||
Double newPrice = (sysOaWarehouseDetailVo.getSignPrice()*sysOaWarehouseDetailVo.getAmount()+sysOaWarehouseVo.getPrice()*sysOaWarehouseVo.getInventory())/(newInventory);
|
||||
sysOaWarehouseVo.setPrice(newPrice);
|
||||
sysOaWarehouseVo.setInventory(newInventory);
|
||||
warehouseMapper.updateById(sysOaWarehouseVo);
|
||||
}
|
||||
|
||||
}
|
||||
// 全部做完之后删除此出库单
|
||||
return baseMapper.deleteById(masterId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user