三期内容优化

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

@@ -3,17 +3,14 @@ package com.ruoyi.oa.controller;
import java.util.Date;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.alibaba.excel.util.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.oa.domain.CalendarDay;
import com.ruoyi.oa.domain.vo.SysHolidayVo;
import com.ruoyi.oa.domain.vo.SysOaHolidayListVo;
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;
@@ -23,7 +20,6 @@ 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.SysOaHolidayVo;
@@ -141,4 +137,9 @@ public class SysOaHolidayController extends BaseController {
public R<List<SysHolidayVo>> queryList(SysOaHolidayBo bo){
return R.ok(iSysOaHolidayService.queryVoList(bo));
}
@GetMapping("/queryOwnList")
public List<CalendarDay> queryOwnList(SysOaHolidayBo bo, PageQuery pageQuery){
return iSysOaHolidayService.queryOwnList(bo,pageQuery);
}
}

View File

@@ -3,10 +3,9 @@ package com.ruoyi.oa.controller;
import java.util.Date;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
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.mapper.SysOaTaskMapper;
import lombok.RequiredArgsConstructor;
@@ -22,7 +21,6 @@ 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.SysOaProjectVo;
@@ -142,7 +140,7 @@ public class SysOaProjectController extends BaseController {
*/
@SaCheckPermission("oa:project:list")
@GetMapping("/outWare/list")
public TableDataInfo<SysOaOutWarehouseListVo> outWareList(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
public TableDataInfo<SysOaOutWarehouseListVo> outWareList(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
return iSysOaProjectService.queryOutWarePageList(bo, pageQuery);
}
}

View File

@@ -6,7 +6,11 @@ import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.common.excel.ExcelResult;
import com.ruoyi.oa.domain.SysOaWarehouseMaster;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo;
import com.ruoyi.oa.listener.SysOaWarehouseListener;
import com.ruoyi.oa.service.ISysOaWarehouseMasterService;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -44,6 +48,8 @@ public class SysOaWarehouseController extends BaseController {
private final ISysOaWarehouseService iSysOaWarehouseService;
private final ISysOaWarehouseMasterService iSysOaWarehouseMasterService;
/**
* 查询仓库管理列表
*/
@@ -98,6 +104,8 @@ public class SysOaWarehouseController extends BaseController {
return toAjax(iSysOaWarehouseService.insertByBo(bo));
}
/**
* 修改仓库管理
*/
@@ -130,12 +138,24 @@ public class SysOaWarehouseController extends BaseController {
* @param file 导入文件
* @param updateSupport 是否更新已存在数据
*/
@Log(title = "投诉工单导入", businessType = BusinessType.IMPORT)
@Log(title = "入库工单导入", businessType = BusinessType.IMPORT)
@SaCheckPermission("complaint:complaint:import")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
ExcelResult<SysOaWarehouseVo> result = ExcelUtil.importExcel(file.getInputStream(), SysOaWarehouseVo.class,
new SysOaWarehouseListener(true));
SysOaWarehouseMasterBo sysOaWarehouseMaster = new SysOaWarehouseMasterBo();
sysOaWarehouseMaster.setType(1L);
List<SysOaWarehouseDetailBo> list = new ArrayList<>();
result.getList().forEach(item -> {
SysOaWarehouseDetailBo bo = new SysOaWarehouseDetailBo();
bo.setWarehouseId(item.getId());
bo.setAmount(item.getInventory());
bo.setSignPrice(item.getPrice());
list.add(bo);
});
sysOaWarehouseMaster.setWarehouseList(list);
iSysOaWarehouseMasterService.insertByBo(sysOaWarehouseMaster);
return R.ok(result.getAnalysis());
}

View File

@@ -2,7 +2,6 @@ package com.ruoyi.oa.controller;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBoList;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
@@ -19,12 +18,11 @@ 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.SysOaOutWarehouseVo;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.service.ISysOaOutWarehouseService;
import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.service.ISysOaWarehouseDetailService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
@@ -37,9 +35,9 @@ import com.ruoyi.common.core.page.TableDataInfo;
@RequiredArgsConstructor
@RestController
@RequestMapping("/oa/oaOutWarehouse")
public class SysOaOutWarehouseController extends BaseController {
public class SysOaWarehouseDetailController extends BaseController {
private final ISysOaOutWarehouseService iSysOaOutWarehouseService;
private final ISysOaWarehouseDetailService iSysOaWarehouseDetailService;
@@ -48,8 +46,8 @@ public class SysOaOutWarehouseController extends BaseController {
*/
@SaCheckPermission("oa:oaOutWarehouse:list")
@GetMapping("/list")
public TableDataInfo<SysOaOutWarehouseListVo> list(SysOaOutWarehouseBo bo, PageQuery pageQuery) {
return iSysOaOutWarehouseService.queryPageList(bo, pageQuery);
public TableDataInfo<SysOaOutWarehouseListVo> list(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
return iSysOaWarehouseDetailService.queryPageList(bo, pageQuery);
}
/**
@@ -58,9 +56,9 @@ public class SysOaOutWarehouseController extends BaseController {
@SaCheckPermission("oa:oaOutWarehouse:export")
@Log(title = "仓库出库", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SysOaOutWarehouseBo bo, HttpServletResponse response) {
List<SysOaOutWarehouseVo> list = iSysOaOutWarehouseService.queryList(bo);
ExcelUtil.exportExcel(list, "仓库出库", SysOaOutWarehouseVo.class, response);
public void export(SysOaWarehouseDetailBo bo, HttpServletResponse response) {
List<SysOaWarehouseDetailVo> list = iSysOaWarehouseDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "仓库出库", SysOaWarehouseDetailVo.class, response);
}
/**
@@ -70,9 +68,9 @@ public class SysOaOutWarehouseController extends BaseController {
*/
@SaCheckPermission("oa:oaOutWarehouse:query")
@GetMapping("/{id}")
public R<SysOaOutWarehouseVo> getInfo(@NotNull(message = "主键不能为空")
public R<SysOaWarehouseDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(iSysOaOutWarehouseService.queryById(id));
return R.ok(iSysOaWarehouseDetailService.queryById(id));
}
/**
@@ -82,9 +80,9 @@ public class SysOaOutWarehouseController extends BaseController {
*/
@SaCheckPermission("oa:oaOutWarehouse:query")
@GetMapping("/WarehouseIdList/{WarehouseId}")
public TableDataInfo<SysOaOutWarehouseVo> ListByWarehouseId(@NotNull(message = "出库产品ID不能为空")
public TableDataInfo<SysOaWarehouseDetailVo> ListByWarehouseId(@NotNull(message = "出库产品ID不能为空")
@PathVariable Long WarehouseId) {
return iSysOaOutWarehouseService.queryWarehouseIdList(WarehouseId);
return iSysOaWarehouseDetailService.queryWarehouseIdList(WarehouseId);
}
/**
@@ -94,9 +92,9 @@ public class SysOaOutWarehouseController extends BaseController {
*/
@SaCheckPermission("oa:oaOutWarehouse:query")
@GetMapping("/project/{projectId}")
public TableDataInfo<SysOaOutWarehouseVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空")
public TableDataInfo<SysOaWarehouseDetailVo> queryOutWarehouseByProjectId(@NotNull(message = "项目名不能为空")
@PathVariable Long projectId) {
return iSysOaOutWarehouseService.queryOutWarehouseByProjectId(projectId);
return iSysOaWarehouseDetailService.queryOutWarehouseByProjectId(projectId);
}
@@ -108,22 +106,10 @@ public class SysOaOutWarehouseController extends BaseController {
@Log(title = "仓库出库", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SysOaOutWarehouseBo bo) {
return toAjax(iSysOaOutWarehouseService.insertByBo(bo));
public R<Void> add(@Validated(AddGroup.class) @RequestBody SysOaWarehouseDetailBo bo) {
return toAjax(iSysOaWarehouseDetailService.insertByBo(bo));
}
/**
* 批量新增仓库出库
*/
@SaCheckPermission("oa:oaOutWarehouse:add")
@Log(title = "仓库批量出库",businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/insertOutBatch")
public R<Void> addAll(@Validated(AddGroup.class) @RequestBody SysOaOutWarehouseBoList boList) {
return toAjax(iSysOaOutWarehouseService.insertByBoList(boList));
}
/**
* 修改仓库出库
*/
@@ -131,8 +117,8 @@ public class SysOaOutWarehouseController extends BaseController {
@Log(title = "仓库出库", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysOaOutWarehouseBo bo) {
return toAjax(iSysOaOutWarehouseService.updateByBo(bo));
public R<Void> edit(@Validated(EditGroup.class) @RequestBody SysOaWarehouseDetailBo bo) {
return toAjax(iSysOaWarehouseDetailService.updateByBo(bo));
}
/**
@@ -145,6 +131,6 @@ public class SysOaOutWarehouseController extends BaseController {
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iSysOaOutWarehouseService.deleteWithValidByIds(Arrays.asList(ids), true));
return toAjax(iSysOaWarehouseDetailService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}

View File

@@ -1,9 +1,13 @@
package com.ruoyi.oa.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@@ -82,6 +86,16 @@ public class SysOaWarehouseMasterController extends BaseController {
return toAjax(iSysOaWarehouseMasterService.insertByBo(bo));
}
/**
* 新增仓库管理
*/
@Log(title = "仓库管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/in")
public R<Void> addIn(@Validated(AddGroup.class) @RequestBody SysOaWarehouseBo bo) {
return toAjax(iSysOaWarehouseMasterService.insertInWarehouse(bo));
}
/**
* 修改出库单管理
*/

View File

@@ -0,0 +1,11 @@
package com.ruoyi.oa.domain;
import lombok.Data;
@Data
public class CalendarDay {
private String date; // "2025-03-01" 格式
private Integer type; // 0 工作
}

View File

@@ -1,6 +1,7 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import liquibase.pro.packaged.J;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@@ -10,6 +11,7 @@ import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 休假管理对象 sys_oa_holiday
@@ -36,6 +38,8 @@ public class SysOaHoliday extends BaseEntity {
/**
* 假期日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date holidayTime;
/**
* 假期名称(如果是周日,值为休息日)

View File

@@ -3,22 +3,19 @@ package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 仓库出库对象 sys_oa_out_warehouse
* 仓库出库对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_oa_out_warehouse")
public class SysOaOutWarehouse extends BaseEntity {
@TableName("sys_oa_warehouse_detail")
public class SysOaWarehouseDetail extends BaseEntity {
private static final long serialVersionUID=1L;
@@ -49,4 +46,9 @@ public class SysOaOutWarehouse extends BaseEntity {
@TableLogic
private Integer delFlag;
private Long masterId;
private Double signPrice;
}

View File

@@ -29,6 +29,8 @@ public class SysOaWarehouseMaster extends BaseEntity {
*/
@TableId(value = "master_id")
private Long masterId;
private String masterNum;
/**
* 0出库单1入库单
*/

View File

@@ -11,6 +11,7 @@ import java.util.Date;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 休假管理业务对象 sys_oa_holiday
@@ -36,6 +37,8 @@ public class SysOaHolidayBo extends BaseEntity {
/**
* 假期日期
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date holidayTime;
/**

View File

@@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
/**
* 仓库出库业务对象 sys_oa_out_warehouse
* 仓库出库业务对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-02

View File

@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 仓库批量出库业务对象 sys_oa_out_warehouse
* 仓库批量出库业务对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-05

View File

@@ -8,12 +8,10 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 仓库出库业务对象 sys_oa_out_warehouse
* 仓库出库业务对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-02
@@ -21,7 +19,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
@Data
@EqualsAndHashCode(callSuper = true)
public class SysOaOutWarehouseBo extends BaseEntity {
public class SysOaWarehouseDetailBo extends BaseEntity {
/**
* 主键id
@@ -61,4 +59,8 @@ public class SysOaOutWarehouseBo extends BaseEntity {
* 物料名
*/
private String warehouseName;
private Double signPrice;
private Long masterId;
}

View File

@@ -9,6 +9,8 @@ import javax.validation.constraints.*;
import java.util.Date;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
@@ -28,6 +30,8 @@ public class SysOaWarehouseMasterBo extends BaseEntity {
*/
private Long masterId;
private String masterNum;
/**
* 0出库单1入库单
*/
@@ -53,5 +57,10 @@ public class SysOaWarehouseMasterBo extends BaseEntity {
*/
private String remark;
/**
* 涉及物料
*/
private List<SysOaWarehouseDetailBo> warehouseList;
}

View File

@@ -54,5 +54,8 @@ public class SysOaHolidayVo {
@ExcelProperty(value = "备注")
private String remark;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date;
}

View File

@@ -9,7 +9,7 @@ import java.util.List;
/**
* 仓库出库查询对象 sys_oa_out_warehouse
* 仓库出库查询对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-02

View File

@@ -8,14 +8,14 @@ import lombok.Data;
/**
* 仓库出库视图对象 sys_oa_out_warehouse
* 仓库出库视图对象 sys_oa_warehouse_detail
*
* @author liuzongkun999
* @date 2024-11-02
*/
@Data
@ExcelIgnoreUnannotated
public class SysOaOutWarehouseVo extends BaseEntity {
public class SysOaWarehouseDetailVo extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -61,4 +61,11 @@ public class SysOaOutWarehouseVo extends BaseEntity {
/** 项目信息 */
private SysOaProjectVo project;
private Double signPrice;
private Long masterId;
private String model;
private String specifications;
}

View File

@@ -8,7 +8,7 @@ import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
@@ -29,6 +29,12 @@ public class SysOaWarehouseMasterVo {
@ExcelProperty(value = "主键id")
private Long masterId;
/**
* 出库单编号
*/
@ExcelProperty(value = "出库单编号")
private String masterNum;
/**
* 0出库单1入库单
*/
@@ -59,5 +65,12 @@ public class SysOaWarehouseMasterVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 出库列表
*/
private List<SysOaWarehouseDetailVo> warehouseList;
private String projectName;
}

View File

@@ -86,6 +86,4 @@ public class SysOaWarehouseVo extends SysOaWarehouse {
private String remark;
}

View File

@@ -7,11 +7,16 @@ import com.alibaba.excel.event.AnalysisEventListener;
import com.ruoyi.common.excel.ExcelListener;
import com.ruoyi.common.excel.ExcelResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ValidatorUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.oa.domain.SysOaWarehouseMaster;
import com.ruoyi.oa.domain.bo.SysOaWarehouseBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.bo.SysOaWarehouseMasterBo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseVo;
import com.ruoyi.oa.service.ISysOaArticleService;
import com.ruoyi.oa.service.ISysOaWarehouseMasterService;
import com.ruoyi.oa.service.ISysOaWarehouseService;
import lombok.extern.slf4j.Slf4j;
@@ -23,15 +28,19 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
private final ISysOaWarehouseService sysOaWarehouseService;
private final ISysOaWarehouseMasterService warehouseMasterService;
private final Boolean isUpdateSupport;
private int successNum = 0;
private int failureNum = 0;
private List<SysOaWarehouseVo> sysOaWarehouseVos;
private final StringBuilder successMsg = new StringBuilder();
private final StringBuilder failureMsg = new StringBuilder();
public SysOaWarehouseListener(Boolean isUpdateSupport) {
this.warehouseMasterService = SpringUtils.getBean(ISysOaWarehouseMasterService.class);
// String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
this.sysOaWarehouseService = SpringUtils.getBean(ISysOaWarehouseService.class);
this.isUpdateSupport = isUpdateSupport;
@@ -43,12 +52,14 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
SysOaWarehouseBo bo = new SysOaWarehouseBo();
bo.setName(sysOaWarehouseVo.getName());
if (Objects.nonNull(sysOaWarehouseVo.getModel())){
bo.setModel(sysOaWarehouseVo.getModel());
bo.setModel(sysOaWarehouseVo.getModel().trim());
bo.setBrand(sysOaWarehouseVo.getBrand().trim());
}
List<SysOaWarehouseVo> complaintVo = this.sysOaWarehouseService.queryList(bo);
try {
// 验证是否存在这个用户
if (complaintVo.size()<=0) {
// 验证是否存在这个物料
if (complaintVo.isEmpty()) {
SysOaWarehouseBo add = BeanUtil.toBean(sysOaWarehouseVo, SysOaWarehouseBo.class);
ValidatorUtils.validate(complaintVo);
sysOaWarehouseService.insertByBo(add);
@@ -61,11 +72,14 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
SysOaWarehouseBo update = BeanUtil.toBean(sysOaWarehouseVo, SysOaWarehouseBo.class);
update.setId(warehouseVo.getId());
update.setInventory(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory());
// 价格算加权平均
update.setPrice(warehouseVo.getPrice()*warehouseVo.getInventory()+sysOaWarehouseVo.getPrice()*sysOaWarehouseVo.getInventory()/(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory()));
ValidatorUtils.validate(complaintVo);
sysOaWarehouseService.updateByBo(update);
successNum++;
successMsg.append("<br/>").append(successNum).append("、物料名称: ").append(update.getName()).append(" 更新成功");
}
sysOaWarehouseVos.add(sysOaWarehouseVo);
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、物料名称: " + sysOaWarehouseVo.getName() + " 导入失败:";
@@ -96,7 +110,7 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
@Override
public List<SysOaWarehouseVo> getList() {
return null;
return sysOaWarehouseVos;
}
@Override

View File

@@ -1,36 +0,0 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo;
import com.ruoyi.oa.domain.bo.SysOaOutWarehouseBo2;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 仓库出库Mapper接口
*
* @author liuzongkun999
* @date 2024-11-02
*/
public interface SysOaOutWarehouseMapper extends BaseMapperPlus<SysOaOutWarehouseMapper, SysOaOutWarehouse, SysOaOutWarehouseVo> {
/**
* 仓库出库筛选(联查)
*/
List<SysOaOutWarehouseListVo> defineSelectList(@Param(value = "bo") SysOaOutWarehouseBo bo, @Param(value = "page") PageQuery pageQuery);
/**
* 获取分页的Total值
*/
Long defineQueryTotal(@Param(value = "bo") SysOaOutWarehouseBo bo, @Param(value = "page") PageQuery pageQuery);
@Select("select * from sys_oa_out_warehouse where project_id = #{projectId} and del_flag = 0")
List<SysOaOutWarehouse> List(@Param("projectId") Long projectId);
}

View File

@@ -4,13 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.oa.domain.SysOaOutWarehouse;
import com.ruoyi.oa.domain.SysOaProject;
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
import com.ruoyi.oa.domain.vo.SysOaCostAllVo;
import com.ruoyi.oa.domain.vo.SysOaCostRow;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;

View File

@@ -0,0 +1,35 @@
package com.ruoyi.oa.mapper;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.oa.domain.SysOaWarehouseDetail;
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
import com.ruoyi.oa.domain.vo.SysOaWarehouseDetailVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 仓库出库Mapper接口
*
* @author liuzongkun999
* @date 2024-11-02
*/
public interface SysOaWarehouseDetailMapper extends BaseMapperPlus<SysOaWarehouseDetailMapper, SysOaWarehouseDetail, SysOaWarehouseDetailVo> {
/**
* 仓库出库筛选(联查)
*/
List<SysOaOutWarehouseListVo> defineSelectList(@Param(value = "bo") SysOaWarehouseDetailBo bo, @Param(value = "page") PageQuery pageQuery);
/**
* 获取分页的Total值
*/
Long defineQueryTotal(@Param(value = "bo") SysOaWarehouseDetailBo bo, @Param(value = "page") PageQuery pageQuery);
@Select("select * from sys_oa_warehouse_detail where project_id = #{projectId} and del_flag = 0")
List<SysOaWarehouseDetail> List(@Param("projectId") Long projectId);
}

View File

@@ -1,8 +1,12 @@
package com.ruoyi.oa.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.oa.domain.SysOaWarehouseMaster;
import com.ruoyi.oa.domain.vo.SysOaWarehouseMasterVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 出库单管理Mapper接口
@@ -12,4 +16,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/
public interface SysOaWarehouseMasterMapper extends BaseMapperPlus<SysOaWarehouseMasterMapper, SysOaWarehouseMaster, SysOaWarehouseMasterVo> {
Page<SysOaWarehouseMasterVo> selectVoPagePlus(@Param("page") Page<SysOaWarehouseMasterVo> build, @Param(Constants.WRAPPER) QueryWrapper<SysOaWarehouseMaster> lqw);
}

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;
/**
* 查询仓库管理