From 76403c1cf8caed9c0c3d9c07935ceeed0a645631 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Sat, 16 Nov 2024 20:08:00 +0800 Subject: [PATCH] =?UTF-8?q?oa=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/entity/SysUser.java | 2 + .../controller/SysOaAttendanceController.java | 38 ++- .../com/ruoyi/oa/domain/LaborCostData.java | 31 +++ .../com/ruoyi/oa/domain/SysOaAttendance.java | 4 +- .../oa/domain/bo/SysOaOutWarehouseBo.java | 1 - .../ruoyi/oa/domain/vo/SysOaAttendanceVo.java | 13 +- .../oa/domain/vo/SysOaOutWarehouseListVo.java | 3 +- .../oa/domain/vo/SysOaOutWarehouseVo.java | 5 + .../ruoyi/oa/domain/vo/SysOaProjectVo.java | 5 + .../com/ruoyi/oa/domain/vo/SysOaTaskVo.java | 4 + .../ruoyi/oa/domain/vo/SysOaWarehouseVo.java | 3 +- .../oa/mapper/SysOaAttendanceMapper.java | 5 + .../ruoyi/oa/mapper/SysOaProjectMapper.java | 1 + .../ruoyi/oa/mapper/SysOaWarehouseMapper.java | 7 + .../oa/service/ISysOaAttendanceService.java | 20 ++ .../oa/service/ISysOaProjectService.java | 2 + .../impl/SysOaAttendanceServiceImpl.java | 65 ++++++ .../impl/SysOaOutWarehouseServiceImpl.java | 60 +++-- .../oa/service/impl/SysOaTaskServiceImpl.java | 30 +++ .../impl/SysOaWarehouseServiceImpl.java | 8 +- .../mapper/oa/SysOaAttendanceMapper.xml | 28 ++- .../mapper/oa/SysOaOutWarehouseMapper.xml | 18 +- .../mapper/oa/SysOaProjectMapper.xml | 30 +++ .../mapper/oa/SysOaWarehouseMapper.xml | 6 +- .../resources/mapper/system/SysUserMapper.xml | 3 + ruoyi-ui/src/api/oa/oaAttendance.js | 19 ++ ruoyi-ui/src/assets/logo/logo.png | Bin 3962 -> 145163 bytes ruoyi-ui/src/router/index.js | 30 +++ ruoyi-ui/src/views/index.vue | 23 +- ruoyi-ui/src/views/oa/attendance/index.vue | 199 +++++++++++++++- ruoyi-ui/src/views/oa/closure/index.vue | 160 +++++++++++++ .../src/views/oa/oaOutWarehouse/index.vue | 216 ++++++++++++++++-- ruoyi-ui/src/views/oa/oaWarehouse/data.vue | 180 +++++++++++++++ ruoyi-ui/src/views/oa/oaWarehouse/index.vue | 11 +- ruoyi-ui/src/views/oa/project/index.vue | 20 +- 35 files changed, 1157 insertions(+), 93 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/LaborCostData.java create mode 100644 ruoyi-ui/src/views/oa/closure/index.vue create mode 100644 ruoyi-ui/src/views/oa/oaWarehouse/data.vue diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index a37f810..40041ce 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -157,6 +157,8 @@ public class SysUser extends BaseEntity { private Long laborCost; + private Double workTime; + /** * 数据权限 当前角色ID diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaAttendanceController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaAttendanceController.java index 739f178..62728e8 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaAttendanceController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaAttendanceController.java @@ -1,8 +1,12 @@ package com.ruoyi.oa.controller; +import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.Arrays; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.oa.domain.LaborCostData; import com.ruoyi.oa.domain.vo.SysUserVo; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; @@ -38,10 +42,35 @@ public class SysOaAttendanceController extends BaseController { private final ISysOaAttendanceService iSysOaAttendanceService; + + /** + * 获取当前月的天数 + * @return + */ + @GetMapping("/date") + public R date() { + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(DateUtils.getNowDate()); + Long dateLength = (long) calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + + return R.ok(dateLength); + } + + + /** + * 获取当前月的天数 + * @return + */ + @GetMapping("/calc/{time}") + public R> calc(@PathVariable("time") Date time) { + return R.ok(iSysOaAttendanceService.workerCalc(time)); + } + + /** * 查询人员考勤列表 */ - @SaCheckPermission("system:oaAttendance:list") @GetMapping("/list") public TableDataInfo list(SysOaAttendanceBo bo, PageQuery pageQuery) { return iSysOaAttendanceService.queryPageList(bo, pageQuery); @@ -52,7 +81,6 @@ public class SysOaAttendanceController extends BaseController { /** * 查询人员考勤列表 */ - @SaCheckPermission("system:oaAttendance:list") @GetMapping("/worker/list") public R> workerList(SysOaAttendanceBo bo) { @@ -63,7 +91,6 @@ public class SysOaAttendanceController extends BaseController { /** * 导出人员考勤列表 */ - @SaCheckPermission("system:oaAttendance:export") @Log(title = "人员考勤", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(SysOaAttendanceBo bo, HttpServletResponse response) { @@ -76,7 +103,6 @@ public class SysOaAttendanceController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("system:oaAttendance:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) { @@ -86,7 +112,6 @@ public class SysOaAttendanceController extends BaseController { /** * 新增人员考勤 */ - @SaCheckPermission("system:oaAttendance:add") @Log(title = "人员考勤", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -97,7 +122,6 @@ public class SysOaAttendanceController extends BaseController { /** * 修改人员考勤 */ - @SaCheckPermission("system:oaAttendance:edit") @Log(title = "人员考勤", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @@ -110,7 +134,6 @@ public class SysOaAttendanceController extends BaseController { * * @param ids 主键串 */ - @SaCheckPermission("system:oaAttendance:remove") @Log(title = "人员考勤", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @@ -122,7 +145,6 @@ public class SysOaAttendanceController extends BaseController { /** * 新增人员考勤 */ - @SaCheckPermission("system:oaAttendance:add") @Log(title = "人员考勤", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/insertBatch") diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/LaborCostData.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/LaborCostData.java new file mode 100644 index 0000000..3cd3307 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/LaborCostData.java @@ -0,0 +1,31 @@ +package com.ruoyi.oa.domain; + +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.oa.domain.vo.SysOaAttendanceVo; +import com.ruoyi.oa.domain.vo.SysOaProjectVo; +import com.ruoyi.oa.domain.vo.SysUserVo; +import lombok.Data; + +import java.util.List; + +@Data +public class LaborCostData extends BaseEntity { + + // 对应用户 + private SysUserVo sysUser; + + // 计算月份 + private Long generateMonth; + + // 当前月的工作量 + private Double workTimes; + + // 捆绑的项目列表 + private List projects; + + // 当月的所有签到信息 + private List attendances; + + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaAttendance.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaAttendance.java index 62e2988..7c36bbd 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaAttendance.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaAttendance.java @@ -39,11 +39,11 @@ public class SysOaAttendance extends BaseEntity { /** * 时长(天)1|0.5 */ - private Long dayLength; + private Double dayLength; /** * 时长(小时) */ - private Long hour; + private Double hour; /** * 备注 */ diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaOutWarehouseBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaOutWarehouseBo.java index 169389b..1c6559f 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaOutWarehouseBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaOutWarehouseBo.java @@ -33,7 +33,6 @@ public class SysOaOutWarehouseBo extends BaseEntity { /** * 出库后对应的项目id */ - @NotNull(message = "项目id不能为空",groups = { AddGroup.class }) private Long projectId; /** diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaAttendanceVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaAttendanceVo.java index a58daf9..3fc39fd 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaAttendanceVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaAttendanceVo.java @@ -5,6 +5,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.oa.domain.SysOaAttendance; import com.ruoyi.oa.domain.SysOaProject; import lombok.Data; @@ -17,7 +18,7 @@ import lombok.Data; */ @Data @ExcelIgnoreUnannotated -public class SysOaAttendanceVo { +public class SysOaAttendanceVo extends SysOaAttendance { private static final long serialVersionUID = 1L; @@ -50,14 +51,14 @@ public class SysOaAttendanceVo { */ @ExcelProperty(value = "时长", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "天=") - private Long dayLength; + private Double dayLength; /** * 时长(小时) */ @ExcelProperty(value = "时长", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "小=时") - private Long hour; + private Double hour; /** * 备注 @@ -71,5 +72,11 @@ public class SysOaAttendanceVo { private String color; + private Long count; + + // 单个工作时间 + private Double workTimes; + + private String projectName; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseListVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseListVo.java index d2d35b8..e542724 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseListVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseListVo.java @@ -2,6 +2,7 @@ package com.ruoyi.oa.domain.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import java.util.List; @@ -15,7 +16,7 @@ import java.util.List; */ @Data @ExcelIgnoreUnannotated -public class SysOaOutWarehouseListVo { +public class SysOaOutWarehouseListVo extends BaseEntity { /** * ID 编号 */ diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseVo.java index 7a6e736..838170e 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaOutWarehouseVo.java @@ -55,5 +55,10 @@ public class SysOaOutWarehouseVo extends BaseEntity { /** 项目名 */ private String projectName; + /** 库存信息 */ + private SysOaWarehouseVo warehouse; + + /** 项目信息 */ + private SysOaProjectVo project; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java index ce128f2..49dd977 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java @@ -186,4 +186,9 @@ public class SysOaProjectVo { */ private String color; + + /** + * 此项目数量 用户报工功能 + */ + private Long count; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java index 879a910..3f28b0b 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaTaskVo.java @@ -108,5 +108,9 @@ public class SysOaTaskVo { * */ private List workerList; + /** + * 此任务总成本 + */ + private Double projectCostTotal; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java index c7d5284..84a4e7e 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaWarehouseVo.java @@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; +import com.ruoyi.oa.domain.SysOaWarehouse; import lombok.Data; import java.util.Date; @@ -17,7 +18,7 @@ import java.util.Date; */ @Data @ExcelIgnoreUnannotated -public class SysOaWarehouseVo { +public class SysOaWarehouseVo extends SysOaWarehouse { private static final long serialVersionUID = 1L; diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java index c1cf5f4..09d5a93 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaAttendanceMapper.java @@ -3,6 +3,10 @@ package com.ruoyi.oa.mapper; import com.ruoyi.oa.domain.SysOaAttendance; import com.ruoyi.oa.domain.vo.SysOaAttendanceVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; /** * 人员考勤Mapper接口 @@ -12,4 +16,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus; */ public interface SysOaAttendanceMapper extends BaseMapperPlus { + List selectVoListAndTime(@Param("userId") Long userId, @Param("firstDay") Date firstDay, @Param("lastDay") Date lastDay); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java index e648689..6e3b169 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java @@ -22,4 +22,5 @@ public interface SysOaProjectMapper extends BaseMapperPlus selectPageOutList(@Param("page") Page page,@Param(Constants.WRAPPER) Wrapper queryWrapper); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java index 76310a3..1ce2061 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaWarehouseMapper.java @@ -12,4 +12,11 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus; */ public interface SysOaWarehouseMapper extends BaseMapperPlus { + /** + * + * 查询已经被逻辑删除的数据 + * @param warehouseId + * @return + */ + SysOaWarehouseVo selectVoByIdAndXml(Long warehouseId); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaAttendanceService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaAttendanceService.java index 9cacbef..61c569d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaAttendanceService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaAttendanceService.java @@ -1,5 +1,6 @@ package com.ruoyi.oa.service; +import com.ruoyi.oa.domain.LaborCostData; import com.ruoyi.oa.domain.vo.SysOaAttendanceVo; import com.ruoyi.oa.domain.bo.SysOaAttendanceBo; import com.ruoyi.common.core.page.TableDataInfo; @@ -7,6 +8,7 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.oa.domain.vo.SysUserVo; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -47,7 +49,25 @@ public interface ISysOaAttendanceService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + /** + * 工人列表 + * @param bo + * @return + */ List workerList(SysOaAttendanceBo bo); + /** + * 批量插入 + * @param bo + * @return + */ int insertBatch(SysOaAttendanceBo bo); + + /** + * 人力成本计算接口 + * + * @param time 时间 + */ + List workerCalc(Date time); + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java index ad02254..1262e21 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java @@ -49,4 +49,6 @@ public interface ISysOaProjectService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); TableDataInfo queryOutWarePageList(SysOaOutWarehouseBo bo, PageQuery pageQuery); + + } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaAttendanceServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaAttendanceServiceImpl.java index 9307733..0d3d6cd 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaAttendanceServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaAttendanceServiceImpl.java @@ -6,12 +6,15 @@ 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.common.utils.DateUtils; +import com.ruoyi.oa.domain.LaborCostData; import com.ruoyi.oa.domain.vo.SysOaProjectVo; import com.ruoyi.oa.domain.vo.SysUserVo; import com.ruoyi.oa.service.ISysOaProjectService; import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.service.ISysUserService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.oa.domain.bo.SysOaAttendanceBo; @@ -22,6 +25,7 @@ import com.ruoyi.oa.service.ISysOaAttendanceService; import java.time.LocalDate; import java.util.*; +import java.util.stream.Collectors; /** * 人员考勤Service业务层处理 @@ -29,6 +33,7 @@ import java.util.*; * @author hdka * @date 2024-11-05 */ +@Slf4j @RequiredArgsConstructor @Service public class SysOaAttendanceServiceImpl implements ISysOaAttendanceService { @@ -182,4 +187,64 @@ public class SysOaAttendanceServiceImpl implements ISysOaAttendanceService { } return 1; } + + + /** + * 计算人力成本 + * + * @param time 月份 + * @return + */ + @Override + public List workerCalc(Date time) { + + String firstDay = DateUtils.parseDateToStr("yyyy-MM-01", time); + + String format = "yyyy-MM-"; + // 计算某月的天数 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(time); + String dateLength = String.valueOf(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + // 将字符串拼接 + format +=dateLength; + String lastDay = DateUtils.parseDateToStr(format, time); + // 查询所有的工人 + List userIds = sysUserRoleMapper.selectUserIdsByRoleId(1852970465740505090L); + + + List costDataList = new ArrayList<>(); + for (Long userId : userIds) { + SysUserVo sysUser = BeanUtil.toBean(sysUserService.selectUserById(userId), SysUserVo.class); + SysOaAttendanceVo sysOaAttendanceVo = new SysOaAttendanceVo(); + sysOaAttendanceVo.setUserId(sysUser.getUserId()); + + // 查询某月记录 + List sysOaAttendanceVos = baseMapper.selectVoListAndTime(userId, DateUtils.parseDate(firstDay),DateUtils.parseDate(lastDay)); + + List projectVos = new ArrayList<>(); + + Double workTimes = 0.0; + System.out.println(sysOaAttendanceVos); + for (SysOaAttendanceVo oaAttendanceVo : sysOaAttendanceVos) { + SysOaProjectVo sysOaProjectVo = projectService.queryById(oaAttendanceVo.getProjectId()); + oaAttendanceVo.setColor(sysOaProjectVo.getColor()); + oaAttendanceVo.setSysOaProjectVo(sysOaProjectVo); + oaAttendanceVo.setProjectName(sysOaProjectVo.getProjectName()); + projectVos.add(sysOaProjectVo); + workTimes+=oaAttendanceVo.getWorkTimes(); + + } + projectVos.stream().distinct().collect(Collectors.toList()); + LaborCostData laborCostData = new LaborCostData(); + laborCostData.setProjects(projectVos); + laborCostData.setAttendances(sysOaAttendanceVos); + laborCostData.setSysUser(sysUser); + laborCostData.setWorkTimes(workTimes); + costDataList.add(laborCostData); + } + + + + return costDataList; + } } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaOutWarehouseServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaOutWarehouseServiceImpl.java index 941514f..044cb90 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaOutWarehouseServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaOutWarehouseServiceImpl.java @@ -15,11 +15,14 @@ import com.ruoyi.oa.domain.SysOaWarehouse; import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo2; import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBoList; 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.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; @@ -28,10 +31,7 @@ import com.ruoyi.oa.domain.SysOaOutWarehouse; import com.ruoyi.oa.mapper.SysOaOutWarehouseMapper; import com.ruoyi.oa.service.ISysOaOutWarehouseService; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; import static cn.hutool.core.bean.BeanUtil.*; @@ -61,7 +61,16 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { */ @Override public SysOaOutWarehouseVo queryById(Long id){ - return baseMapper.selectVoById(id); + SysOaOutWarehouseVo sysOaOutWarehouseVo = baseMapper.selectVoById(id); + SysOaWarehouseVo sysOaWarehouse = warehouseMapper.selectVoByIdAndXml(sysOaOutWarehouseVo.getWarehouseId()); + SysOaProjectVo sysOaProject = projectMapper.selectVoById(sysOaOutWarehouseVo.getProjectId()); + sysOaOutWarehouseVo.setWarehouse(sysOaWarehouse); + + // 出库可能不关联项目 + if (Objects.nonNull(sysOaProject)){ + sysOaOutWarehouseVo.setProject(sysOaProject); + } + return sysOaOutWarehouseVo; } @@ -104,13 +113,11 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { pageQuery.setPageSize(Integer.MAX_VALUE); } pageQuery.setPageNum((pageQuery.getPageNum() - 1)*pageQuery.getPageSize()); - List selectList = baseMapper.defineSelectList(bo, pageQuery); IPage page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); page.setRecords(selectList); page.setTotal(total); - log.info(String.valueOf(total)); return TableDataInfo.build(page); } @@ -140,7 +147,10 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { */ @Override public Boolean insertByBo(SysOaOutWarehouseBo bo) { + bo.setCreateTime(new Date()); + bo.setUpdateTime(new Date()); SysOaOutWarehouse decrease = toBean(bo, SysOaOutWarehouse.class); + validEntityBeforeSave(decrease); SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId()); // 1 如果对应仓库表项目数量-将要出库数量<0,出库失败, 繁殖 , 增加该条 @@ -152,6 +162,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { } else { warehouse.setInventory(warehouse.getInventory() - decrease.getAmount()); + warehouse.setUpdateTime(new Date()); warehouseMapper.updateById(warehouse); } @@ -167,17 +178,21 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { Long projectId = boList.getProjectId(); - if (projectId == null) { - throw new Error("项目ID不能为空,新增出库失败"); - } List list = boList.getOutWareHouseList(); + if (projectId != null) { + list.forEach((sysOaOutWarehouseBo2 -> { + sysOaOutWarehouseBo2.setProjectId(projectId); + SysOaOutWarehouseBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaOutWarehouseBo.class); + insertByBo(sysOaOutWarehouse); + })); - list.forEach((sysOaOutWarehouseBo2 -> { + }else{ + list.forEach((sysOaOutWarehouseBo2 -> { + SysOaOutWarehouseBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaOutWarehouseBo.class); + insertByBo(sysOaOutWarehouse); + })); + } - sysOaOutWarehouseBo2.setProjectId(projectId); - SysOaOutWarehouseBo sysOaOutWarehouse = toBean(sysOaOutWarehouseBo2, SysOaOutWarehouseBo.class); - insertByBo(sysOaOutWarehouse); - })); return true; } @@ -251,12 +266,10 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { //需要增加的对应物料数量 LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.in(SysOaOutWarehouse::getId, ids.toArray()); - - List sysOaOutWarehouses = baseMapper.selectList(lqw); //出库表中的所有删除的数据 - - sysOaOutWarehouses.forEach(sysOaOutWarehouse -> { //其中一条 - - + //出库表中的所有删除的数据 + List sysOaOutWarehouses = baseMapper.selectList(lqw); + //其中一条 + sysOaOutWarehouses.forEach(sysOaOutWarehouse -> { //选出相对应的 库存表中那一条的数据 LambdaQueryWrapper lqw2 = Wrappers.lambdaQuery(); lqw2.eq(SysOaWarehouse::getId, sysOaOutWarehouse.getWarehouseId()); @@ -266,8 +279,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { warehouse.setInventory(warehouse.getInventory() + sysOaOutWarehouse.getAmount()); warehouseMapper.updateById(warehouse); }); - boolean flag = baseMapper.deleteBatchIds(ids) > 0; - return flag; + return baseMapper.deleteBatchIds(ids) > 0; } /** @@ -281,7 +293,7 @@ public class SysOaOutWarehouseServiceImpl implements ISysOaOutWarehouseService { lqw.eq(SysOaOutWarehouse::getProjectId, projectId); List sysOaOutWarehouseVos = baseMapper.selectVoList(lqw); for (SysOaOutWarehouseVo sysOaOutWarehouseVo :sysOaOutWarehouseVos) { - sysOaOutWarehouseVo.setWarehouseName(warehouseMapper.selectById(sysOaOutWarehouseVo.getWarehouseId()).getName()); + sysOaOutWarehouseVo.setWarehouseName(warehouseMapper.selectVoByIdAndXml((sysOaOutWarehouseVo.getWarehouseId())).getName()); } return TableDataInfo.build(sysOaOutWarehouseVos); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java index 52c7b79..8274232 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java @@ -14,11 +14,15 @@ 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.SysOaAttendance; import com.ruoyi.oa.domain.SysOaTaskUser; +import com.ruoyi.oa.domain.bo.SysOaAttendanceBo; import com.ruoyi.oa.domain.bo.SysOaTaskUserBo; +import com.ruoyi.oa.domain.vo.SysOaAttendanceVo; import com.ruoyi.oa.domain.vo.SysOaTaskUserVo; import com.ruoyi.oa.domain.vo.SysUserVo; import com.ruoyi.oa.mapper.SysOaTaskUserMapper; +import com.ruoyi.oa.service.ISysOaAttendanceService; import com.ruoyi.oa.service.ISysOaTaskUserService; import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysUserService; @@ -58,6 +62,9 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { @Autowired private ISysUserService userService; + @Autowired + private ISysOaAttendanceService attendanceService; + /** * 查询任务管理 */ @@ -129,6 +136,7 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { lqw.eq(StringUtils.isNotEmpty(bo.getProjectId().toString()), SysOaTask::getProjectId, bo.getProjectId()); lqw.eq(StringUtils.isNotBlank(bo.getTaskType()),SysOaTask::getTaskType, bo.getTaskType()); List sysOaTaskVos = baseMapper.selectVoList(lqw); + Long projectId = bo.getProjectId(); // 添加负责人列表 for (SysOaTaskVo sysOaTaskVo : sysOaTaskVos) { @@ -136,11 +144,33 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { lambdaQueryWrapper.eq(SysOaTaskUser::getTaskId, sysOaTaskVo.getTaskId()); List sysOaTaskUserVos = taskUserMapper.selectVoList(lambdaQueryWrapper); List sysUserList = new ArrayList<>(); + + // 计算总成本 + Double projectCostTotal = 0.0; + for (SysOaTaskUserVo sysOaTaskUserVo : sysOaTaskUserVos) { SysUser sysUser = userService.selectUserById(sysOaTaskUserVo.getUserId()); + + // 查询当前用户对于此项目的工作时长 + SysOaAttendanceBo attendance = new SysOaAttendanceBo(); + attendance.setUserId(sysOaTaskUserVo.getUserId()); + attendance.setProjectId(projectId); + + List sysOaAttendanceVos = attendanceService.queryList(attendance); + + // 写入时间 + Double workTime = 0.0; + for (SysOaAttendanceVo sysOaAttendanceVo : sysOaAttendanceVos) { + workTime+=sysOaAttendanceVo.getDayLength(); + } + + projectCostTotal+=workTime*sysUser.getLaborCost(); + sysUser.setWorkTime(workTime); + sysUserList.add(sysUser); } sysOaTaskVo.setWorkerList(sysUserList); + sysOaTaskVo.setProjectCostTotal(projectCostTotal); } return sysOaTaskVos; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java index 3003554..3641611 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseServiceImpl.java @@ -127,13 +127,7 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService { if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.in(SysOaWarehouse::getId, ids); - List sysOaWarehouses = baseMapper.selectList(lqw); - sysOaWarehouses.forEach(sysOaWarehouse -> { - sysOaWarehouse.setDelFlag(1L); - }); - return baseMapper.updateBatchById(sysOaWarehouses); + return baseMapper.deleteBatchIds(ids)>0; } } diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml index 8e1468d..5f82f1a 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaAttendanceMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -17,7 +17,33 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaOutWarehouseMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaOutWarehouseMapper.xml index 8399a63..1c2e6dc 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaOutWarehouseMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaOutWarehouseMapper.xml @@ -27,15 +27,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ware.remark as remark, ware.warehouse_id as warehouseId, project.project_name as projectName, - warehouse.name as warehouseName + warehouse.name as warehouseName, + ware.create_time, + ware.create_by from sys_oa_out_warehouse ware - join - sys_oa_project project on ware.project_id = project.project_id - - join sys_oa_warehouse warehouse on warehouse.id = ware.warehouse_id - + left join sys_oa_project project on ware.project_id = project.project_id + left join sys_oa_warehouse warehouse on warehouse.id = ware.warehouse_id + ware.del_flag='0' and project.project_name like concat('%', #{bo.projectName}, '%') @@ -68,12 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" count(*) from sys_oa_out_warehouse ware - join - sys_oa_project project on ware.project_id = project.project_id + left join sys_oa_project project on ware.project_id = project.project_id - join sys_oa_warehouse warehouse on warehouse.id = ware.warehouse_id + left join sys_oa_warehouse warehouse on warehouse.id = ware.warehouse_id + ware.del_flag = '0' and project.project_name like concat('%', #{bo.projectName}, '%') diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml index be0399f..b49c143 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml @@ -33,6 +33,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60,4 +88,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml index de6fb4f..f70a888 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaWarehouseMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -20,5 +20,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 7196d54..43211d2 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -65,8 +65,11 @@ u.del_flag, u.login_ip, u.login_date, + u.labor_cost, u.create_by, u.create_time, + u.bank_card, + u.id_card, u.remark, d.dept_id, d.parent_id, diff --git a/ruoyi-ui/src/api/oa/oaAttendance.js b/ruoyi-ui/src/api/oa/oaAttendance.js index 04d3b08..e7d6deb 100644 --- a/ruoyi-ui/src/api/oa/oaAttendance.js +++ b/ruoyi-ui/src/api/oa/oaAttendance.js @@ -9,6 +9,25 @@ export function listOaAttendance(query) { }) } + +// 查询人员考勤列表 +export function workCalc(time) { + return request({ + url: '/oa/oaAttendance/calc/'+time, + method: 'get', + }) +} + + + +// 查询人员考勤列表 +export function getDateLength() { + return request({ + url: '/oa/oaAttendance/date', + method: 'get', + }) +} + // 查询人员考勤详细 export function getOaAttendance(id) { return request({ diff --git a/ruoyi-ui/src/assets/logo/logo.png b/ruoyi-ui/src/assets/logo/logo.png index 9bd6cc80e8a4b5eaa20d7d76e90d6d134a735f2e..37263d3902d717a69d27ba82e3392e7cc40771cf 100644 GIT binary patch literal 145163 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 literal 3962 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 diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 4aa3bf5..3bd3cc2 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -147,6 +147,7 @@ export const dynamicRoutes = [ } ] }, + { path: '/system/dict-data', component: Layout, @@ -161,6 +162,21 @@ export const dynamicRoutes = [ } ] }, + + { + path: '/oa/warehouse-data', + component: Layout, + hidden: true, + permissions: ['system:dict:list'], + children: [ + { + path: 'index/:warehouseId(\\d+)', + component: () => import('@/views/oa/oaWarehouse/data'), + name: 'Data', + meta: { title: '出库数据', activeMenu: '/oa/oaWarehouse' } + } + ] + }, { path: '/remind', component: Layout, @@ -251,6 +267,20 @@ export const dynamicRoutes = [ } ] }, + { + path: '/project/closure', + component: Layout, + hidden: true, + permissions: ['workflow:process:query'], + children: [ + { + path: 'detail/:projectId(\\d+)', + component: () => import('@/views/oa/closure/index'), + name: 'closure', + meta: { title: '项目结项', activeMenu: '/project/project' } + } + ] + }, ] // 防止连续点击多次路由报错 diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index c205f68..999ba3c 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -7,34 +7,35 @@ -
+
-
流程发起
+
项目管理
-
- +
+ + -
我的流程
+
人员考勤
-
- +
+ -
待办任务
+
通知公告
-
- +
+ -
已办任务
+
财务管理
diff --git a/ruoyi-ui/src/views/oa/attendance/index.vue b/ruoyi-ui/src/views/oa/attendance/index.vue index ea61281..d6234d9 100644 --- a/ruoyi-ui/src/views/oa/attendance/index.vue +++ b/ruoyi-ui/src/views/oa/attendance/index.vue @@ -7,7 +7,7 @@ - + {{ index + 1 }} @@ -15,7 +15,7 @@ {{ item.nickName }} - @@ -72,6 +72,152 @@ + + + + + 计算月份: + + +
+ + +
+
+ + + 计算 + +
+ + + + + + + + + + + + + + + + + + + +
+

员工个人财务与签到报告 - {{calcUser.nickName}}

+ + +
+

员工姓名: {{calcUser.nickName}}

+

职位: 员工

+
+ + +

{{date.getMonth()}} 月度工作签到情况

+ + + + + + + + {{calcUser.nickName}} + + + + {{calcUser.laborCost}} + + + + {{calcUser.laborCost*calcResultItem.workTimes}} + + + + + + + + + + + + + + + + + +
+ + + + 关闭 + +
+
@@ -80,7 +226,8 @@ import {listWorker} from "@/api/system/user"; import {listProject, updateProject} from "@/api/oa/project"; import {listOaAttendance} from "@/api/oa/oaAttendance"; -import {addBatchOaAttendance, addOaAttendance} from "../../../api/oa/oaAttendance"; +import {addBatchOaAttendance, addOaAttendance, getDateLength, workCalc} from "../../../api/oa/oaAttendance"; +import item from "../../../layout/components/Sidebar/Item.vue"; export default { name: "Project", @@ -91,12 +238,19 @@ export default { selectIndex: new Date().getDate(), // 用户列表 userList: [], + // 计算结果 + calcFlag:false, // 项目列表 projectList: [], loading: true, selectHead: new Date().getDate(), + // 当前月的天数 + dateLength:31, + // 计算提交月份 + date:new Date(), // 提交表单 form: {}, + showCalc:false, // 查询参数 userQueryParams: { pageNum: 1, @@ -106,6 +260,8 @@ export default { status: undefined, deptId: undefined }, + calcUser:{ + }, queryParams:{ pageNum: 1, pageSize: 50, @@ -116,6 +272,7 @@ export default { projectQueryParams: { pageNum: 1, pageSize: 10, + projectStatus:0, projectName: undefined, projectNum: undefined, beginTime: undefined, @@ -125,17 +282,48 @@ export default { // 日期范围 dateRange: [], selectAll: true, + calcResult:[], + calcResultItem:{}, + calcResultUser:{}, + calcResultAttendances:[], + calcResultProject:{}, } }, mounted() { - const day = new Date().getDate(); + }, created() { - + this.getDate(); this.getList(); }, methods: { + + // 查看计算结果 + handleCalc(row){ + this.showCalc = true; + this.calcUser = row + + this.calcResultItem = this.calcResult.filter(item=>item.sysUser.userId===this.calcUser.userId)[0] + this.calcResultAttendances = this.calcResultItem.attendances + console.log(this.calcResultItem) + }, + + // 计算 + calcWork(){ + + workCalc(this.date).then(res=>{ + this.calcResult = res.data; + this.calcFlag = true; + }) + }, + + getDate(){ + getDateLength().then(res => { + this.dateLength = res.data; + }) + }, + selectAttendDay(item,index, index2) { this.selectIndex = index2; this.selectAll = false; @@ -153,7 +341,6 @@ export default { getList() { this.loading = true; listOaAttendance(this.queryParams).then(res=>{ - console.log(res.data) this.userList = res.data; this.total = res.total; }); diff --git a/ruoyi-ui/src/views/oa/closure/index.vue b/ruoyi-ui/src/views/oa/closure/index.vue new file mode 100644 index 0000000..581cd84 --- /dev/null +++ b/ruoyi-ui/src/views/oa/closure/index.vue @@ -0,0 +1,160 @@ + + + + diff --git a/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue b/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue index 8e9294f..e68bb12 100644 --- a/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue +++ b/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue @@ -53,20 +53,35 @@ - + - - + + + + + + + @@ -81,10 +96,128 @@ @pagination="getList" /> + + + + + + + + + {{outDetail.id}} + + + + + {{ outDetail.amount }} + + + + + {{ warehouseDetail.name }} + + + + + {{ outDetail.createBy }} + + + + + {{ outDetail.createTime }} + + + + + {{projectDetail==null?'未关联项目':projectDetail.projectName}} + + + + + {{outDetail.remark==null?'空':outDetail.remark}} + + + + + + + + + {{ projectDetail.projectNum }} + + + + + {{outDetail.id}} + + + + + {{projectDetail.projectStatus==0?'未完结':'结项'}} + + + + + {{projectDetail.remark==null?'空':projectDetail.remark}} + + + + + + + + + + + + + + + + @@ -98,6 +231,19 @@ + + + + + 请选择物料 - {{item.inventory}} + {{ item.inventory }} @@ -187,7 +333,7 @@ - + @@ -229,7 +375,16 @@ export default { return { // 抽屉 drawer: false, - + // 查看详情弹窗 + outDetail:{}, + // 弹窗标志 + detail:false, + // 绑定项目详情 + projectDetail:{}, + // 物料信息详情 + warehouseDetail:{}, + // 出库列表 + outWareHouseList: [], // 按钮loading buttonLoading: false, // 遮罩层 @@ -254,8 +409,11 @@ export default { title: "", // 选择对象 searchItem: {}, + // 是否显示弹出层 open: false, + // 是否绑定项目 + projectFlag: false, // 库存查询参数 warehouseParams: { pageSize: 999, @@ -264,11 +422,12 @@ export default { // 查询参数 queryParams: { pageNum: 1, - pageSize: 10, - projectName: undefined, + pageSize: 10 }, // 表单参数 - form: {}, + form: { + productId: '' + }, // 表单校验 rules: { amount: [ @@ -287,10 +446,15 @@ export default { /** 查询仓库出库列表 */ getList() { this.loading = true; + + listOaOutWarehouse(this.queryParams).then(res => { + this.outWareHouseList = res.rows + this.total = res.total + this.loading = false + }) + listProject(this.queryParams).then(response => { this.projectList = response.rows - this.total = response.total; - this.loading = false; }); }, @@ -400,6 +564,7 @@ export default { addDomain() { this.form.outWareHouseList.push({ value: '', + warehouseId: '', key: Date.now() }); }, @@ -410,8 +575,8 @@ export default { } }, - handleGetInventory(e,index){ - this.form.outWareHouseList[index].inventory = this.oaWarehouseList[this.oaWarehouseList.findIndex(item=>item.id===e)].inventory + handleGetInventory(e, index) { + this.form.outWareHouseList[index].inventory = this.oaWarehouseList[this.oaWarehouseList.findIndex(item => item.id === e)].inventory console.log(this.form.outWareHouseList[index]) }, @@ -432,6 +597,12 @@ export default { }; }, + getOaOutWarehouseList(){ + listOaWarehouse(this.warehouseParams).then(res => { + this.oaWarehouseList = res.rows + }) + }, + remoteMethod(query) { this.warehouseParams.name = query this.selectLoading = true; @@ -454,6 +625,19 @@ export default { this.drawer = true; this.loading = false; }) + }, + + // 查看出库单独条目详情 + showDetail(row){ + getOaOutWarehouse(row.id).then(response => { + console.log(response.data); + this.outDetail = response.data; + + this.projectDetail = response.data.project; + this.warehouseDetail = response.data.warehouse; + }) + this.detail=true; + } } }; diff --git a/ruoyi-ui/src/views/oa/oaWarehouse/data.vue b/ruoyi-ui/src/views/oa/oaWarehouse/data.vue new file mode 100644 index 0000000..b5c2797 --- /dev/null +++ b/ruoyi-ui/src/views/oa/oaWarehouse/data.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/ruoyi-ui/src/views/oa/oaWarehouse/index.vue b/ruoyi-ui/src/views/oa/oaWarehouse/index.vue index 706f8b3..36d3347 100644 --- a/ruoyi-ui/src/views/oa/oaWarehouse/index.vue +++ b/ruoyi-ui/src/views/oa/oaWarehouse/index.vue @@ -91,7 +91,16 @@ - + + + + + + diff --git a/ruoyi-ui/src/views/oa/project/index.vue b/ruoyi-ui/src/views/oa/project/index.vue index 4aeca37..be40a91 100644 --- a/ruoyi-ui/src/views/oa/project/index.vue +++ b/ruoyi-ui/src/views/oa/project/index.vue @@ -166,11 +166,22 @@ 实施 + + 结项 + { - console.log(res.rows) this.workerList = res.rows.filter(item => { return item.nickName.toLowerCase() .indexOf(query.toLowerCase()) > -1;