src/main/java/com/ruoyi/approve/pojo/ApproveNode.java
@@ -1,18 +1,16 @@ package com.ruoyi.approve.pojo; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 审批节点表 @@ -21,8 +19,9 @@ @Data @TableName("approve_node") @ApiModel public class ApproveNode{ public class ApproveNode implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("附件id") @TableField(exist = false) @@ -125,7 +124,24 @@ */ private String approveNodeRemark; private static final long serialVersionUID = 1L; /** * 入库id */ @TableField(exist = false) private Long recordId; /** * 是否入库审核通过 */ @ApiModelProperty(value = "是否入库审核通过") @TableField(exist = false) private boolean inventoryReview; /** * 入库类型(合格/不合格) */ @ApiModelProperty(value = "入库类型") @TableField(exist = false) private String storageType; } src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -1,12 +1,9 @@ package com.ruoyi.approve.pojo; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.CommonFile; @@ -14,6 +11,11 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * 审批流程表 @@ -127,7 +129,7 @@ private Long tenantId; /** * 审批类型 1-公出管理 2-请假管理 3-出差管理 4-报销管理 5-采购审批 6-报价审批 7-发货审批 8-危险作业审批 * 审批类型 1-公出管理 2-请假管理 3-出差管理 4-报销管理 5-采购审批 6-报价审批 7-发货审批 8-危险作业审批 9-入库审批 */ private Integer approveType; @@ -170,5 +172,20 @@ private BigDecimal maintenancePrice; private static final long serialVersionUID = 1L; /** * 是否入库审核通过 */ @ApiModelProperty(value = "是否入库审核通过") private boolean inventoryReview; /** * 入库类型(合格/不合格) */ @ApiModelProperty(value = "入库类型") private String storageType; /** * 入库id */ private Long recordId; } src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -13,7 +13,6 @@ import com.ruoyi.approve.service.IApproveNodeService; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.mapper.DeviceRepairMapper; import com.ruoyi.device.pojo.DeviceRepair; @@ -25,12 +24,19 @@ import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.service.impl.PurchaseLedgerServiceImpl; import com.ruoyi.sales.mapper.*; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.SalesQuotationMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockInventoryService; import com.ruoyi.stock.service.StockUninventoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -81,6 +87,13 @@ @Autowired private PurchaseLedgerServiceImpl purchaseLedgerServiceImpl; @Autowired private StockUninventoryService stockUninventoryService; @Autowired private StockInRecordService stockInRecordService; @Autowired private StockInventoryService stockInventoryService; public ApproveProcess getApproveById(String id) { @@ -274,6 +287,27 @@ approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", Arrays.asList(Long.valueOf(id)), "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId()); } else if (approveProcess.getApproveType() == 9) { StockInRecord stockInRecord = stockInRecordService.getById(approveNode.getRecordId()); if (approveNode.isInventoryReview()) { if ("不合格入库".equals(approveNode.getStorageType())) { stockUninventoryService.updateOrCreateStockUninventory(stockInRecord); } else if ("合格入库".equals(approveNode.getStorageType())) { stockInventoryService.updateOrCreateStockInventory(stockInRecord); } stockInRecord.setApproveStatus(2); stockInRecordService.updateById(stockInRecord); sysNoticeService.simpleNoticeByUser( approveProcessType(approveProcess.getApproveType()), approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", Arrays.asList(Long.valueOf(id)), "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId() ); }else { stockInRecord.setApproveStatus(3); stockInRecordService.updateById(stockInRecord); } }else { sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()), approveProcess.getApproveId() + "流程编号的审批需要您审核!!!!!", @@ -325,6 +359,8 @@ return "发货审批"; case 8: return "危险作业审批"; case 9: return "入库审批"; } return null; } src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -16,8 +16,6 @@ import com.ruoyi.approve.vo.ApproveGetAndUpdateVo; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.other.service.impl.TempFileServiceImpl; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysNotice; @@ -32,25 +30,20 @@ import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.service.impl.CommonFileServiceImpl; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -125,6 +118,10 @@ .collect(Collectors.toList()) .get(0) .getNickName()); approveProcess.setStorageType(approveProcessVO.getStorageType()); approveProcess.setInventoryReview(approveProcessVO.isInventoryReview()); approveProcess.setInventoryReview(approveProcessVO.isInventoryReview()); approveProcess.setRecordId(approveProcessVO.getRecordId()); // 设置状态为重新提交 if (approveProcessVO.getId() != null) { ApproveProcess approveProcess1 = approveProcessMapper.selectById(approveProcessVO.getId()); @@ -441,6 +438,8 @@ return "发货审批"; case 8: return "危险作业审批"; case 9: return "入库审批"; } return null; } src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -2,12 +2,10 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -75,4 +73,21 @@ * 报修金额 */ private BigDecimal maintenancePrice; /** * 是否入库审核通过 */ @ApiModelProperty(value = "是否入库审核通过") private boolean inventoryReview; /** * 入库类型(合格/不合格) */ @ApiModelProperty(value = "入库类型") private String storageType; /** * 入库id */ @ApiModelProperty(value = "入库id") private Long recordId; } src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper; import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.pojo.StockInRecord; @@ -13,15 +12,11 @@ import com.ruoyi.stock.service.StockInventoryService; import com.ruoyi.stock.service.StockOutRecordService; import com.ruoyi.stock.service.StockUninventoryService; import com.ruoyi.stock.service.impl.StockInRecordServiceImpl; import com.ruoyi.stock.service.impl.StockOutRecordServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Collections; import java.util.HashMap; import java.util.Map; @Component @RequiredArgsConstructor src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -9,7 +9,6 @@ import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.procurementrecord.service.ProcurementRecordService; src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -5,6 +5,7 @@ import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.service.StockInRecordService; import io.swagger.annotations.Api; @@ -32,6 +33,25 @@ } @GetMapping("/getById") @ApiOperation(value = "根据ID查询入库记录") public AjaxResult getById(@RequestParam("id") Long id) { if (id == null || id <= 0) { return AjaxResult.error("参数id不能为空"); } StockInRecordDto stockInRecordDto = stockInRecordService.selectByRecord(id); if (stockInRecordDto == null) { return AjaxResult.error("记录不存在"); } return AjaxResult.success(stockInRecordDto); } @PostMapping("/updateStockInRecord") @ApiOperation("入库记录审核") public R updateStockInRecord(@RequestBody StockInRecordDto stockInRecordDto) { return R.ok(stockInRecordService.updateStockInRecord(stockInRecordDto)); } @DeleteMapping("") @Log(title = "入库管理-删除入库", businessType = BusinessType.DELETE) src/main/java/com/ruoyi/stock/mapper/StockInRecordMapper.java
@@ -14,4 +14,6 @@ IPage<StockInRecordDto> listPage(Page page, @Param("params") StockInRecordDto stockInRecordDto); List<StockInRecordExportData> listStockInRecordExportData(@Param("params") StockInRecordDto stockInRecordDto); StockInRecordDto selectByRecord(@Param("id")Long id); } src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -62,4 +63,16 @@ @ApiModelProperty(value = "修改用户") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty("被订单锁定数量") private BigDecimal lockedQuantity; @ApiModelProperty("预警数量") private BigDecimal warnNum; /** * 审批状态:0待审核,1审核中,2审核完成 3审核未通过 4已重新提交 */ @ApiModelProperty(value = "审批状态:0待审核,1审核中,2审核完成 3审核未通过 4已重新提交") @Excel(name = "审批状态", readConverterExp = "0=待审核,1=审核中,2=审核完成,3=审核未通过,4=已重新提交") private Integer approveStatus; } src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -19,4 +19,8 @@ int batchDelete(List<Long> ids); void exportStockInRecord(HttpServletResponse response, StockInRecordDto stockInRecordDto); StockInRecordDto selectByRecord(Long id); int updateStockInRecord(StockInRecordDto stockInRecordDto); } src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -3,9 +3,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockInventory; import org.springframework.web.multipart.MultipartFile; @@ -38,4 +40,8 @@ Boolean frozenStock(StockInventoryDto stockInventoryDto); Boolean thawStock(StockInventoryDto stockInventoryDto); void updateOrCreateStockInventory(StockInRecord stockInRecord); void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto) throws Exception; } src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockUninventory; import javax.servlet.http.HttpServletResponse; @@ -30,4 +31,6 @@ Boolean frozenStock(StockInventoryDto stockInventoryDto); Boolean thawStock(StockInventoryDto stockInventoryDto); void updateOrCreateStockUninventory(StockInRecord stockInRecord); } src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -4,13 +4,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.EnumUtil; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockUninventoryDto; @@ -22,7 +24,8 @@ import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.pojo.StockUninventory; import com.ruoyi.stock.service.StockInRecordService; import lombok.AllArgsConstructor; import com.ruoyi.stock.service.StockInventoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,12 +33,16 @@ import java.util.List; @Service @AllArgsConstructor public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService { @Autowired private StockInRecordMapper stockInRecordMapper; @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockUninventoryMapper stockUninventoryMapper; @Autowired private StockInventoryService stockInventoryService; @Override public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) { @@ -110,4 +117,21 @@ ExcelUtil<StockInRecordExportData> util = new ExcelUtil<>(StockInRecordExportData.class); util.exportExcel(response,list, "入库记录信息"); } @Override public StockInRecordDto selectByRecord(Long id) { return stockInRecordMapper.selectByRecord(id); } @Override public int updateStockInRecord(StockInRecordDto stockInRecordDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); try { stockInventoryService.addApproveByPurchase(loginUser, stockInRecordDto); } catch (Exception e) { e.printStackTrace(); } stockInRecordDto.setApproveStatus(2); return stockInRecordMapper.updateById(stockInRecordDto); } } src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -1,13 +1,17 @@ package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.R; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedgerProduct; @@ -16,18 +20,21 @@ import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.execl.StockInventoryExportData; import com.ruoyi.stock.mapper.StockInventoryMapper; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockInventoryService; import com.ruoyi.stock.service.StockOutRecordService; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; /** @@ -39,19 +46,25 @@ * @since 2026-01-21 04:16:36 */ @Service @AllArgsConstructor public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService { @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockInRecordService stockInRecordService; @Autowired private StockOutRecordService stockOutRecordService; @Autowired private SalesLedgerProductMapper salesLedgerProductMapper; @Autowired private ApproveProcessServiceImpl approveProcessService; @Override public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) { return stockInventoryMapper.pagestockInventory(page, stockInventoryDto); } //入库调用 //入库调用-添加入库记录 @Override @Transactional(rollbackFor = Exception.class) public Boolean addstockInventory(StockInventoryDto stockInventoryDto) { @@ -61,26 +74,78 @@ stockInRecordDto.setRecordType(stockInventoryDto.getRecordType()); stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity()); stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId()); stockInRecordDto.setRemark(stockInventoryDto.getRemark()); stockInRecordDto.setWarnNum(stockInventoryDto.getWarnNum()); stockInRecordDto.setLockedQuantity(stockInventoryDto.getLockedQuantity()); stockInRecordDto.setType("0"); stockInRecordService.add(stockInRecordDto); //再进行新增库存数量库存 //先查询库存表中的产品是否存在,不存在新增,存在更新 StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldStockInventory)) { StockInventory newStockInventory = new StockInventory(); newStockInventory.setProductModelId(stockInventoryDto.getProductModelId()); newStockInventory.setQualitity(stockInventoryDto.getQualitity()); newStockInventory.setVersion(1); newStockInventory.setRemark(stockInventoryDto.getRemark()); newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); newStockInventory.setWarnNum(stockInventoryDto.getWarnNum()); stockInventoryMapper.insert(newStockInventory); }else { stockInventoryMapper.updateAddStockInventory(stockInventoryDto); int add = stockInRecordService.add(stockInRecordDto); LoginUser loginUser = SecurityUtils.getLoginUser(); if (add > 0) { try { addApproveByPurchase(loginUser, stockInRecordDto); } catch (Exception e) { e.printStackTrace(); } } return true; } public void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto) throws Exception { ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(9); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(stockInRecordDto.getInboundBatches()); approveProcessVO.setApproveUserIds(String.valueOf(1)); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessVO.setInventoryReview(false); approveProcessVO.setStorageType("合格入库"); approveProcessVO.setRecordId(stockInRecordDto.getId()); approveProcessService.addApprove(approveProcessVO); } /** * 实际入库 * * @param stockInRecord */ public void updateOrCreateStockInventory(StockInRecord stockInRecord) { // 先查询库存表中的产品是否存在 StockInventory oldStockInventory = stockInventoryMapper.selectOne( new QueryWrapper<StockInventory>().lambda() .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()) ); if (ObjectUtils.isEmpty(oldStockInventory)) { // 不存在则新增 StockInventory newStockInventory = new StockInventory(); newStockInventory.setProductModelId(stockInRecord.getProductModelId()); newStockInventory.setQualitity(stockInRecord.getStockInNum()); newStockInventory.setVersion(1); newStockInventory.setRemark(stockInRecord.getRemark()); newStockInventory.setLockedQuantity(stockInRecord.getLockedQuantity()); newStockInventory.setWarnNum(stockInRecord.getWarnNum()); stockInventoryMapper.insert(newStockInventory); } else { // 存在则更新 LambdaUpdateWrapper<StockInventory> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()) .setSql(stockInRecord.getStockInNum() != null, "qualitity = qualitity + " + stockInRecord.getStockInNum()) .setSql(true, "version = version + 1") .set(stockInRecord.getRemark() != null && !stockInRecord.getRemark().isEmpty(), StockInventory::getRemark, stockInRecord.getRemark()) .set(stockInRecord.getWarnNum() != null, StockInventory::getWarnNum, stockInRecord.getWarnNum()) .setSql(stockInRecord.getLockedQuantity() != null, "locked_quantity = locked_quantity + " + stockInRecord.getLockedQuantity()) .set(StockInventory::getUpdateTime, new Date()); stockInventoryMapper.update(null, updateWrapper); } } //出库调用 @Override @Transactional(rollbackFor = Exception.class) src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -1,17 +1,23 @@ package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl; import com.ruoyi.approve.vo.ApproveProcessVO; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.dto.StockUninventoryDto; import com.ruoyi.stock.execl.StockUnInventoryExportData; import com.ruoyi.stock.mapper.StockUninventoryMapper; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockUninventory; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockOutRecordService; @@ -21,6 +27,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.util.Date; import java.util.List; /** @@ -38,6 +46,7 @@ private StockUninventoryMapper stockUninventoryMapper; private StockOutRecordService stockOutRecordService; private StockInRecordService stockInRecordService; private ApproveProcessServiceImpl approveProcessService; @Override public IPage<StockUninventoryDto> pageStockUninventory(Page page, StockUninventoryDto stockUninventoryDto) { @@ -53,22 +62,69 @@ stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType()); stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity()); stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId()); stockInRecordDto.setRemark(stockUninventoryDto.getRemark()); stockInRecordDto.setType("1"); stockInRecordService.add(stockInRecordDto); //再进行新增库存数量库存 //先查询库存表中的产品是否存在,不存在新增,存在更新 StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())); int add = stockInRecordService.add(stockInRecordDto); LoginUser loginUser = SecurityUtils.getLoginUser(); if (add > 0){ try { addApproveByPurchase(loginUser,stockInRecordDto); }catch (Exception e){ e.printStackTrace(); } } return 1; } public void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto) throws Exception { ApproveProcessVO approveProcessVO = new ApproveProcessVO(); approveProcessVO.setApproveType(9); approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId()); approveProcessVO.setApproveReason(stockInRecordDto.getInboundBatches()); approveProcessVO.setApproveUserIds(String.valueOf(1)); approveProcessVO.setApproveUser(loginUser.getUserId()); approveProcessVO.setApproveTime(LocalDate.now().toString()); approveProcessVO.setInventoryReview(false); approveProcessVO.setStorageType("不合格入库"); approveProcessVO.setRecordId(stockInRecordDto.getId()); approveProcessService.addApprove(approveProcessVO); } /** * 更新或创建非良品库存信息 * @param stockInRecord 非良品库存DTO对象 */ public void updateOrCreateStockUninventory(StockInRecord stockInRecord) { // 先查询库存表中的产品是否存在 StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne( new QueryWrapper<StockUninventory>().lambda() .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId()) ); if (ObjectUtils.isEmpty(oldStockUnInventory)) { // 不存在则新增 StockUninventory newStockUnInventory = new StockUninventory(); newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId()); newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity()); newStockUnInventory.setProductModelId(stockInRecord.getProductModelId()); newStockUnInventory.setQualitity(stockInRecord.getStockInNum()); newStockUnInventory.setVersion(1); newStockUnInventory.setRemark(stockUninventoryDto.getRemark()); newStockUnInventory.setRemark(stockInRecord.getRemark()); stockUninventoryMapper.insert(newStockUnInventory); }else { stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto); LambdaUpdateWrapper<StockUninventory> updateWrapper = new LambdaUpdateWrapper<>(); if (stockInRecord.getStockInNum() != null) { updateWrapper.setSql("qualitity = qualitity + " + stockInRecord.getStockInNum()); } return 1; updateWrapper.setSql("version = version + 1"); String remark = stockInRecord.getRemark(); if (remark != null && !remark.isEmpty()) { updateWrapper.set(StockUninventory::getRemark, remark); } updateWrapper.set(StockUninventory::getUpdateTime, new Date()); updateWrapper.eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId()); stockUninventoryMapper.update(null, updateWrapper); } } @Override src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -56,4 +56,18 @@ </where> order by sir.id desc </select> <select id="selectByRecord" resultType="com.ruoyi.stock.dto.StockInRecordDto"> SELECT sir.*, p.product_name as product_name, pm.model, pm.unit, u.nick_name as createBy FROM stock_in_record as sir LEFT JOIN product_model as pm on sir.product_model_id = pm.id LEFT JOIN product as p on pm.product_id = p.id LEFT JOIN sys_user as u on sir.create_user = u.user_id WHERE sir.id= #{id} order by sir.id desc </select> </mapper>