eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java
@@ -6,6 +6,8 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -45,6 +47,12 @@ return eimsSpareService.queryPageList(bo, pageQuery); } @SaCheckPermission("eims:spare:list") @GetMapping("/listInout") public TableDataInfo<EimsSpareInoutdtVo> listInout(EimsSpareBo bo, PageQuery pageQuery) { return eimsSpareService.querySpareInoutList(bo, pageQuery); } /** * 导åºå¤ä»¶å°è´¦å表 */ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java
@@ -45,6 +45,7 @@ return eimsSpareInoutService.queryPageList(bo, pageQuery); } /** * 导åºå¤ä»¶åºå ¥åºå表 */ eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutdtController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,105 @@ package org.dromara.eims.controller; import java.util.List; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.web.core.BaseController; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.bo.EimsSpareInoutdtBo; import org.dromara.eims.service.IEimsSpareInoutdtService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** * å¤ä»¶åºå ¥åºæç» * * @author zhuguifei * @date 2025-04-11 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/eims/spareInoutdt") public class EimsSpareInoutdtController extends BaseController { private final IEimsSpareInoutdtService eimsSpareInoutdtService; /** * æ¥è¯¢å¤ä»¶åºå ¥åºæç»å表 */ @SaCheckPermission("eims:spareInoutdt:list") @GetMapping("/list") public TableDataInfo<EimsSpareInoutdtVo> list(EimsSpareInoutdtBo bo, PageQuery pageQuery) { return eimsSpareInoutdtService.queryPageList(bo, pageQuery); } /** * 导åºå¤ä»¶åºå ¥åºæç»å表 */ @SaCheckPermission("eims:spareInoutdt:export") @Log(title = "å¤ä»¶åºå ¥åºæç»", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(EimsSpareInoutdtBo bo, HttpServletResponse response) { List<EimsSpareInoutdtVo> list = eimsSpareInoutdtService.queryList(bo); ExcelUtil.exportExcel(list, "å¤ä»¶åºå ¥åºæç»", EimsSpareInoutdtVo.class, response); } /** * è·åå¤ä»¶åºå ¥åºæç»è¯¦ç»ä¿¡æ¯ * * @param id ä¸»é® */ @SaCheckPermission("eims:spareInoutdt:query") @GetMapping("/{id}") public R<EimsSpareInoutdtVo> getInfo(@NotNull(message = "主é®ä¸è½ä¸ºç©º") @PathVariable Long id) { return R.ok(eimsSpareInoutdtService.queryById(id)); } /** * æ°å¢å¤ä»¶åºå ¥åºæç» */ @SaCheckPermission("eims:spareInoutdt:add") @Log(title = "å¤ä»¶åºå ¥åºæç»", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsSpareInoutdtBo bo) { return toAjax(eimsSpareInoutdtService.insertByBo(bo)); } /** * ä¿®æ¹å¤ä»¶åºå ¥åºæç» */ @SaCheckPermission("eims:spareInoutdt:edit") @Log(title = "å¤ä»¶åºå ¥åºæç»", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsSpareInoutdtBo bo) { return toAjax(eimsSpareInoutdtService.updateByBo(bo)); } /** * å é¤å¤ä»¶åºå ¥åºæç» * * @param ids 主é®ä¸² */ @SaCheckPermission("eims:spareInoutdt:remove") @Log(title = "å¤ä»¶åºå ¥åºæç»", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R<Void> remove(@NotEmpty(message = "主é®ä¸è½ä¸ºç©º") @PathVariable Long[] ids) { return toAjax(eimsSpareInoutdtService.deleteWithValidByIds(List.of(ids), true)); } } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsSpareInoutdt.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,72 @@ package org.dromara.eims.domain; import org.dromara.common.mybatis.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serial; import java.math.BigDecimal; /** * å¤ä»¶åºå ¥åºæç»å¯¹è±¡ eims_spare_inoutdt * * @author zhuguifei * @date 2025-04-11 */ @Data @EqualsAndHashCode(callSuper = true) @TableName("eims_spare_inoutdt") public class EimsSpareInoutdt extends BaseEntity { @Serial private static final long serialVersionUID = 1L; /** * */ @TableId(value = "id") private Long id; /** * åºåºåæå ¥åºåid */ private Long inoutId; /** * å¤ä»¶id */ private Long spareId; /** * ä¹ååºå */ private Long beforeStock; /** * å®é åºå */ private Long actualStock; /** * æ°é */ private Long quantity; /** * åä»· */ private BigDecimal unitPrice; /** * éé¢ */ private BigDecimal amount; /** * 夿³¨ */ private String remark; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
@@ -114,4 +114,11 @@ private String remark; /** * åºåºå ¥åºæ°é */ private Long quantity; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java
@@ -9,7 +9,10 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.eims.domain.vo.EimsSpareVo; /** * å¤ä»¶åºå ¥åºä¸å¡å¯¹è±¡ eims_spare_inout @@ -69,5 +72,9 @@ */ private String remark; //åºå ¥åºéæ©çå¤ä»¶æç» private List<EimsSpareBo> spareList; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,77 @@ package org.dromara.eims.domain.bo; import org.dromara.eims.domain.EimsSpareInoutdt; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; /** * å¤ä»¶åºå ¥åºæç»ä¸å¡å¯¹è±¡ eims_spare_inoutdt * * @author zhuguifei * @date 2025-04-11 */ @Data @EqualsAndHashCode(callSuper = true) @AutoMapper(target = EimsSpareInoutdt.class, reverseConvertGenerate = false) public class EimsSpareInoutdtBo extends BaseEntity { /** * */ @NotNull(message = "ä¸è½ä¸ºç©º", groups = { EditGroup.class }) private Long id; /** * åºåºåæå ¥åºåid */ @NotNull(message = "åºåºåæå ¥åºåidä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long inoutId; /** * å¤ä»¶id */ @NotNull(message = "å¤ä»¶idä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long spareId; /** * ä¹ååºå */ @NotNull(message = "ä¹ååºåä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long beforeStock; /** * å®é åºå */ @NotNull(message = "å®é åºåä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long actualStock; /** * æ°é */ @NotNull(message = "æ°éä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long quantity; /** * åä»· */ @NotNull(message = "åä»·ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long unitPrice; /** * éé¢ */ @NotNull(message = "éé¢ä¸è½ä¸ºç©º", groups = { AddGroup.class, EditGroup.class }) private Long amount; /** * 夿³¨ */ private String remark; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java
@@ -11,11 +11,12 @@ import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import org.dromara.eims.domain.bo.EimsSpareBo; import java.io.Serial; import java.io.Serializable; import java.util.Date; import java.util.List; /** @@ -87,5 +88,6 @@ @ExcelProperty(value = "夿³¨") private String remark; //åºå ¥åºéæ©çå¤ä»¶æç» private List<EimsSpareVo> spareList; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package org.dromara.eims.domain.vo; import org.dromara.eims.domain.EimsSpareInoutdt; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; /** * å¤ä»¶åºå ¥åºæç»è§å¾å¯¹è±¡ eims_spare_inoutdt * * @author zhuguifei * @date 2025-04-11 */ @Data @ExcelIgnoreUnannotated @AutoMapper(target = EimsSpareInoutdt.class) public class EimsSpareInoutdtVo implements Serializable { @Serial private static final long serialVersionUID = 1L; /** * */ @ExcelProperty(value = "") private Long id; /** * åºåºåæå ¥åºåid */ @ExcelProperty(value = "åºåºåæå ¥åºåid") private Long inoutId; /** * å¤ä»¶id */ @ExcelProperty(value = "å¤ä»¶id") private Long spareId; /** * ä¹ååºå */ @ExcelProperty(value = "ä¹ååºå") private Long beforeStock; /** * å®é åºå */ @ExcelProperty(value = "å®é åºå") private Long actualStock; /** * æ°é */ @ExcelProperty(value = "æ°é") private Long quantity; /** * åä»· */ @ExcelProperty(value = "åä»·") private BigDecimal unitPrice; /** * éé¢ */ @ExcelProperty(value = "éé¢") private BigDecimal amount; /** * 夿³¨ */ @ExcelProperty(value = "夿³¨") private String remark; //å¤ä»¶ private String spareName; private String spareCode; private String modelNo; //åºå ¥åºå private String orderCode; private Date orderTime; private String type; private String unit; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java
@@ -142,6 +142,9 @@ */ @ExcelProperty(value = "夿³¨") private String remark; /** * åºåºå ¥åºæ°é */ private Long quantity; } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java
@@ -1,8 +1,15 @@ package org.dromara.eims.mapper; 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 org.apache.ibatis.annotations.Param; import org.dromara.eims.domain.EimsSpareInout; import org.dromara.eims.domain.EimsSpareInoutdt; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; /** * å¤ä»¶åºå ¥åºMapperæ¥å£ @@ -12,4 +19,5 @@ */ public interface EimsSpareInoutMapper extends BaseMapperPlus<EimsSpareInout, EimsSpareInoutVo> { } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutdtMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package org.dromara.eims.mapper; 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 org.apache.ibatis.annotations.Param; import org.dromara.eims.domain.EimsMaintSt; import org.dromara.eims.domain.EimsSpareInoutdt; import org.dromara.eims.domain.vo.EimsMaintStVo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** * å¤ä»¶åºå ¥åºæç»Mapperæ¥å£ * * @author zhuguifei * @date 2025-04-11 */ public interface EimsSpareInoutdtMapper extends BaseMapperPlus<EimsSpareInoutdt, EimsSpareInoutdtVo> { Page<EimsSpareInoutdtVo> selectSpareInoutdtList(@Param("page") Page<EimsSpareInoutdtVo> page, @Param(Constants.WRAPPER) Wrapper<EimsSpareInoutdt> queryWrapper); } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java
@@ -1,6 +1,13 @@ package org.dromara.eims.mapper; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.dromara.eims.domain.EimsSpare; import org.dromara.eims.domain.EimsSpareInout; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.vo.EimsSpareVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; @@ -11,5 +18,5 @@ * @date 2025-03-20 */ public interface EimsSpareMapper extends BaseMapperPlus<EimsSpare, EimsSpareVo> { Page<EimsSpareInoutdtVo> selectSpareInoutList(@Param("page") Page<EimsSpareInoutdtVo> page, @Param(Constants.WRAPPER) Wrapper<EimsSpare> queryWrapper); } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java
@@ -65,4 +65,8 @@ * @return æ¯å¦å 餿å */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutdtService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ package org.dromara.eims.service; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.bo.EimsSpareInoutdtBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; /** * å¤ä»¶åºå ¥åºæç»Serviceæ¥å£ * * @author zhuguifei * @date 2025-04-11 */ public interface IEimsSpareInoutdtService { /** * æ¥è¯¢å¤ä»¶åºå ¥åºæç» * * @param id ä¸»é® * @return å¤ä»¶åºå ¥åºæç» */ EimsSpareInoutdtVo queryById(Long id); /** * å页æ¥è¯¢å¤ä»¶åºå ¥åºæç»å表 * * @param bo æ¥è¯¢æ¡ä»¶ * @param pageQuery å页忰 * @return å¤ä»¶åºå ¥åºæç»å页å表 */ TableDataInfo<EimsSpareInoutdtVo> queryPageList(EimsSpareInoutdtBo bo, PageQuery pageQuery); /** * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶åºå ¥åºæç»å表 * * @param bo æ¥è¯¢æ¡ä»¶ * @return å¤ä»¶åºå ¥åºæç»å表 */ List<EimsSpareInoutdtVo> queryList(EimsSpareInoutdtBo bo); /** * æ°å¢å¤ä»¶åºå ¥åºæç» * * @param bo å¤ä»¶åºå ¥åºæç» * @return æ¯å¦æ°å¢æå */ Boolean insertByBo(EimsSpareInoutdtBo bo); /** * ä¿®æ¹å¤ä»¶åºå ¥åºæç» * * @param bo å¤ä»¶åºå ¥åºæç» * @return æ¯å¦ä¿®æ¹æå */ Boolean updateByBo(EimsSpareInoutdtBo bo); /** * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶åºå ¥åºæç»ä¿¡æ¯ * * @param ids å¾ å é¤ç主é®éå * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª * @return æ¯å¦å 餿å */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java
@@ -1,5 +1,8 @@ package org.dromara.eims.service; import org.dromara.eims.domain.bo.EimsSpareInoutBo; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.vo.EimsSpareVo; import org.dromara.eims.domain.bo.EimsSpareBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +68,13 @@ * @return æ¯å¦å 餿å */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); /** * æ ¹æ®å¤ä»¶æ¥è¯¢åºå ¥åºæç» * @param bo * @param pageQuery * @return */ TableDataInfo<EimsSpareInoutdtVo> querySpareInoutList(EimsSpareBo bo, PageQuery pageQuery); } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
@@ -1,5 +1,7 @@ package org.dromara.eims.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.constant.DictConstants; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -8,16 +10,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.eims.domain.EimsSpare; import org.dromara.eims.domain.EimsSpareInoutdt; import org.dromara.eims.domain.bo.EimsSpareBo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.vo.EimsSpareVo; import org.dromara.eims.mapper.EimsSpareInoutdtMapper; import org.dromara.eims.mapper.EimsSpareMapper; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsSpareInoutBo; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.eims.domain.EimsSpareInout; import org.dromara.eims.mapper.EimsSpareInoutMapper; import org.dromara.eims.service.IEimsSpareInoutService; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; import java.util.Collection; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * å¤ä»¶åºå ¥åºServiceä¸å¡å±å¤ç @@ -30,6 +40,8 @@ public class EimsSpareInoutServiceImpl implements IEimsSpareInoutService { private final EimsSpareInoutMapper baseMapper; private final EimsSpareInoutdtMapper inoutdtMapper; private final EimsSpareMapper spareMapper; /** * æ¥è¯¢å¤ä»¶åºå ¥åº @@ -39,7 +51,33 @@ */ @Override public EimsSpareInoutVo queryById(Long id){ return baseMapper.selectVoById(id); EimsSpareInoutVo eimsSpareInoutVo = baseMapper.selectVoById(id); QueryWrapper<EimsSpareInoutdt> queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(EimsSpareInoutdt::getInoutId, id); List<EimsSpareInoutdtVo> dtVos = inoutdtMapper.selectVoList(queryWrapper); if(!dtVos.isEmpty()){ Map<Long, Long> map = dtVos.stream() .collect(Collectors.toMap( EimsSpareInoutdtVo::getSpareId, EimsSpareInoutdtVo::getQuantity )); List<Long> spareIdList = dtVos.stream() .map(EimsSpareInoutdtVo::getSpareId) // è·å spareId åæ®µ .toList(); List<EimsSpareVo> eimsSpareListVos = spareMapper.selectVoBatchIds(spareIdList); for (EimsSpareVo spareVo : eimsSpareListVos) { // å设 quantity ç弿¯ä¸ä¸ªåºå®å¼ï¼ä¾å¦ 10ï¼ spareVo.setQuantity(map.get(spareVo.getId())); } eimsSpareInoutVo.setSpareList(eimsSpareListVos); } return eimsSpareInoutVo; } /** @@ -55,6 +93,7 @@ Page<EimsSpareInoutVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } /** * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶åºå ¥åºå表 @@ -81,19 +120,73 @@ return lqw; } /** * æ°å¢å¤ä»¶åºå ¥åº * * @param bo å¤ä»¶åºå ¥åº * @return æ¯å¦æ°å¢æå */ @Transactional(rollbackFor = Exception.class) @Override public Boolean insertByBo(EimsSpareInoutBo bo) { public synchronized Boolean insertByBo(EimsSpareInoutBo bo) { EimsSpareInout add = MapstructUtils.convert(bo, EimsSpareInout.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } //å ¥åºï¼åºå åºåº-åºå ï¼é»è®¤å ¥åºï¼ int OperationType; //åºåº if(bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK)){ OperationType = -1; } else { OperationType = 1; } List<EimsSpareBo> spareList = Optional.ofNullable(bo.getSpareList()).orElse(new ArrayList<>()); // æå ¥åºåºæç» List<EimsSpareInoutdt> dtList = spareList.stream() .map(eimsSpareBo -> { EimsSpareInoutdt dt = new EimsSpareInoutdt(); dt.setInoutId(add.getId()); dt.setSpareId(eimsSpareBo.getId()); dt.setBeforeStock(eimsSpareBo.getActualStock()); // 注æå ¥åºåºåº dt.setActualStock(eimsSpareBo.getActualStock() + (eimsSpareBo.getQuantity() * OperationType)); dt.setQuantity(eimsSpareBo.getQuantity()); // 设置åä»·åéé¢ Optional.ofNullable(eimsSpareBo.getReferPrice()).ifPresent(referPrice -> { dt.setUnitPrice(referPrice); dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity()))); }); return dt; }) .toList(); // æ¹éæå ¥æ°æ® if (!dtList.isEmpty()) { inoutdtMapper.insertBatch(dtList); } // æ´æ°å¤ä»¶çåºå List<EimsSpare> updateSpareList = spareList.stream().map(spareBo -> { EimsSpare spare = new EimsSpare(); spare.setId(spareBo.getId()); spare.setActualStock(spareBo.getActualStock() + (spareBo.getQuantity() * OperationType)); // 设置åä»·åéé¢ Optional.ofNullable(spareBo.getReferPrice()).ifPresent(referPrice -> { spare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(spare.getActualStock()))); }); return spare; }).toList(); if (!updateSpareList.isEmpty()) { spareMapper.updateBatchById(updateSpareList); } return flag; } @@ -132,4 +225,6 @@ } return baseMapper.deleteByIds(ids) > 0; } } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutdtServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,138 @@ package org.dromara.eims.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.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 lombok.RequiredArgsConstructor; import org.dromara.eims.domain.vo.EimsMaintStVo; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsSpareInoutdtBo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.dromara.eims.domain.EimsSpareInoutdt; import org.dromara.eims.mapper.EimsSpareInoutdtMapper; import org.dromara.eims.service.IEimsSpareInoutdtService; import java.util.List; import java.util.Map; import java.util.Collection; /** * å¤ä»¶åºå ¥åºæç»Serviceä¸å¡å±å¤ç * * @author zhuguifei * @date 2025-04-11 */ @RequiredArgsConstructor @Service public class EimsSpareInoutdtServiceImpl implements IEimsSpareInoutdtService { private final EimsSpareInoutdtMapper baseMapper; /** * æ¥è¯¢å¤ä»¶åºå ¥åºæç» * * @param id ä¸»é® * @return å¤ä»¶åºå ¥åºæç» */ @Override public EimsSpareInoutdtVo queryById(Long id){ return baseMapper.selectVoById(id); } /** * å页æ¥è¯¢å¤ä»¶åºå ¥åºæç»å表 * * @param bo æ¥è¯¢æ¡ä»¶ * @param pageQuery å页忰 * @return å¤ä»¶åºå ¥åºæç»å页å表 */ @Override public TableDataInfo<EimsSpareInoutdtVo> queryPageList(EimsSpareInoutdtBo bo, PageQuery pageQuery) { Page<EimsSpareInoutdtVo> result = baseMapper.selectSpareInoutdtList(pageQuery.build(), buildWrapper(bo)); return TableDataInfo.build(result); } /** * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶åºå ¥åºæç»å表 * * @param bo æ¥è¯¢æ¡ä»¶ * @return å¤ä»¶åºå ¥åºæç»å表 */ @Override public List<EimsSpareInoutdtVo> queryList(EimsSpareInoutdtBo bo) { LambdaQueryWrapper<EimsSpareInoutdt> lqw = buildQueryWrapper(bo); return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper<EimsSpareInoutdt> buildQueryWrapper(EimsSpareInoutdtBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<EimsSpareInoutdt> lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getInoutId() != null, EimsSpareInoutdt::getInoutId, bo.getInoutId()); lqw.eq(bo.getSpareId() != null, EimsSpareInoutdt::getSpareId, bo.getSpareId()); return lqw; } private QueryWrapper<EimsSpareInoutdt> buildWrapper(EimsSpareInoutdtBo bo) { Map<String, Object> params = bo.getParams(); QueryWrapper<EimsSpareInoutdt> qw = Wrappers.query(); qw.eq("io.id",bo.getInoutId()); return qw; } /** * æ°å¢å¤ä»¶åºå ¥åºæç» * * @param bo å¤ä»¶åºå ¥åºæç» * @return æ¯å¦æ°å¢æå */ @Override public Boolean insertByBo(EimsSpareInoutdtBo bo) { EimsSpareInoutdt add = MapstructUtils.convert(bo, EimsSpareInoutdt.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } return flag; } /** * ä¿®æ¹å¤ä»¶åºå ¥åºæç» * * @param bo å¤ä»¶åºå ¥åºæç» * @return æ¯å¦ä¿®æ¹æå */ @Override public Boolean updateByBo(EimsSpareInoutdtBo bo) { EimsSpareInoutdt update = MapstructUtils.convert(bo, EimsSpareInoutdt.class); validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } /** * ä¿ååçæ°æ®æ ¡éª */ private void validEntityBeforeSave(EimsSpareInoutdt entity){ //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ } /** * æ ¡éªå¹¶æ¹éå é¤å¤ä»¶åºå ¥åºæç»ä¿¡æ¯ * * @param ids å¾ å é¤ç主é®éå * @param isValid æ¯å¦è¿è¡æææ§æ ¡éª * @return æ¯å¦å 餿å */ @Override public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { if(isValid){ //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª } return baseMapper.deleteByIds(ids) > 0; } } eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java
@@ -1,5 +1,6 @@ package org.dromara.eims.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -8,6 +9,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.eims.domain.EimsSpareInout; import org.dromara.eims.domain.bo.EimsSpareInoutBo; import org.dromara.eims.domain.vo.EimsSpareInoutVo; import org.dromara.eims.domain.vo.EimsSpareInoutdtVo; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsSpareBo; import org.dromara.eims.domain.vo.EimsSpareVo; @@ -56,6 +61,13 @@ return TableDataInfo.build(result); } @Override public TableDataInfo<EimsSpareInoutdtVo> querySpareInoutList(EimsSpareBo bo, PageQuery pageQuery) { Page<EimsSpareInoutdtVo> result = baseMapper.selectSpareInoutList(pageQuery.build(), buildWrapper(bo)); return TableDataInfo.build(result); } /** * æ¥è¯¢ç¬¦åæ¡ä»¶çå¤ä»¶å°è´¦å表 * @@ -79,6 +91,13 @@ lqw.like(StringUtils.isNotBlank(bo.getSupplier()), EimsSpare::getSupplier, bo.getSupplier()); lqw.eq(StringUtils.isNotBlank(bo.getUnit()), EimsSpare::getUnit, bo.getUnit()); return lqw; } private QueryWrapper<EimsSpare> buildWrapper(EimsSpareBo bo) { Map<String, Object> params = bo.getParams(); QueryWrapper<EimsSpare> qw = Wrappers.query(); qw.eq( "sp.id", bo.getId()); return qw; } /** @@ -132,4 +151,6 @@ } return baseMapper.deleteByIds(ids) > 0; } } eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareInoutdtMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.eims.mapper.EimsSpareInoutdtMapper"> <resultMap type="org.dromara.eims.domain.vo.EimsSpareInoutdtVo" id="SpareInoutdtVoResult"> </resultMap> <select id="selectSpareInoutdtList" resultMap="SpareInoutdtVoResult"> SELECT dt.*, sp.name spareName, sp.code spareCode, sp.model_no modelNo, sp.unit unit, io.order_code orderCode FROM eims_spare_inoutdt dt LEFT JOIN eims_spare_inout io on dt.inout_id = io.id LEFT JOIN eims_spare sp on dt.spare_id = sp.id ${ew.getCustomSqlSegment} </select> </mapper> eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml
@@ -3,5 +3,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.dromara.eims.mapper.EimsSpareMapper"> <resultMap type="org.dromara.eims.domain.vo.EimsSpareInoutdtVo" id="SpareInoutdtVoResult"> </resultMap> <select id="selectSpareInoutList" resultMap="SpareInoutdtVoResult"> SELECT io.*, dt.quantity, dt.actual_stock, dt.unit_price, dt.amount FROM eims_spare_inout io JOIN eims_spare_inoutdt dt on io.id = dt.inout_id JOIN eims_spare sp on dt.spare_id = sp.id ${ew.getCustomSqlSegment} </select> </mapper>