运维-物资管理接口
This commit is contained in:
@ -39,4 +39,10 @@ public interface RemoteFileService {
|
|||||||
|
|
||||||
|
|
||||||
void deleteFile(Collection<String> urls);
|
void deleteFile(Collection<String> urls);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ossId列表删除
|
||||||
|
* @param ossIds
|
||||||
|
*/
|
||||||
|
void deleteFileByIds(Collection<Long> ossIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,4 +56,9 @@ public class RemoteFileServiceMock implements RemoteFileService {
|
|||||||
log.warn("服务调用异常 -> 降级处理");
|
log.warn("服务调用异常 -> 降级处理");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteFileByIds(Collection<Long> ossIds) {
|
||||||
|
log.warn("服务调用异常 -> 降级处理");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,4 +96,13 @@ public class RemoteFileServiceImpl implements RemoteFileService {
|
|||||||
storage.delete(url);
|
storage.delete(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ossId列表删除
|
||||||
|
* @param ossIds
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void deleteFileByIds(Collection<Long> ossIds) {
|
||||||
|
sysOssService.deleteWithValidByIds(ossIds,false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,6 +92,11 @@
|
|||||||
<groupId>org.dromara</groupId>
|
<groupId>org.dromara</groupId>
|
||||||
<artifactId>ruoyi-common-encrypt</artifactId>
|
<artifactId>ruoyi-common-encrypt</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- <dependency>-->
|
||||||
|
<!-- <groupId>org.dromara</groupId>-->
|
||||||
|
<!-- <artifactId>ruoyi-workflow</artifactId>-->
|
||||||
|
<!-- <version>2.4.1</version>-->
|
||||||
|
<!-- </dependency>-->
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianCountVo;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
@ -42,8 +44,17 @@ public class OpsBeipinBeijianController extends BaseController {
|
|||||||
*/
|
*/
|
||||||
@SaCheckPermission("personnel:beipinBeijian:list")
|
@SaCheckPermission("personnel:beipinBeijian:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<OpsBeipinBeijianVo> list(OpsBeipinBeijianBo bo, PageQuery pageQuery) {
|
public TableDataInfo<OpsBeipinBeijianDto> list(OpsBeipinBeijianBo bo, PageQuery pageQuery) {
|
||||||
return opsBeipinBeijianService.queryPageList(bo, pageQuery);
|
return opsBeipinBeijianService.getList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询运维-物资-备品配件列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("personnel:beipinBeijian:list")
|
||||||
|
@GetMapping("/getCount")
|
||||||
|
public R<OpsBeipinBeijianCountVo> getCount(OpsBeipinBeijianBo bo) {
|
||||||
|
return R.ok(opsBeipinBeijianService.getCount(bo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -29,6 +29,11 @@ public class OpsCaigouPlanChanpin extends BaseEntity {
|
|||||||
@TableId(value = "id")
|
@TableId(value = "id")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购申请计划id
|
* 采购申请计划id
|
||||||
*/
|
*/
|
||||||
@ -39,6 +44,11 @@ public class OpsCaigouPlanChanpin extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String shebeiType;
|
private String shebeiType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品编号
|
||||||
|
*/
|
||||||
|
private String chanpinBianhao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品名称
|
* 产品名称
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -28,6 +28,11 @@ public class OpsCaigouPlanChanpinBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购申请计划id
|
* 采购申请计划id
|
||||||
*/
|
*/
|
||||||
@ -38,6 +43,10 @@ public class OpsCaigouPlanChanpinBo extends BaseEntity {
|
|||||||
* 设备类型
|
* 设备类型
|
||||||
*/
|
*/
|
||||||
private String shebeiType;
|
private String shebeiType;
|
||||||
|
/**
|
||||||
|
* 产品编号
|
||||||
|
*/
|
||||||
|
private String chanpinBianhao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品名称
|
* 产品名称
|
||||||
|
|||||||
@ -36,7 +36,7 @@ public class OpsChurukudanBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 产品id
|
* 产品id
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "产品不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "产品不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Long chanpinId;
|
private Long chanpinId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -0,0 +1,76 @@
|
|||||||
|
package org.dromara.personnel.domain.dto;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import org.dromara.personnel.domain.OpsBeipinBeijian;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-物资-备品配件视图对象 ops_beipin_beijian
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class OpsBeipinBeijianDto implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备件编号
|
||||||
|
*/
|
||||||
|
private String beijianNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备件名称
|
||||||
|
*/
|
||||||
|
private String beijianName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备类型
|
||||||
|
*/
|
||||||
|
private String shebeiType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格型号
|
||||||
|
*/
|
||||||
|
private String guigexinghao;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库存状态(待定)
|
||||||
|
*/
|
||||||
|
private String kucunStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库数量
|
||||||
|
*/
|
||||||
|
private Long ruKuCount;
|
||||||
|
/**
|
||||||
|
* 出库数量
|
||||||
|
*/
|
||||||
|
private Long chuKuCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 库存数量
|
||||||
|
*/
|
||||||
|
private Long kucunCount;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package org.dromara.personnel.domain.vo;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import org.dromara.personnel.domain.OpsBeipinBeijian;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运维-物资-备品配件视图对象 ops_beipin_beijian
|
||||||
|
*
|
||||||
|
* @author LionLi
|
||||||
|
* @date 2025-09-24
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class OpsBeipinBeijianCountVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总数量
|
||||||
|
*/
|
||||||
|
private Long zonCount;
|
||||||
|
/**
|
||||||
|
* 低库存数量
|
||||||
|
*/
|
||||||
|
private Long diCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备类型数量
|
||||||
|
*/
|
||||||
|
private Map<String,Long> typeCount;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -71,6 +71,15 @@ public class OpsBeipinBeijianVo implements Serializable {
|
|||||||
@ExcelDictFormat(readConverterExp = "待=定")
|
@ExcelDictFormat(readConverterExp = "待=定")
|
||||||
private String kucunStatus;
|
private String kucunStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库数量
|
||||||
|
*/
|
||||||
|
private Long ruKuCount;
|
||||||
|
/**
|
||||||
|
* 出库数量
|
||||||
|
*/
|
||||||
|
private Long chuKuCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 库存数量
|
* 库存数量
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -35,6 +35,12 @@ public class OpsCaigouPlanChanpinVo implements Serializable {
|
|||||||
@ExcelProperty(value = "id")
|
@ExcelProperty(value = "id")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目id")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购申请计划id
|
* 采购申请计划id
|
||||||
*/
|
*/
|
||||||
@ -47,6 +53,11 @@ public class OpsCaigouPlanChanpinVo implements Serializable {
|
|||||||
@ExcelProperty(value = "设备类型")
|
@ExcelProperty(value = "设备类型")
|
||||||
private String shebeiType;
|
private String shebeiType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 产品编号
|
||||||
|
*/
|
||||||
|
private String chanpinBianhao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品名称
|
* 产品名称
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -105,6 +105,7 @@ public class OpsCaigouPlanVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "供应商id")
|
@ExcelProperty(value = "供应商id")
|
||||||
private Long gonyingshangId;
|
private Long gonyingshangId;
|
||||||
|
private String gonyingshangName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出货时间
|
* 出货时间
|
||||||
|
|||||||
@ -1,9 +1,17 @@
|
|||||||
package org.dromara.personnel.mapper;
|
package org.dromara.personnel.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
||||||
|
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运维-物资-采购申请计划-产品信息Mapper接口
|
* 运维-物资-采购申请计划-产品信息Mapper接口
|
||||||
*
|
*
|
||||||
@ -12,4 +20,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
|||||||
*/
|
*/
|
||||||
public interface OpsCaigouPlanChanpinMapper extends BaseMapperPlus<OpsCaigouPlanChanpin, OpsCaigouPlanChanpinVo> {
|
public interface OpsCaigouPlanChanpinMapper extends BaseMapperPlus<OpsCaigouPlanChanpin, OpsCaigouPlanChanpinVo> {
|
||||||
|
|
||||||
|
Page<OpsBeipinBeijianDto> getBeiJianList(IPage<OpsBeipinBeijianDto> build, @Param("bo") OpsBeipinBeijianBo bo);
|
||||||
|
|
||||||
|
List<OpsBeipinBeijianDto> getCount(@Param("projectId") Long projectId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,8 @@ package org.dromara.personnel.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.dromara.personnel.domain.OpsBeipinBeijian;
|
import org.dromara.personnel.domain.OpsBeipinBeijian;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianCountVo;
|
||||||
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
||||||
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -67,4 +69,8 @@ public interface IOpsBeipinBeijianService extends IService<OpsBeipinBeijian> {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
TableDataInfo<OpsBeipinBeijianDto> getList(OpsBeipinBeijianBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
OpsBeipinBeijianCountVo getCount(OpsBeipinBeijianBo bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
package org.dromara.personnel.service;
|
package org.dromara.personnel.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
||||||
|
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@ -75,4 +81,8 @@ public interface IOpsCaigouPlanChanpinService extends IService<OpsCaigouPlanChan
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<OpsCaigouPlanChanpinVo> getVoByCaiGouPlanId(Long caigouId);
|
List<OpsCaigouPlanChanpinVo> getVoByCaiGouPlanId(Long caigouId);
|
||||||
|
|
||||||
|
Page<OpsBeipinBeijianDto> getBeiJianList(IPage<OpsBeipinBeijianDto> build, OpsBeipinBeijianBo bo);
|
||||||
|
|
||||||
|
List<OpsBeipinBeijianDto> getCount(OpsBeipinBeijianBo bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianCountVo;
|
||||||
|
import org.dromara.personnel.service.IOpsCaigouPlanChanpinService;
|
||||||
|
import org.dromara.personnel.service.IOpsCaigouPlanService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
||||||
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
||||||
@ -17,6 +21,7 @@ import org.dromara.personnel.domain.OpsBeipinBeijian;
|
|||||||
import org.dromara.personnel.mapper.OpsBeipinBeijianMapper;
|
import org.dromara.personnel.mapper.OpsBeipinBeijianMapper;
|
||||||
import org.dromara.personnel.service.IOpsBeipinBeijianService;
|
import org.dromara.personnel.service.IOpsBeipinBeijianService;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@ -34,6 +39,8 @@ public class OpsBeipinBeijianServiceImpl extends ServiceImpl<OpsBeipinBeijianMap
|
|||||||
|
|
||||||
private final OpsBeipinBeijianMapper baseMapper;
|
private final OpsBeipinBeijianMapper baseMapper;
|
||||||
|
|
||||||
|
private final IOpsCaigouPlanChanpinService caigouPlanChanpinService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询运维-物资-备品配件
|
* 查询运维-物资-备品配件
|
||||||
*
|
*
|
||||||
@ -136,4 +143,47 @@ public class OpsBeipinBeijianServiceImpl extends ServiceImpl<OpsBeipinBeijianMap
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<OpsBeipinBeijianDto> getList(OpsBeipinBeijianBo bo, PageQuery pageQuery) {
|
||||||
|
Page<OpsBeipinBeijianDto> result = caigouPlanChanpinService.getBeiJianList(pageQuery.build(),bo);
|
||||||
|
result.getRecords().forEach(item -> {
|
||||||
|
item.setKucunCount(item.getRuKuCount()-item.getChuKuCount());
|
||||||
|
if (item.getKucunCount() == 0){
|
||||||
|
item.setKucunStatus("2");
|
||||||
|
}
|
||||||
|
if (item.getRuKuCount() > 0 && item.getRuKuCount() / 2 > item.getKucunCount()){
|
||||||
|
item.setKucunStatus("1");
|
||||||
|
}
|
||||||
|
if (item.getRuKuCount() > 0 && item.getRuKuCount() / 2 < item.getKucunCount()){
|
||||||
|
item.setKucunStatus("0");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OpsBeipinBeijianCountVo getCount(OpsBeipinBeijianBo bo) {
|
||||||
|
List<OpsBeipinBeijianDto> records = caigouPlanChanpinService.getCount(bo);
|
||||||
|
OpsBeipinBeijianCountVo vo = new OpsBeipinBeijianCountVo();
|
||||||
|
long zonCount = 0L;
|
||||||
|
long diCount = 0L;
|
||||||
|
Map<String, Long> map = new HashMap<>();
|
||||||
|
for (OpsBeipinBeijianDto item : records) {
|
||||||
|
long kucunCount = item.getRuKuCount() - item.getChuKuCount();
|
||||||
|
zonCount += kucunCount;
|
||||||
|
if (kucunCount == 0 || (item.getRuKuCount() > 0 && item.getRuKuCount() / 2 > item.getKucunCount())){
|
||||||
|
diCount++;
|
||||||
|
}
|
||||||
|
if (!map.containsKey(item.getShebeiType())) {
|
||||||
|
map.put(item.getShebeiType(), kucunCount);
|
||||||
|
}else {
|
||||||
|
map.put(item.getShebeiType(), map.get(item.getShebeiType()) + kucunCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vo.setZonCount(zonCount);
|
||||||
|
vo.setDiCount(diCount);
|
||||||
|
vo.setTypeCount(map);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.personnel.service.impl;
|
package org.dromara.personnel.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -10,6 +11,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.personnel.domain.bo.OpsBeipinBeijianBo;
|
||||||
|
import org.dromara.personnel.domain.dto.OpsBeipinBeijianDto;
|
||||||
|
import org.dromara.personnel.domain.vo.OpsBeipinBeijianVo;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
||||||
@ -142,4 +146,14 @@ public class OpsCaigouPlanChanpinServiceImpl extends ServiceImpl<OpsCaigouPlanCh
|
|||||||
return baseMapper.selectVoList(new LambdaQueryWrapper<OpsCaigouPlanChanpin>().eq(OpsCaigouPlanChanpin::getCaigouPlanId, caigouId));
|
return baseMapper.selectVoList(new LambdaQueryWrapper<OpsCaigouPlanChanpin>().eq(OpsCaigouPlanChanpin::getCaigouPlanId, caigouId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Page<OpsBeipinBeijianDto> getBeiJianList(IPage<OpsBeipinBeijianDto> build, OpsBeipinBeijianBo bo) {
|
||||||
|
return baseMapper.getBeiJianList(build,bo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OpsBeipinBeijianDto> getCount(OpsBeipinBeijianBo bo) {
|
||||||
|
return baseMapper.getCount(bo.getProjectId());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package org.dromara.personnel.service.impl;
|
package org.dromara.personnel.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.apache.seata.spring.annotation.GlobalTransactional;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -16,16 +17,18 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
import org.dromara.personnel.domain.OpsCaigouPlanChanpin;
|
||||||
import org.dromara.personnel.domain.OpsCaigouPlanFiles;
|
import org.dromara.personnel.domain.OpsCaigouPlanFiles;
|
||||||
|
import org.dromara.personnel.domain.OpsTenderSupplierInput;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanChanpinBo;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanFilesBo;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanFilesBo;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanReq;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanReq;
|
||||||
import org.dromara.personnel.domain.enums.OpsCaigouPlanEnum;
|
import org.dromara.personnel.domain.enums.OpsCaigouPlanEnum;
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinListVo;
|
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinListVo;
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanChanpinVo;
|
|
||||||
import org.dromara.personnel.domain.vo.OpsCaigouPlanCountVo;
|
import org.dromara.personnel.domain.vo.OpsCaigouPlanCountVo;
|
||||||
import org.dromara.personnel.service.IOpsCaigouPlanChanpinService;
|
import org.dromara.personnel.service.IOpsCaigouPlanChanpinService;
|
||||||
import org.dromara.personnel.service.IOpsCaigouPlanFilesService;
|
import org.dromara.personnel.service.IOpsCaigouPlanFilesService;
|
||||||
|
import org.dromara.personnel.service.IOpsTenderSupplierInputService;
|
||||||
import org.dromara.personnel.utils.CglxdIdGenerator;
|
import org.dromara.personnel.utils.CglxdIdGenerator;
|
||||||
|
import org.dromara.resource.api.RemoteFileService;
|
||||||
import org.dromara.system.api.model.LoginUser;
|
import org.dromara.system.api.model.LoginUser;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.personnel.domain.bo.OpsCaigouPlanBo;
|
import org.dromara.personnel.domain.bo.OpsCaigouPlanBo;
|
||||||
@ -38,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 运维-物资-采购计划单Service业务层处理
|
* 运维-物资-采购计划单Service业务层处理
|
||||||
@ -55,6 +59,9 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
private final IOpsCaigouPlanFilesService caigouPlanFilesService;
|
private final IOpsCaigouPlanFilesService caigouPlanFilesService;
|
||||||
|
|
||||||
private final IOpsCaigouPlanChanpinService caigouPlanChanpinService;
|
private final IOpsCaigouPlanChanpinService caigouPlanChanpinService;
|
||||||
|
private final RemoteFileService remoteFileService;
|
||||||
|
|
||||||
|
private final IOpsTenderSupplierInputService tenderSupplierInputService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -67,6 +74,10 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
@Override
|
@Override
|
||||||
public OpsCaigouPlanVo queryById(Long id){
|
public OpsCaigouPlanVo queryById(Long id){
|
||||||
OpsCaigouPlanVo opsCaigouPlanVo = baseMapper.selectVoById(id);
|
OpsCaigouPlanVo opsCaigouPlanVo = baseMapper.selectVoById(id);
|
||||||
|
if (opsCaigouPlanVo.getGonyingshangId() != null){
|
||||||
|
OpsTenderSupplierInput supplierInput = tenderSupplierInputService.getById(opsCaigouPlanVo.getGonyingshangId());
|
||||||
|
opsCaigouPlanVo.setGonyingshangName(supplierInput.getSupplierName());
|
||||||
|
}
|
||||||
opsCaigouPlanVo.setOpsCaigouPlanChanpinVos(caigouPlanChanpinService.getVoByCaiGouPlanId(id));
|
opsCaigouPlanVo.setOpsCaigouPlanChanpinVos(caigouPlanChanpinService.getVoByCaiGouPlanId(id));
|
||||||
opsCaigouPlanVo.setOpsCaigouPlanFilesVos(caigouPlanFilesService.getVoByCaiGouPlanId(id));
|
opsCaigouPlanVo.setOpsCaigouPlanFilesVos(caigouPlanFilesService.getVoByCaiGouPlanId(id));
|
||||||
return opsCaigouPlanVo;
|
return opsCaigouPlanVo;
|
||||||
@ -116,7 +127,7 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
* @return 是否新增成功
|
* @return 是否新增成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@GlobalTransactional(rollbackFor = Exception.class)
|
||||||
public Boolean insertByBo(OpsCaigouPlanBo bo) {
|
public Boolean insertByBo(OpsCaigouPlanBo bo) {
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
OpsCaigouPlan add = MapstructUtils.convert(bo, OpsCaigouPlan.class);
|
OpsCaigouPlan add = MapstructUtils.convert(bo, OpsCaigouPlan.class);
|
||||||
@ -124,15 +135,22 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
add.setJingbanrenName(loginUser.getUsername());
|
add.setJingbanrenName(loginUser.getUsername());
|
||||||
add.setCaigouDanwei(loginUser.getDeptId());
|
add.setCaigouDanwei(loginUser.getDeptId());
|
||||||
add.setCaigouDanweiName(loginUser.getDeptName());
|
add.setCaigouDanweiName(loginUser.getDeptName());
|
||||||
add.setJihuaBianhao(CglxdIdGenerator.generateId("CGLXD"));
|
add.setJihuaBianhao(CglxdIdGenerator.generateId("CGLXD-"));
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
bo.setId(add.getId());
|
||||||
|
if (bo.getOpsCaigouPlanChanpinBos() ==null){
|
||||||
|
throw new ServiceException("产品信息不能为空!!!");
|
||||||
|
}
|
||||||
List<OpsCaigouPlanChanpinBo> opsCaigouPlanChanpinBos = bo.getOpsCaigouPlanChanpinBos();
|
List<OpsCaigouPlanChanpinBo> opsCaigouPlanChanpinBos = bo.getOpsCaigouPlanChanpinBos();
|
||||||
BigDecimal yujiJine = opsCaigouPlanChanpinBos.stream()
|
BigDecimal yujiJine = opsCaigouPlanChanpinBos.stream()
|
||||||
// 步骤1:设置 caigouPlanId(副作用,也可单独处理)
|
// 步骤1:设置 caigouPlanId(副作用,也可单独处理)
|
||||||
.peek(chanpin -> chanpin.setCaigouPlanId(add.getId()))
|
.peek(chanpin -> {
|
||||||
|
chanpin.setCaigouPlanId(add.getId());
|
||||||
|
chanpin.setProjectId(add.getProjectId());
|
||||||
|
chanpin.setChanpinBianhao(CglxdIdGenerator.generateId("CP-"));
|
||||||
|
})
|
||||||
// 步骤2:提取要累加的 totalPrice
|
// 步骤2:提取要累加的 totalPrice
|
||||||
.map(OpsCaigouPlanChanpinBo::getTotalPrice)
|
.map(OpsCaigouPlanChanpinBo::getTotalPrice)
|
||||||
// 步骤3:过滤 null(避免 NPE)
|
// 步骤3:过滤 null(避免 NPE)
|
||||||
@ -160,37 +178,100 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
* @return 是否修改成功
|
* @return 是否修改成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@GlobalTransactional(rollbackFor = Exception.class)
|
||||||
public Boolean updateByBo(OpsCaigouPlanBo bo) {
|
public Boolean updateByBo(OpsCaigouPlanBo bo) {
|
||||||
if (!OpsCaigouPlanEnum.CAOGAO.getValue().equals(bo.getStatus()) && !OpsCaigouPlanEnum.WEITONGUO.getValue().equals(bo.getStatus())) {
|
if (!OpsCaigouPlanEnum.CAOGAO.getValue().equals(bo.getStatus()) && !OpsCaigouPlanEnum.WEITONGUO.getValue().equals(bo.getStatus())) {
|
||||||
throw new ServiceException("已开始审核,不允许修改");
|
throw new ServiceException("已开始审核,不允许修改");
|
||||||
}
|
}
|
||||||
caigouPlanChanpinService.getBaseMapper().delete(new LambdaQueryWrapper<OpsCaigouPlanChanpin>().eq(OpsCaigouPlanChanpin::getCaigouPlanId, bo.getId()));
|
List<OpsCaigouPlanChanpinBo> opsCaigouPlanChanpinBos = bo.getOpsCaigouPlanChanpinBos();
|
||||||
caigouPlanFilesService.getBaseMapper().delete(new LambdaQueryWrapper<OpsCaigouPlanFiles>().eq(OpsCaigouPlanFiles::getCaigouPlanId, bo.getId()));
|
if (opsCaigouPlanChanpinBos == null) {
|
||||||
|
throw new ServiceException("产品信息不能为空!!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询该计划下产品信息列表
|
||||||
|
List<OpsCaigouPlanChanpin> opsCaigouPlanChanpins = caigouPlanChanpinService.getBaseMapper().selectList(new LambdaQueryWrapper<OpsCaigouPlanChanpin>().eq(OpsCaigouPlanChanpin::getCaigouPlanId, bo.getId()));
|
||||||
OpsCaigouPlan update = MapstructUtils.convert(bo, OpsCaigouPlan.class);
|
OpsCaigouPlan update = MapstructUtils.convert(bo, OpsCaigouPlan.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
List<OpsCaigouPlanChanpinBo> opsCaigouPlanChanpinBos = bo.getOpsCaigouPlanChanpinBos();
|
|
||||||
BigDecimal yujiJine = opsCaigouPlanChanpinBos.stream()
|
BigDecimal yujiJine = opsCaigouPlanChanpinBos.stream()
|
||||||
// 步骤1:设置 caigouPlanId(副作用,也可单独处理)
|
|
||||||
.peek(chanpin -> chanpin.setCaigouPlanId(update.getId()))
|
|
||||||
// 步骤2:提取要累加的 totalPrice
|
|
||||||
.map(OpsCaigouPlanChanpinBo::getTotalPrice)
|
|
||||||
// 步骤3:过滤 null(避免 NPE)
|
// 步骤3:过滤 null(避免 NPE)
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
|
// 步骤2:提取要累加的 totalPrice
|
||||||
|
.map(OpsCaigouPlanChanpinBo::getTotalPrice)
|
||||||
// 步骤4:累加所有 BigDecimal(初始值为 BigDecimal.ZERO)
|
// 步骤4:累加所有 BigDecimal(初始值为 BigDecimal.ZERO)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
update.setYujiJine(yujiJine);
|
update.setYujiJine(yujiJine);
|
||||||
List<OpsCaigouPlanChanpin> planChanpinList = MapstructUtils.convert(opsCaigouPlanChanpinBos, OpsCaigouPlanChanpin.class);
|
if (opsCaigouPlanChanpins != null) {
|
||||||
caigouPlanChanpinService.saveBatch(planChanpinList);
|
//获取已存在产品id
|
||||||
|
Set<Long> chanpinOldIds = opsCaigouPlanChanpins.stream().filter(Objects::nonNull).map(OpsCaigouPlanChanpin::getId).collect(Collectors.toSet());
|
||||||
|
//获取新的产品id列表
|
||||||
|
Set<Long> chanpinNowIds = opsCaigouPlanChanpinBos.stream().filter(Objects::nonNull).map(OpsCaigouPlanChanpinBo::getId).collect(Collectors.toSet());
|
||||||
|
//获取需要删除的产品id
|
||||||
|
List<Long> detChanpinIds = new ArrayList<>();
|
||||||
|
chanpinOldIds.forEach(detChanpinId -> {
|
||||||
|
if (!chanpinNowIds.contains(detChanpinId)) {
|
||||||
|
detChanpinIds.add(detChanpinId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//判断需要删除产品id是否为空,不为空则删除
|
||||||
|
if (!detChanpinIds.isEmpty()) {
|
||||||
|
caigouPlanChanpinService.getBaseMapper().deleteByIds(detChanpinIds);
|
||||||
|
}
|
||||||
|
//过滤掉不存在的产品,对原有产品进行修改
|
||||||
|
List<OpsCaigouPlanChanpinBo> list =opsCaigouPlanChanpinBos.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.filter(chanpin -> chanpinOldIds.contains(chanpin.getId()))
|
||||||
|
.toList();
|
||||||
|
List<OpsCaigouPlanChanpin> planChanpinList = MapstructUtils.convert(list, OpsCaigouPlanChanpin.class);
|
||||||
|
caigouPlanChanpinService.updateBatchById(planChanpinList);
|
||||||
|
//过滤掉存在产品,并新增产品
|
||||||
|
List<OpsCaigouPlanChanpinBo> chanpinBoList = opsCaigouPlanChanpinBos.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.filter(opsCaigouPlanChanpinBo -> opsCaigouPlanChanpinBo.getId() == null).toList();
|
||||||
|
for (OpsCaigouPlanChanpinBo chanpin : chanpinBoList) {
|
||||||
|
if (chanpin != null) {
|
||||||
|
chanpin.setCaigouPlanId(update.getId());
|
||||||
|
chanpin.setProjectId(update.getProjectId());
|
||||||
|
chanpin.setChanpinBianhao(CglxdIdGenerator.generateId("CP-"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<OpsCaigouPlanChanpin> planChanpinNowList = MapstructUtils.convert(chanpinBoList, OpsCaigouPlanChanpin.class);
|
||||||
|
caigouPlanChanpinService.saveBatch(planChanpinNowList);
|
||||||
|
}else {
|
||||||
|
for (OpsCaigouPlanChanpinBo chanpin : opsCaigouPlanChanpinBos) {
|
||||||
|
if (chanpin != null) {
|
||||||
|
chanpin.setCaigouPlanId(update.getId());
|
||||||
|
chanpin.setChanpinBianhao(CglxdIdGenerator.generateId("CP-"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<OpsCaigouPlanChanpin> planChanpinList = MapstructUtils.convert(opsCaigouPlanChanpinBos, OpsCaigouPlanChanpin.class);
|
||||||
|
caigouPlanChanpinService.saveBatch(planChanpinList);
|
||||||
|
}
|
||||||
|
// caigouPlanChanpinService.getBaseMapper().delete(new LambdaQueryWrapper<OpsCaigouPlanChanpin>().eq(OpsCaigouPlanChanpin::getCaigouPlanId, bo.getId()));
|
||||||
|
//查询该计划文件id
|
||||||
|
|
||||||
|
caigouPlanFilesService.getBaseMapper().delete(new LambdaQueryWrapper<OpsCaigouPlanFiles>().eq(OpsCaigouPlanFiles::getCaigouPlanId, bo.getId()));
|
||||||
List<OpsCaigouPlanFilesBo> opsCaigouPlanFilesBos = bo.getOpsCaigouPlanFilesBos();
|
List<OpsCaigouPlanFilesBo> opsCaigouPlanFilesBos = bo.getOpsCaigouPlanFilesBos();
|
||||||
opsCaigouPlanFilesBos.forEach(fileBo -> {
|
if (opsCaigouPlanFilesBos != null) {
|
||||||
fileBo.setCaigouPlanId(update.getId());
|
//保存文件
|
||||||
});
|
opsCaigouPlanFilesBos.forEach(fileBo -> {
|
||||||
List<OpsCaigouPlanFiles> planFilesList = MapstructUtils.convert(opsCaigouPlanFilesBos, OpsCaigouPlanFiles.class);
|
fileBo.setCaigouPlanId(update.getId());
|
||||||
caigouPlanFilesService.saveBatch(planFilesList);
|
});
|
||||||
|
List<OpsCaigouPlanFiles> planFilesList = MapstructUtils.convert(opsCaigouPlanFilesBos, OpsCaigouPlanFiles.class);
|
||||||
|
caigouPlanFilesService.saveBatch(planFilesList);
|
||||||
|
}
|
||||||
return baseMapper.updateById(update) > 0;
|
return baseMapper.updateById(update) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Long> detPlanFileIds(List<Long> chanpinId) {
|
||||||
|
List<OpsCaigouPlanFiles> opsCaigouPlanFiles = caigouPlanFilesService.getBaseMapper()
|
||||||
|
.selectList(new LambdaQueryWrapper<OpsCaigouPlanFiles>()
|
||||||
|
.in(OpsCaigouPlanFiles::getCaigouPlanId, chanpinId));
|
||||||
|
List<Long> ossIds = new ArrayList<>();
|
||||||
|
opsCaigouPlanFiles.forEach(fileBo -> {ossIds.add(fileBo.getId());});
|
||||||
|
|
||||||
|
return ossIds;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
@ -213,14 +294,28 @@ public class OpsCaigouPlanServiceImpl extends ServiceImpl<OpsCaigouPlanMapper,Op
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@GlobalTransactional(rollbackFor = Exception.class)
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
if(isValid){
|
if(isValid){
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
baseMapper.selectVoByIds(ids).forEach(vo -> {
|
List<OpsCaigouPlanVo> opsCaigouPlanVos = baseMapper.selectVoByIds(ids);
|
||||||
|
opsCaigouPlanVos.forEach(vo -> {
|
||||||
if (!OpsCaigouPlanEnum.CAOGAO.getValue().equals(vo.getStatus())) {
|
if (!OpsCaigouPlanEnum.CAOGAO.getValue().equals(vo.getStatus())) {
|
||||||
throw new ServiceException("已开始审核,不允许修改");
|
throw new ServiceException("已开始审核,不允许修改");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
caigouPlanChanpinService
|
||||||
|
.getBaseMapper()
|
||||||
|
.delete(new LambdaQueryWrapper<OpsCaigouPlanChanpin>()
|
||||||
|
.in(OpsCaigouPlanChanpin::getCaigouPlanId,ids));
|
||||||
|
List<Long> ossIds = detPlanFileIds((List<Long>) ids);
|
||||||
|
if (!ossIds.isEmpty()){
|
||||||
|
remoteFileService.deleteFileByIds(ossIds);
|
||||||
|
}
|
||||||
|
caigouPlanFilesService
|
||||||
|
.getBaseMapper()
|
||||||
|
.delete(new LambdaQueryWrapper<OpsCaigouPlanFiles>()
|
||||||
|
.in(OpsCaigouPlanFiles::getCaigouPlanId,ids));
|
||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,4 +4,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.dromara.personnel.mapper.OpsCaigouPlanChanpinMapper">
|
<mapper namespace="org.dromara.personnel.mapper.OpsCaigouPlanChanpinMapper">
|
||||||
|
|
||||||
|
<select id="getBeiJianList" resultType="org.dromara.personnel.domain.dto.OpsBeipinBeijianDto">
|
||||||
|
SELECT ocpc.id AS id,
|
||||||
|
ocpc.chanpin_bianhao AS beijianNumber,
|
||||||
|
ocpc.shebei_type AS shebeiType,
|
||||||
|
ocpc.chanpin_type AS guigexinghao,
|
||||||
|
ocpc.chanpin_name AS beijianName,
|
||||||
|
SUM(CASE WHEN oc.danjv_type = '1' THEN oc.zon_number ELSE 0 END) AS chuKuCount,
|
||||||
|
SUM(CASE WHEN oc.danjv_type = '2' THEN oc.zon_number ELSE 0 END) AS ruKuCount
|
||||||
|
FROM ops_caigou_plan_chanpin ocpc
|
||||||
|
LEFT JOIN ops_churukudan oc ON ocpc.id = oc.chanpin_id
|
||||||
|
WHERE
|
||||||
|
-- oc.shenhe_status = 'finish' AND
|
||||||
|
ocpc.project_id = #{bo.projectId}
|
||||||
|
GROUP BY ocpc.id
|
||||||
|
ORDER BY ocpc.create_time
|
||||||
|
</select>
|
||||||
|
<select id="getCount" resultType="org.dromara.personnel.domain.dto.OpsBeipinBeijianDto">
|
||||||
|
SELECT ocpc.id AS id,
|
||||||
|
ocpc.chanpin_bianhao AS beijianNumber,
|
||||||
|
ocpc.shebei_type AS shebeiType,
|
||||||
|
ocpc.chanpin_type AS guigexinghao,
|
||||||
|
ocpc.chanpin_name AS beijianName,
|
||||||
|
SUM(CASE WHEN oc.danjv_type = '1' THEN oc.zon_number ELSE 0 END) AS chuKuCount,
|
||||||
|
SUM(CASE WHEN oc.danjv_type = '2' THEN oc.zon_number ELSE 0 END) AS ruKuCount
|
||||||
|
FROM ops_caigou_plan_chanpin ocpc
|
||||||
|
LEFT JOIN ops_churukudan oc ON ocpc.id = oc.chanpin_id
|
||||||
|
WHERE
|
||||||
|
-- oc.shenhe_status = 'finish' AND
|
||||||
|
ocpc.project_id = #{projectId}
|
||||||
|
GROUP BY ocpc.id
|
||||||
|
ORDER BY ocpc.create_time
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</select>
|
</select>
|
||||||
<select id="getChuRuKuZonCount" resultType="java.lang.Long">
|
<select id="getChuRuKuZonCount" resultType="java.lang.Long">
|
||||||
SELECT
|
SELECT
|
||||||
SUM(zon_number)
|
IFNULL(SUM(zon_number),0)
|
||||||
FROM
|
FROM
|
||||||
ops_churukudan
|
ops_churukudan
|
||||||
WHERE
|
WHERE
|
||||||
|
|||||||
Reference in New Issue
Block a user