| src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/stock/StockInRecordMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/stock/StockInventoryMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -9,13 +9,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.procurementrecord.utils.StockUtils; import com.ruoyi.production.dto.ProductStructureDto; import com.ruoyi.production.dto.ProductionProductMainDto; @@ -25,12 +22,13 @@ import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.quality.mapper.*; import com.ruoyi.quality.pojo.*; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityInspectService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.ruoyi.production.mapper.ProductionProductMainMapper; import java.math.BigDecimal; import java.time.LocalDate; @@ -170,45 +168,8 @@ if (productQty.compareTo(BigDecimal.ZERO) > 0) { /*新增质检*/ List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); if (productProcessRouteItem.getIsQuality()) { // int inspectType = 1; // String process = productProcess.getName();//工序 // if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { // //最后一道工序生成出厂检 // inspectType = 2; // process = null; // } // Product product = productMapper.selectById(productModel.getProductId()); // QualityInspect qualityInspect = new QualityInspect(); // qualityInspect.setProductId(product.getId()); // qualityInspect.setProductName(product.getProductName()); // qualityInspect.setModel(productModel.getModel()); // qualityInspect.setUnit(productModel.getUnit()); // qualityInspect.setQuantity(productQty); // qualityInspect.setProcess(process); // qualityInspect.setInspectState(0); // qualityInspect.setInspectType(inspectType); // qualityInspect.setProductMainId(productionProductMain.getId()); // qualityInspect.setProductModelId(productModel.getId()); // qualityInspectMapper.insert(qualityInspect); // List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process); // if (qualityTestStandard.size() > 0) { // qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId()); // qualityInspectMapper.updateById(qualityInspect); // qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery() // .eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))//默认获取最新的 // .forEach(qualityTestStandardParam -> { // QualityInspectParam param = new QualityInspectParam(); // BeanUtils.copyProperties(qualityTestStandardParam, param); // param.setId(null); // param.setInspectId(qualityInspect.getId()); // qualityInspectParamMapper.insert(param); // }); // } }else { //直接入库 //不管是否质检都直接入库 stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId()); } /*更新工单和生产订单*/ ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId()); productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(productQty)); src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -30,4 +30,7 @@ //现净重 private BigDecimal currentWeight; //产品类型 private String productType; } src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -1,5 +1,6 @@ package com.ruoyi.stock.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.stock.pojo.StockInventory; import io.swagger.annotations.ApiModelProperty; @@ -68,4 +69,8 @@ @ApiModelProperty("磅单文件路径") private String weighbridgeDocPath; @ApiModelProperty("产品类型") @TableField(exist = false) private Integer productType; } src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -59,32 +59,46 @@ @Override @Transactional(rollbackFor = Exception.class) public Boolean addstockInventory(StockInventoryDto stockInventoryDto) { //新增入库记录再添加库存 // 1. 创建入库记录 StockInRecordDto stockInRecordDto = new StockInRecordDto(); stockInRecordDto.setRecordId(stockInventoryDto.getRecordId()); stockInRecordDto.setRecordType(stockInventoryDto.getRecordType()); stockInRecordDto.setWeighingOperator(stockInventoryDto.getWeighingOperator()); stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId()); stockInRecordDto.setProductId(stockInventoryDto.getProductId()); stockInRecordDto.setRemark(stockInventoryDto.getRemark()); stockInRecordDto.setType("0"); // 根据产品类型设置不同的重量字段 if (stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0) { stockInRecordDto.setStockInNum(stockInventoryDto.getNetWeight()); stockInRecordDto.setWeighingDate(stockInventoryDto.getWeighingDate()); stockInRecordDto.setNetWeight(stockInventoryDto.getNetWeight()); stockInRecordDto.setGrossWeight(stockInventoryDto.getGrossWeight()); stockInRecordDto.setTareWeight(stockInventoryDto.getTareWeight()); stockInRecordDto.setLicensePlateNo(stockInventoryDto.getLicensePlateNo()); stockInRecordDto.setWeighingOperator(stockInventoryDto.getWeighingOperator()); stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId()); stockInRecordDto.setProductId(stockInventoryDto.getProductId()); stockInRecordDto.setRemark(stockInventoryDto.getRemark()); stockInRecordDto.setType("0"); //生成磅单 String absoluteDocPath = weighbridgeDocGenerator.generateWeighbridgeDoc(stockInRecordDto); stockInRecordDto.setWeighbridgeDocPath(absoluteDocPath); } else { stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity()); stockInRecordDto.setNetWeight(stockInventoryDto.getQualitity()); } // 保存入库记录 stockInRecordService.add(stockInRecordDto); //再进行新增库存数量库存 //先查询库存表中的产品是否存在,不存在新增,存在更新 StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())); // 2. 更新库存 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.getNetWeight()); newStockInventory.setQualitity(stockInventoryDto.getProductType() == 0 ? stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity()); newStockInventory.setVersion(1); newStockInventory.setRemark(stockInventoryDto.getRemark()); newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); @@ -92,7 +106,9 @@ newStockInventory.setProductId(stockInventoryDto.getProductId()); stockInventoryMapper.insert(newStockInventory); } else { stockInventoryDto.setQualitity(stockInventoryDto.getNetWeight()); // 更新库存 stockInventoryDto.setQualitity(stockInventoryDto.getProductType() != null && stockInventoryDto.getProductType() == 0 ? stockInventoryDto.getNetWeight() : stockInventoryDto.getQualitity()); stockInventoryMapper.updateAddStockInventory(stockInventoryDto); } return true; src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -4,31 +4,33 @@ <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto"> SELECT p1.product_name AS product_type, sir.*, p.product_name as product_name, p.product_name AS product_name, pm.model, pm.unit, sir.weighbridge_doc_path, 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 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 INNER JOIN product p1 ON p1.id = p.parent_id AND p1.product_name != '半成品' LEFT JOIN sys_user AS u ON sir.create_user = u.user_id <where> <if test="params.timeStr != null and params.timeStr != ''"> and sir.create_time like concat('%',#{params.timeStr},'%') AND sir.create_time LIKE CONCAT('%', #{params.timeStr}, '%') </if> <if test="params.productName != null and params.productName != ''"> and p.product_name like concat('%',#{params.productName},'%') AND p.product_name LIKE CONCAT('%', #{params.productName}, '%') </if> <if test="params.type != null and params.type != ''"> and sir.type = #{params.type} AND sir.type = #{params.type} </if> <if test="params.recordType != null and params.recordType != ''"> and sir.record_type = #{params.recordType} AND sir.record_type = #{params.recordType} </if> </where> order by sir.id desc ORDER BY sir.id DESC </select> <select id="listStockInRecordExportData" resultType="com.ruoyi.stock.execl.StockInRecordExportData"> SELECT src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -57,53 +57,45 @@ </update> <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto"> select SELECT si.id, -- 当前净重 = 入库净重 - 出库净重 (COALESCE(sir.total_net_weight,0) - COALESCE(sor.total_net_weight,0)) as net_weight, (COALESCE(sir.total_net_weight, 0) - COALESCE(sor.total_net_weight, 0)) AS net_weight, si.qualitity, COALESCE(si.locked_quantity, 0) as locked_quantity, COALESCE(si.locked_quantity, 0) AS locked_quantity, si.product_model_id, si.create_time, si.update_time, COALESCE(si.warn_num, 0) as warn_num, COALESCE(si.warn_num, 0) AS warn_num, si.version, (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity, (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity, pm.model, si.remark, pm.unit, p.product_name, p1.product_name as parent_name, p1.id as parent_id, si.product_id as productId from stock_inventory si left join product_model pm on si.product_model_id = pm.id left join product p on pm.product_id = p.id left join product p1 on p.parent_id = p1.id -- 入库净重 left join ( select product_model_id, sum(net_weight) as total_net_weight from stock_in_record group by product_model_id ) sir on si.product_model_id = sir.product_model_id -- 出库净重 left join ( select product_model_id, sum(net_weight) as total_net_weight from stock_out_record group by product_model_id ) sor on si.product_model_id = sor.product_model_id p1.product_name AS parent_name, p1.id AS parent_id, si.product_id AS productId FROM stock_inventory si INNER JOIN product_model pm ON si.product_model_id = pm.id INNER JOIN product p ON pm.product_id = p.id INNER JOIN product p1 ON p.parent_id = p1.id AND p1.product_name != '半成品' LEFT JOIN ( SELECT product_model_id, SUM(net_weight) AS total_net_weight FROM stock_in_record GROUP BY product_model_id ) sir ON si.product_model_id = sir.product_model_id LEFT JOIN ( SELECT product_model_id, SUM(net_weight) AS total_net_weight FROM stock_out_record GROUP BY product_model_id ) sor ON si.product_model_id = sor.product_model_id <where> 1=1 <if test="ew.parentId != null and ew.parentId !=''"> and p.parent_id = #{ew.parentId} AND p.parent_id = #{ew.parentId} </if> <if test="ew.productName != null and ew.productName !=''"> and p.product_name like concat('%',#{ew.productName},'%') AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%') </if> </where> </select>